tree:
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 494d311a82bb06a81fa7ef4277367701a792e6ef
commit: 9c3bab3c4f158bb79ebd7443ef83c32fa1a450a1 [1358/2764] ASoC: Intel: KMB: Enable TDM
audio capture
config: arm64-randconfig-s031-20200821 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-191-g10164920-dirty
git checkout 9c3bab3c4f158bb79ebd7443ef83c32fa1a450a1
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> sound/soc/intel/keembay/kmb_platform.c:517:79: sparse: sparse:
dubious: x | !y
#
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commi...
git remote add linux-next
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 9c3bab3c4f158bb79ebd7443ef83c32fa1a450a1
vim +517 sound/soc/intel/keembay/kmb_platform.c
c5477e966728f8 Sia Jee Heng 2020-06-09 473
c5477e966728f8 Sia Jee Heng 2020-06-09 474 static int kmb_dai_hw_params(struct
snd_pcm_substream *substream,
c5477e966728f8 Sia Jee Heng 2020-06-09 475 struct snd_pcm_hw_params
*hw_params,
c5477e966728f8 Sia Jee Heng 2020-06-09 476 struct snd_soc_dai *cpu_dai)
c5477e966728f8 Sia Jee Heng 2020-06-09 477 {
c5477e966728f8 Sia Jee Heng 2020-06-09 478 struct kmb_i2s_info *kmb_i2s =
snd_soc_dai_get_drvdata(cpu_dai);
c5477e966728f8 Sia Jee Heng 2020-06-09 479 struct i2s_clk_config_data *config =
&kmb_i2s->config;
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 480 u32 write_val;
c5477e966728f8 Sia Jee Heng 2020-06-09 481 int ret;
c5477e966728f8 Sia Jee Heng 2020-06-09 482
c5477e966728f8 Sia Jee Heng 2020-06-09 483 switch (params_format(hw_params)) {
c5477e966728f8 Sia Jee Heng 2020-06-09 484 case SNDRV_PCM_FORMAT_S16_LE:
c5477e966728f8 Sia Jee Heng 2020-06-09 485 config->data_width = 16;
c5477e966728f8 Sia Jee Heng 2020-06-09 486 kmb_i2s->ccr = 0x00;
c5477e966728f8 Sia Jee Heng 2020-06-09 487 kmb_i2s->xfer_resolution =
0x02;
c5477e966728f8 Sia Jee Heng 2020-06-09 488 break;
c5477e966728f8 Sia Jee Heng 2020-06-09 489 case SNDRV_PCM_FORMAT_S24_LE:
c5477e966728f8 Sia Jee Heng 2020-06-09 490 config->data_width = 24;
c5477e966728f8 Sia Jee Heng 2020-06-09 491 kmb_i2s->ccr = 0x08;
c5477e966728f8 Sia Jee Heng 2020-06-09 492 kmb_i2s->xfer_resolution =
0x04;
c5477e966728f8 Sia Jee Heng 2020-06-09 493 break;
c5477e966728f8 Sia Jee Heng 2020-06-09 494 case SNDRV_PCM_FORMAT_S32_LE:
c5477e966728f8 Sia Jee Heng 2020-06-09 495 config->data_width = 32;
c5477e966728f8 Sia Jee Heng 2020-06-09 496 kmb_i2s->ccr = 0x10;
c5477e966728f8 Sia Jee Heng 2020-06-09 497 kmb_i2s->xfer_resolution =
0x05;
c5477e966728f8 Sia Jee Heng 2020-06-09 498 break;
c5477e966728f8 Sia Jee Heng 2020-06-09 499 default:
c5477e966728f8 Sia Jee Heng 2020-06-09 500 dev_err(kmb_i2s->dev, "kmb:
unsupported PCM fmt");
c5477e966728f8 Sia Jee Heng 2020-06-09 501 return -EINVAL;
c5477e966728f8 Sia Jee Heng 2020-06-09 502 }
c5477e966728f8 Sia Jee Heng 2020-06-09 503
c5477e966728f8 Sia Jee Heng 2020-06-09 504 config->chan_nr =
params_channels(hw_params);
c5477e966728f8 Sia Jee Heng 2020-06-09 505
c5477e966728f8 Sia Jee Heng 2020-06-09 506 switch (config->chan_nr) {
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 507 case 8:
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 508 case 4:
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 509 /*
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 510 * Platform is not capable of
providing clocks for
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 511 * multi channel audio
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 512 */
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 513 if (kmb_i2s->master)
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 514 return -EINVAL;
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 515
c5477e966728f8 Sia Jee Heng 2020-06-09 516 write_val = ((config->chan_nr /
2) << TDM_CHANNEL_CONFIG_BIT) |
c5477e966728f8 Sia Jee Heng 2020-06-09 @517 (config->data_width <<
DATA_WIDTH_CONFIG_BIT) |
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 518 !MASTER_MODE | TDM_OPERATION;
c5477e966728f8 Sia Jee Heng 2020-06-09 519
c5477e966728f8 Sia Jee Heng 2020-06-09 520 writel(write_val,
kmb_i2s->pss_base + I2S_GEN_CFG_0);
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 521 break;
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 522 case 2:
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 523 /*
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 524 * Platform is only capable of
providing clocks need for
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 525 * 2 channel master mode
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 526 */
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 527 if (!(kmb_i2s->master))
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 528 return -EINVAL;
c5477e966728f8 Sia Jee Heng 2020-06-09 529
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 530 write_val = ((config->chan_nr /
2) << TDM_CHANNEL_CONFIG_BIT) |
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 531 (config->data_width <<
DATA_WIDTH_CONFIG_BIT) |
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 532 MASTER_MODE | I2S_OPERATION;
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 533
9c3bab3c4f158b Michael Sit Wei Hong 2020-08-11 534 writel(write_val,
kmb_i2s->pss_base + I2S_GEN_CFG_0);
c5477e966728f8 Sia Jee Heng 2020-06-09 535 break;
c5477e966728f8 Sia Jee Heng 2020-06-09 536 default:
c5477e966728f8 Sia Jee Heng 2020-06-09 537 dev_dbg(kmb_i2s->dev,
"channel not supported\n");
c5477e966728f8 Sia Jee Heng 2020-06-09 538 return -EINVAL;
c5477e966728f8 Sia Jee Heng 2020-06-09 539 }
c5477e966728f8 Sia Jee Heng 2020-06-09 540
c5477e966728f8 Sia Jee Heng 2020-06-09 541 kmb_i2s_config(kmb_i2s,
substream->stream);
c5477e966728f8 Sia Jee Heng 2020-06-09 542
c5477e966728f8 Sia Jee Heng 2020-06-09 543 writel(kmb_i2s->ccr,
kmb_i2s->i2s_base + CCR);
c5477e966728f8 Sia Jee Heng 2020-06-09 544
c5477e966728f8 Sia Jee Heng 2020-06-09 545 config->sample_rate =
params_rate(hw_params);
c5477e966728f8 Sia Jee Heng 2020-06-09 546
c5477e966728f8 Sia Jee Heng 2020-06-09 547 if (kmb_i2s->master) {
c5477e966728f8 Sia Jee Heng 2020-06-09 548 /* Only 2 ch supported in Master
mode */
c5477e966728f8 Sia Jee Heng 2020-06-09 549 u32 bitclk = config->sample_rate
* config->data_width * 2;
c5477e966728f8 Sia Jee Heng 2020-06-09 550
c5477e966728f8 Sia Jee Heng 2020-06-09 551 ret =
clk_set_rate(kmb_i2s->clk_i2s, bitclk);
c5477e966728f8 Sia Jee Heng 2020-06-09 552 if (ret) {
c5477e966728f8 Sia Jee Heng 2020-06-09 553 dev_err(kmb_i2s->dev,
c5477e966728f8 Sia Jee Heng 2020-06-09 554 "Can't set I2S clock
rate: %d\n", ret);
c5477e966728f8 Sia Jee Heng 2020-06-09 555 return ret;
c5477e966728f8 Sia Jee Heng 2020-06-09 556 }
c5477e966728f8 Sia Jee Heng 2020-06-09 557 }
c5477e966728f8 Sia Jee Heng 2020-06-09 558
c5477e966728f8 Sia Jee Heng 2020-06-09 559 return 0;
c5477e966728f8 Sia Jee Heng 2020-06-09 560 }
c5477e966728f8 Sia Jee Heng 2020-06-09 561
:::::: The code at line 517 was first introduced by commit
:::::: c5477e966728f8e9d1434543d4ee677d515e1078 ASoC: Intel: Add KeemBay platform driver
:::::: TO: Sia Jee Heng <jee.heng.sia(a)intel.com>
:::::: CC: Mark Brown <broonie(a)kernel.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org