CC: [email protected] CC: [email protected] CC: [email protected] TO: Vincent Knecht <[email protected]> CC: Mark Brown <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 626b2dda7651a7c766108db4cdc0825db05b980d commit: 53778b8292b5492ec3ecf1efb84163eac2a6e422 ASoC: Add AK4375 support date: 5 weeks ago :::::: branch date: 15 hours ago :::::: commit date: 5 weeks ago config: riscv-randconfig-c006-20220126 (https://download.01.org/0day-ci/archive/20220128/[email protected]/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 2a1b7aa016c0f4b5598806205bdfbab1ea2d92c4) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=53778b8292b5492ec3ecf1efb84163eac2a6e422 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 53778b8292b5492ec3ecf1efb84163eac2a6e422 # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/soc/sh/rcar/src.c:117:29: note: RSND_MOD_SRC is < RSND_MOD_MAX struct rsnd_mod *src_mod = rsnd_io_to_mod_src(io); ^ sound/soc/sh/rcar/rsnd.h:521:32: note: expanded from macro 'rsnd_io_to_mod_src' #define rsnd_io_to_mod_src(io) rsnd_io_to_mod((io), RSND_MOD_SRC) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/soc/sh/rcar/rsnd.h:517:32: note: expanded from macro 'rsnd_io_to_mod' #define rsnd_io_to_mod(io, i) ((i) < RSND_MOD_MAX ? (io)->mod[(i)] : NULL) ^~~ sound/soc/sh/rcar/src.c:117:29: note: '?' condition is true struct rsnd_mod *src_mod = rsnd_io_to_mod_src(io); ^ sound/soc/sh/rcar/rsnd.h:521:32: note: expanded from macro 'rsnd_io_to_mod_src' #define rsnd_io_to_mod_src(io) rsnd_io_to_mod((io), RSND_MOD_SRC) ^ sound/soc/sh/rcar/rsnd.h:517:32: note: expanded from macro 'rsnd_io_to_mod' #define rsnd_io_to_mod(io, i) ((i) < RSND_MOD_MAX ? (io)->mod[(i)] : NULL) ^ sound/soc/sh/rcar/src.c:118:36: note: Field 'substream' is non-null struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); ^ sound/soc/sh/rcar/rsnd.h:529:39: note: expanded from macro 'rsnd_io_to_runtime' #define rsnd_io_to_runtime(io) ((io)->substream ? \ ^ sound/soc/sh/rcar/src.c:118:36: note: '?' condition is true struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io); ^ sound/soc/sh/rcar/rsnd.h:529:33: note: expanded from macro 'rsnd_io_to_runtime' #define rsnd_io_to_runtime(io) ((io)->substream ? \ ^ sound/soc/sh/rcar/src.c:130:6: note: Assuming 'is_play' is equal to 'is_in' if (is_play == is_in) ^~~~~~~~~~~~~~~~ sound/soc/sh/rcar/src.c:130:2: note: Taking true branch if (is_play == is_in) ^ sound/soc/sh/rcar/src.c:131:3: note: Returning zero return runtime->rate; ^~~~~~~~~~~~~~~~~~~~ sound/soc/sh/rcar/src.c:222:9: note: Returning from 'rsnd_src_get_rate' fout = rsnd_src_get_out_rate(priv, io); ^ sound/soc/sh/rcar/rsnd.h:818:41: note: expanded from macro 'rsnd_src_get_out_rate' #define rsnd_src_get_out_rate(priv, io) rsnd_src_get_rate(priv, io, 0) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/soc/sh/rcar/src.c:222:2: note: The value 0 is assigned to 'fout' fout = rsnd_src_get_out_rate(priv, io); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/soc/sh/rcar/src.c:227:6: note: 'fin' is equal to 'fout' if (fin == fout) ^~~ sound/soc/sh/rcar/src.c:227:2: note: Taking true branch if (fin == fout) ^ sound/soc/sh/rcar/src.c:234:6: note: 'ratio' is <= 600 if (ratio > 600) { ^~~~~ sound/soc/sh/rcar/src.c:234:2: note: Taking false branch if (ratio > 600) { ^ sound/soc/sh/rcar/src.c:251:6: note: Assuming 'use_src' is not equal to 0 if (use_src) { ^~~~~~~ sound/soc/sh/rcar/src.c:251:2: note: Taking true branch if (use_src) { ^ sound/soc/sh/rcar/src.c:256:3: note: '__base' initialized to 0 do_div(n, fout); ^ include/asm-generic/div64.h:220:2: note: expanded from macro 'do_div' uint32_t __base = (base); \ ^~~~~~~~~~~~~~~ sound/soc/sh/rcar/src.c:256:3: note: Left side of '&&' is false do_div(n, fout); ^ include/asm-generic/div64.h:223:35: note: expanded from macro 'do_div' if (__builtin_constant_p(__base) && \ ^ sound/soc/sh/rcar/src.c:256:3: note: Left side of '&&' is false do_div(n, fout); ^ include/asm-generic/div64.h:227:42: note: expanded from macro 'do_div' } else if (__builtin_constant_p(__base) && \ ^ sound/soc/sh/rcar/src.c:256:3: note: Taking true branch do_div(n, fout); ^ include/asm-generic/div64.h:234:9: note: expanded from macro 'do_div' } else if (likely(((n) >> 32) == 0)) { \ ^ sound/soc/sh/rcar/src.c:256:3: note: Division by zero do_div(n, fout); ^ include/asm-generic/div64.h:235:25: note: expanded from macro 'do_div' __rem = (uint32_t)(n) % __base; \ ~~~~~~~~~~~~~~^~~~~~~~ Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 8 warnings generated. >> sound/soc/codecs/ak4375.c:343:3: warning: Value stored to 'mclk' is never >> read [clang-analyzer-deadcode.DeadStores] mclk = 128 * ak4375->rate; ^ ~~~~~~~~~~~~~~~~~~ sound/soc/codecs/ak4375.c:343:3: note: Value stored to 'mclk' is never read mclk = 128 * ak4375->rate; ^ ~~~~~~~~~~~~~~~~~~ Suppressed 7 warnings (6 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. sound/soc/codecs/ak4613.c:402:2: warning: Value stored to 'fmt_ctrl' is never read [clang-analyzer-deadcode.DeadStores] fmt_ctrl = NO_FMT; ^ sound/soc/codecs/ak4613.c:402:2: note: Value stored to 'fmt_ctrl' is never read Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 10 warnings generated. sound/soc/codecs/arizona.c:1378:3: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores] name = "SYSCLK"; ^ ~~~~~~~~ sound/soc/codecs/arizona.c:1378:3: note: Value stored to 'name' is never read name = "SYSCLK"; ^ ~~~~~~~~ sound/soc/codecs/arizona.c:1384:3: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores] name = "ASYNCCLK"; ^ ~~~~~~~~~~ sound/soc/codecs/arizona.c:1384:3: note: Value stored to 'name' is never read name = "ASYNCCLK"; ^ ~~~~~~~~~~ sound/soc/codecs/arizona.c:2333:2: warning: 4th function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] regmap_update_bits_async(arizona->regmap, base + 3, ^ sound/soc/codecs/arizona.c:2584:6: note: Assuming 'source' is not equal to field 'sync_src' if (fll->sync_src == source && ^~~~~~~~~~~~~~~~~~~~~~~ sound/soc/codecs/arizona.c:2584:30: note: Left side of '&&' is false if (fll->sync_src == source && ^ sound/soc/codecs/arizona.c:2588:6: note: Assuming 'Fout' is not equal to 0 if (Fout) { ^~~~ sound/soc/codecs/arizona.c:2588:2: note: Taking true branch if (Fout) { ^ sound/soc/codecs/arizona.c:2589:7: note: Assuming field 'ref_src' is < 0 if (fll->ref_src >= 0) { ^~~~~~~~~~~~~~~~~ sound/soc/codecs/arizona.c:2589:3: note: Taking false branch if (fll->ref_src >= 0) { ^ sound/soc/codecs/arizona.c:2596:7: note: 'ret' is equal to 0 if (ret != 0) ^~~ sound/soc/codecs/arizona.c:2596:3: note: Taking false branch if (ret != 0) ^ sound/soc/codecs/arizona.c:2604:6: note: 'Fout' is not equal to 0 if (Fout) ^~~~ sound/soc/codecs/arizona.c:2604:2: note: Taking true branch if (Fout) ^ sound/soc/codecs/arizona.c:2605:9: note: Calling 'arizona_enable_fll' ret = arizona_enable_fll(fll); ^~~~~~~~~~~~~~~~~~~~~~~ sound/soc/codecs/arizona.c:2426:6: note: 'already_enabled' is >= 0 if (already_enabled < 0) ^~~~~~~~~~~~~~~ sound/soc/codecs/arizona.c:2426:2: note: Taking false branch if (already_enabled < 0) ^ sound/soc/codecs/arizona.c:2428:6: note: 'sync_enabled' is >= 0 if (sync_enabled < 0) ^~~~~~~~~~~~ sound/soc/codecs/arizona.c:2428:2: note: Taking false branch if (sync_enabled < 0) ^ sound/soc/codecs/arizona.c:2431:6: note: Assuming 'already_enabled' is 0 if (already_enabled) { ^~~~~~~~~~~~~~~ sound/soc/codecs/arizona.c:2431:2: note: Taking false branch vim +/mclk +343 sound/soc/codecs/ak4375.c 53778b8292b549 Vincent Knecht 2021-12-20 280 53778b8292b549 Vincent Knecht 2021-12-20 281 static int ak4375_dai_set_pll(struct snd_soc_dai *dai, int pll_id, int source, 53778b8292b549 Vincent Knecht 2021-12-20 282 unsigned int freq_in, unsigned int freq_out) 53778b8292b549 Vincent Knecht 2021-12-20 283 { 53778b8292b549 Vincent Knecht 2021-12-20 284 struct snd_soc_component *component = dai->component; 53778b8292b549 Vincent Knecht 2021-12-20 285 struct ak4375_priv *ak4375 = snd_soc_component_get_drvdata(component); 53778b8292b549 Vincent Knecht 2021-12-20 286 unsigned int mclk, plm, mdiv, div; 53778b8292b549 Vincent Knecht 2021-12-20 287 u8 cms, fs, cm; 53778b8292b549 Vincent Knecht 2021-12-20 288 53778b8292b549 Vincent Knecht 2021-12-20 289 cms = snd_soc_component_read(component, AK4375_05_CLOCK_MODE_SELECT); 53778b8292b549 Vincent Knecht 2021-12-20 290 fs = cms & ~FS_MASK; 53778b8292b549 Vincent Knecht 2021-12-20 291 cm = cms & ~CM_MASK; 53778b8292b549 Vincent Knecht 2021-12-20 292 53778b8292b549 Vincent Knecht 2021-12-20 293 switch (ak4375->rate) { 53778b8292b549 Vincent Knecht 2021-12-20 294 case 8000: 53778b8292b549 Vincent Knecht 2021-12-20 295 fs |= FS_8KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 296 break; 53778b8292b549 Vincent Knecht 2021-12-20 297 case 11025: 53778b8292b549 Vincent Knecht 2021-12-20 298 fs |= FS_11_025KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 299 break; 53778b8292b549 Vincent Knecht 2021-12-20 300 case 16000: 53778b8292b549 Vincent Knecht 2021-12-20 301 fs |= FS_16KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 302 break; 53778b8292b549 Vincent Knecht 2021-12-20 303 case 22050: 53778b8292b549 Vincent Knecht 2021-12-20 304 fs |= FS_22_05KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 305 break; 53778b8292b549 Vincent Knecht 2021-12-20 306 case 32000: 53778b8292b549 Vincent Knecht 2021-12-20 307 fs |= FS_32KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 308 break; 53778b8292b549 Vincent Knecht 2021-12-20 309 case 44100: 53778b8292b549 Vincent Knecht 2021-12-20 310 fs |= FS_44_1KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 311 break; 53778b8292b549 Vincent Knecht 2021-12-20 312 case 48000: 53778b8292b549 Vincent Knecht 2021-12-20 313 fs |= FS_48KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 314 break; 53778b8292b549 Vincent Knecht 2021-12-20 315 case 88200: 53778b8292b549 Vincent Knecht 2021-12-20 316 fs |= FS_88_2KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 317 break; 53778b8292b549 Vincent Knecht 2021-12-20 318 case 96000: 53778b8292b549 Vincent Knecht 2021-12-20 319 fs |= FS_96KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 320 break; 53778b8292b549 Vincent Knecht 2021-12-20 321 case 176400: 53778b8292b549 Vincent Knecht 2021-12-20 322 fs |= FS_176_4KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 323 break; 53778b8292b549 Vincent Knecht 2021-12-20 324 case 192000: 53778b8292b549 Vincent Knecht 2021-12-20 325 fs |= FS_192KHZ; 53778b8292b549 Vincent Knecht 2021-12-20 326 break; 53778b8292b549 Vincent Knecht 2021-12-20 327 default: 53778b8292b549 Vincent Knecht 2021-12-20 328 return -EINVAL; 53778b8292b549 Vincent Knecht 2021-12-20 329 } 53778b8292b549 Vincent Knecht 2021-12-20 330 53778b8292b549 Vincent Knecht 2021-12-20 331 if (ak4375->rate <= 24000) { 53778b8292b549 Vincent Knecht 2021-12-20 332 cm |= CM_1; 53778b8292b549 Vincent Knecht 2021-12-20 333 mclk = 512 * ak4375->rate; 53778b8292b549 Vincent Knecht 2021-12-20 334 mdiv = freq_out / mclk - 1; 53778b8292b549 Vincent Knecht 2021-12-20 335 div = 0; 53778b8292b549 Vincent Knecht 2021-12-20 336 } else if (ak4375->rate <= 96000) { 53778b8292b549 Vincent Knecht 2021-12-20 337 cm |= CM_0; 53778b8292b549 Vincent Knecht 2021-12-20 338 mclk = 256 * ak4375->rate; 53778b8292b549 Vincent Knecht 2021-12-20 339 mdiv = freq_out / mclk - 1; 53778b8292b549 Vincent Knecht 2021-12-20 340 div = 0; 53778b8292b549 Vincent Knecht 2021-12-20 341 } else { 53778b8292b549 Vincent Knecht 2021-12-20 342 cm |= CM_3; 53778b8292b549 Vincent Knecht 2021-12-20 @343 mclk = 128 * ak4375->rate; 53778b8292b549 Vincent Knecht 2021-12-20 344 mdiv = 4; 53778b8292b549 Vincent Knecht 2021-12-20 345 div = 1; 53778b8292b549 Vincent Knecht 2021-12-20 346 } 53778b8292b549 Vincent Knecht 2021-12-20 347 53778b8292b549 Vincent Knecht 2021-12-20 348 /* Writing both fields in one go seems to make playback choppy on start */ 53778b8292b549 Vincent Knecht 2021-12-20 349 snd_soc_component_update_bits(component, AK4375_05_CLOCK_MODE_SELECT, FS_MASK, fs); 53778b8292b549 Vincent Knecht 2021-12-20 350 snd_soc_component_update_bits(component, AK4375_05_CLOCK_MODE_SELECT, CM_MASK, cm); 53778b8292b549 Vincent Knecht 2021-12-20 351 53778b8292b549 Vincent Knecht 2021-12-20 352 snd_soc_component_write(component, AK4375_0F_PLL_REF_CLK_DIVIDER1, 53778b8292b549 Vincent Knecht 2021-12-20 353 (ak4375->pld & 0xff00) >> 8); 53778b8292b549 Vincent Knecht 2021-12-20 354 snd_soc_component_write(component, AK4375_10_PLL_REF_CLK_DIVIDER2, 53778b8292b549 Vincent Knecht 2021-12-20 355 ak4375->pld & 0x00ff); 53778b8292b549 Vincent Knecht 2021-12-20 356 53778b8292b549 Vincent Knecht 2021-12-20 357 plm = freq_out / freq_in - 1; 53778b8292b549 Vincent Knecht 2021-12-20 358 snd_soc_component_write(component, AK4375_11_PLL_FB_CLK_DIVIDER1, (plm & 0xff00) >> 8); 53778b8292b549 Vincent Knecht 2021-12-20 359 snd_soc_component_write(component, AK4375_12_PLL_FB_CLK_DIVIDER2, plm & 0x00ff); 53778b8292b549 Vincent Knecht 2021-12-20 360 53778b8292b549 Vincent Knecht 2021-12-20 361 snd_soc_component_update_bits(component, AK4375_13_SRC_CLK_SOURCE, DIV, div); 53778b8292b549 Vincent Knecht 2021-12-20 362 53778b8292b549 Vincent Knecht 2021-12-20 363 /* SRCCKS bit: force to 1 for SRC PLL source clock */ 53778b8292b549 Vincent Knecht 2021-12-20 364 snd_soc_component_update_bits(component, AK4375_13_SRC_CLK_SOURCE, SRCCKS, SRCCKS); 53778b8292b549 Vincent Knecht 2021-12-20 365 53778b8292b549 Vincent Knecht 2021-12-20 366 snd_soc_component_write(component, AK4375_14_DAC_CLK_DIVIDER, mdiv); 53778b8292b549 Vincent Knecht 2021-12-20 367 53778b8292b549 Vincent Knecht 2021-12-20 368 dev_dbg(ak4375->dev, "rate=%d mclk=%d f_in=%d f_out=%d PLD=%d PLM=%d MDIV=%d DIV=%d\n", 53778b8292b549 Vincent Knecht 2021-12-20 369 ak4375->rate, mclk, freq_in, freq_out, ak4375->pld, plm, mdiv, div); 53778b8292b549 Vincent Knecht 2021-12-20 370 53778b8292b549 Vincent Knecht 2021-12-20 371 return 0; 53778b8292b549 Vincent Knecht 2021-12-20 372 } 53778b8292b549 Vincent Knecht 2021-12-20 373 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
