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... 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@i...) 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@i...)
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@intel.com | Closes: https://lore.kernel.org/oe-kbuild-all/202405211805.UMAdiH0d-lkp@intel.com/
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