Hi Viorel,
FYI, the error/warning still remains.
tree:
https://github.com/Freescale/linux-fslc pr/311
head: 81b028050d9762a6a884ec6d460ae109a4fc92de
commit: b164260078426fece986dc4020b8a69d9a2f6023 [9162/17568] MLK-23567-2 ASoC: fsl_xcvr:
enable SPDIF TX
config: x86_64-randconfig-s021-20210416 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-280-g2cd6d34e-dirty
#
https://github.com/Freescale/linux-fslc/commit/b164260078426fece986dc4020...
git remote add freescale-fslc
https://github.com/Freescale/linux-fslc
git fetch --no-tags freescale-fslc pr/311
git checkout b164260078426fece986dc4020b8a69d9a2f6023
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
ld: sound/soc/fsl/fsl_xcvr.o: in function `fsl_xcvr_hw_params':
> sound/soc/fsl/fsl_xcvr.c:346: undefined reference to
`snd_pcm_create_iec958_consumer_hw_params'
vim +346 sound/soc/fsl/fsl_xcvr.c
330
331 static int fsl_xcvr_hw_params(struct snd_pcm_substream *substream,
332 struct snd_pcm_hw_params *params,
333 struct snd_soc_dai *dai)
334 {
335 struct fsl_xcvr *xcvr = snd_soc_dai_get_drvdata(dai);
336 bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
337 u32 r = params_rate(params), ch = params_channels(params);
338 snd_pcm_format_t f = params_format(params);
339 u32 reg, val, bclk = 32 * r * ch;
340 u32 mode = xcvr->mode & FSL_XCVR_AMODE_MASK;
341 int i, ret;
342
343 if (!tx)
344 return 0;
345
346 ret = snd_pcm_create_iec958_consumer_hw_params(params,
347 xcvr->tx_iec958.status, ARRAY_SIZE(xcvr->tx_iec958.status));
348 if (ret < 0) {
349 dev_err(dai->dev, "Creating IEC958 CS failed %d\n", ret);
350 return ret;
351 }
352
353 for (i = 0; i < 6; i++) {
354 val = (xcvr->tx_iec958.status[4 * i + 0] << 24) |
355 (xcvr->tx_iec958.status[4 * i + 1] << 16) |
356 (xcvr->tx_iec958.status[4 * i + 2] << 8) |
357 (xcvr->tx_iec958.status[4 * i + 3] << 0);
358 /* Update TX CS data bits */
359 ret = regmap_write(xcvr->regmap, FSL_XCVR_TX_CS_DATA_0 + 4 * i,
360 val);
361 if (ret < 0) {
362 dev_err(dai->dev, "Failed to set TXCS%d: %d\n", i, ret);
363 return ret;
364 }
365 }
366
367 switch (mode) {
368 case FSL_XCVR_AMODE_EARC:
369 bclk *= 10;
370 break;
371 case FSL_XCVR_AMODE_SPDIF:
372 bclk *= 2;
373 break;
374 }
375
376 ret = fsl_xcvr_en_phy(xcvr, (mode == FSL_XCVR_AMODE_EARC), bclk);
377 if (ret < 0) {
378 dev_err(dai->dev, "Failed to set TX freq %u: %d\n", bclk, ret);
379 return ret;
380 }
381
382 /* enable/disable IEC958 encoding as function of input format */
383 val = FSL_XCVR_TX_DPTH_CTRL_CS_MOD;
384 val |= FSL_XCVR_TX_DPTH_CTRL_EN_PREAMBLE;
385 val |= FSL_XCVR_TX_DPTH_CTRL_EN_PARITY;
386
387 if (f == SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE)
388 reg = FSL_XCVR_TX_DPTH_CTRL_CLR; /* disable IEC958 encoding */
389 else
390 reg = FSL_XCVR_TX_DPTH_CTRL_SET; /* enable IEC958 encoding */
391
392 ret = regmap_write(xcvr->regmap, reg, val);
393 if (ret < 0) {
394 dev_err(dai->dev, "Failed to en/dis IEC958 encode: %d\n", ret);
395 return ret;
396 }
397
398 return 0;
399 }
400
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org