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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux