Re: [PATCH 2/2] ASoC: tegra: I2S client convert formats handling

From: kernel test robot
Date: Tue May 21 2024 - 06:46:31 EST


Hi Sameer,

kernel test robot noticed the following build warnings:

[auto build test WARNING on broonie-sound/for-next]
[also build test WARNING on tegra/for-next tiwai-sound/for-next tiwai-sound/for-linus linus/master v6.9 next-20240521]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Sameer-Pujar/ASoC-simple-card-utils-Split-simple_fixup_sample_fmt-func/20240520-195311
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
patch link: https://lore.kernel.org/r/20240520114902.1663695-3-spujar%40nvidia.com
patch subject: [PATCH 2/2] ASoC: tegra: I2S client convert formats handling
config: arm-randconfig-r122-20240521 (https://download.01.org/0day-ci/archive/20240521/202405211805.UMAdiH0d-lkp@xxxxxxxxx/config)
compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a)
reproduce: (https://download.01.org/0day-ci/archive/20240521/202405211805.UMAdiH0d-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405211805.UMAdiH0d-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
>> sound/soc/tegra/tegra210_i2s.c:640:23: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int sample_format @@ got restricted snd_pcm_format_t @@
sound/soc/tegra/tegra210_i2s.c:640:23: sparse: expected unsigned int sample_format
sound/soc/tegra/tegra210_i2s.c:640:23: sparse: got restricted snd_pcm_format_t
>> sound/soc/tegra/tegra210_i2s.c:649:14: sparse: sparse: restricted snd_pcm_format_t degrades to integer
sound/soc/tegra/tegra210_i2s.c:654:14: sparse: sparse: restricted snd_pcm_format_t degrades to integer
sound/soc/tegra/tegra210_i2s.c:659:14: sparse: sparse: restricted snd_pcm_format_t degrades to integer

vim +640 sound/soc/tegra/tegra210_i2s.c

599
600 static int tegra210_i2s_hw_params(struct snd_pcm_substream *substream,
601 struct snd_pcm_hw_params *params,
602 struct snd_soc_dai *dai)
603 {
604 struct device *dev = dai->dev;
605 struct tegra210_i2s *i2s = snd_soc_dai_get_drvdata(dai);
606 unsigned int sample_size, channels, srate, val, reg, path;
607 struct tegra_cif_conf cif_conf;
608 unsigned int sample_format;
609
610 memset(&cif_conf, 0, sizeof(struct tegra_cif_conf));
611
612 channels = params_channels(params);
613 if (channels < 1) {
614 dev_err(dev, "invalid I2S %d channel configuration\n",
615 channels);
616 return -EINVAL;
617 }
618
619 cif_conf.audio_ch = channels;
620 cif_conf.client_ch = channels;
621 if (i2s->client_channels)
622 cif_conf.client_ch = i2s->client_channels;
623
624 /* AHUB CIF Audio bits configs */
625 switch (params_format(params)) {
626 case SNDRV_PCM_FORMAT_S8:
627 cif_conf.audio_bits = TEGRA_ACIF_BITS_8;
628 break;
629 case SNDRV_PCM_FORMAT_S16_LE:
630 cif_conf.audio_bits = TEGRA_ACIF_BITS_16;
631 break;
632 case SNDRV_PCM_FORMAT_S32_LE:
633 cif_conf.audio_bits = TEGRA_ACIF_BITS_32;
634 break;
635 default:
636 dev_err(dev, "unsupported params audio bit format!\n");
637 return -EOPNOTSUPP;
638 }
639
> 640 sample_format = params_format(params);
641 if (i2s->client_sample_format >= 0)
642 sample_format = i2s->client_sample_format;
643
644 /*
645 * Format of the I2S for sending/receiving the audio
646 * to/from external device.
647 */
648 switch (sample_format) {
> 649 case SNDRV_PCM_FORMAT_S8:
650 val = I2S_BITS_8;
651 sample_size = 8;
652 cif_conf.client_bits = TEGRA_ACIF_BITS_8;
653 break;
654 case SNDRV_PCM_FORMAT_S16_LE:
655 val = I2S_BITS_16;
656 sample_size = 16;
657 cif_conf.client_bits = TEGRA_ACIF_BITS_16;
658 break;
659 case SNDRV_PCM_FORMAT_S32_LE:
660 val = I2S_BITS_32;
661 sample_size = 32;
662 cif_conf.client_bits = TEGRA_ACIF_BITS_32;
663 break;
664 default:
665 dev_err(dev, "unsupported client bit format!\n");
666 return -EOPNOTSUPP;
667 }
668
669 /* Program sample size */
670 regmap_update_bits(i2s->regmap, TEGRA210_I2S_CTRL,
671 I2S_CTRL_BIT_SIZE_MASK, val);
672
673 srate = params_rate(params);
674
675 /* For playback I2S RX-CIF and for capture TX-CIF is used */
676 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
677 path = I2S_RX_PATH;
678 else
679 path = I2S_TX_PATH;
680
681 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
682 unsigned int max_th;
683
684 /* FIFO threshold in terms of frames */
685 max_th = (I2S_RX_FIFO_DEPTH / cif_conf.audio_ch) - 1;
686
687 if (i2s->rx_fifo_th > max_th)
688 i2s->rx_fifo_th = max_th;
689
690 cif_conf.threshold = i2s->rx_fifo_th;
691
692 reg = TEGRA210_I2S_RX_CIF_CTRL;
693 } else {
694 reg = TEGRA210_I2S_TX_CIF_CTRL;
695 }
696
697 cif_conf.mono_conv = i2s->mono_to_stereo[path];
698 cif_conf.stereo_conv = i2s->stereo_to_mono[path];
699
700 tegra_set_cif(i2s->regmap, reg, &cif_conf);
701
702 return tegra210_i2s_set_timing_params(dev, sample_size, srate,
703 cif_conf.client_ch);
704 }
705

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki