Re: [PATCH v2] ASoC: amd: acp: Add TDM support for acp i2s stream

From: kernel test robot
Date: Sun Aug 07 2022 - 03:06:37 EST


Hi Venkata,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on broonie-sound/for-next]
[also build test ERROR on linus/master next-20220805]
[cannot apply to v5.19]
[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/Venkata-Prasad-Potturu/ASoC-amd-acp-Add-TDM-support-for-acp-i2s-stream/20220805-140248
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
config: x86_64-allmodconfig (https://download.01.org/0day-ci/archive/20220807/202208071454.7YeHuTDb-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/c603f9570621784501d7ce7f5099be37983cb810
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Venkata-Prasad-Potturu/ASoC-amd-acp-Add-TDM-support-for-acp-i2s-stream/20220805-140248
git checkout c603f9570621784501d7ce7f5099be37983cb810
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash sound/soc/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

sound/soc/amd/acp/acp-i2s.c: In function 'acp_i2s_set_tdm_slot':
>> sound/soc/amd/acp/acp-i2s.c:74:29: error: 'struct acp_dev_data' has no member named 'acp_lock'
74 | spin_lock_irq(&adata->acp_lock);
| ^~
In file included from include/linux/kernel.h:21,
from arch/x86/include/asm/percpu.h:27,
from arch/x86/include/asm/current.h:6,
from include/linux/sched.h:12,
from include/linux/ratelimit.h:6,
from include/linux/dev_printk.h:16,
from include/linux/device.h:15,
from include/linux/platform_device.h:13,
from sound/soc/amd/acp/acp-i2s.c:15:
sound/soc/amd/acp/acp-i2s.c:75:43: error: 'struct acp_dev_data' has no member named 'stream_list'
75 | list_for_each_entry(stream, &adata->stream_list, list) {
| ^~
include/linux/container_of.h:18:33: note: in definition of macro 'container_of'
18 | void *__mptr = (void *)(ptr); \
| ^~~
include/linux/list.h:531:9: note: in expansion of macro 'list_entry'
531 | list_entry((ptr)->next, type, member)
| ^~~~~~~~~~
include/linux/list.h:674:20: note: in expansion of macro 'list_first_entry'
674 | for (pos = list_first_entry(head, typeof(*pos), member); \
| ^~~~~~~~~~~~~~~~
sound/soc/amd/acp/acp-i2s.c:75:9: note: in expansion of macro 'list_for_each_entry'
75 | list_for_each_entry(stream, &adata->stream_list, list) {
| ^~~~~~~~~~~~~~~~~~~
In file included from include/linux/bits.h:22,
from include/linux/ratelimit_types.h:5,
from include/linux/ratelimit.h:5,
from include/linux/dev_printk.h:16,
from include/linux/device.h:15,
from include/linux/platform_device.h:13,
from sound/soc/amd/acp/acp-i2s.c:15:
sound/soc/amd/acp/acp-i2s.c:75:43: error: 'struct acp_dev_data' has no member named 'stream_list'
75 | list_for_each_entry(stream, &adata->stream_list, list) {
| ^~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
| ^~~~
include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert'
19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ^~~~~~~~~~~~~
include/linux/container_of.h:19:23: note: in expansion of macro '__same_type'
19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ^~~~~~~~~~~
include/linux/list.h:520:9: note: in expansion of macro 'container_of'
520 | container_of(ptr, type, member)
| ^~~~~~~~~~~~
include/linux/list.h:531:9: note: in expansion of macro 'list_entry'
531 | list_entry((ptr)->next, type, member)
| ^~~~~~~~~~
include/linux/list.h:674:20: note: in expansion of macro 'list_first_entry'
674 | for (pos = list_first_entry(head, typeof(*pos), member); \
| ^~~~~~~~~~~~~~~~
sound/soc/amd/acp/acp-i2s.c:75:9: note: in expansion of macro 'list_for_each_entry'
75 | list_for_each_entry(stream, &adata->stream_list, list) {
| ^~~~~~~~~~~~~~~~~~~
include/linux/container_of.h:19:54: error: 'struct acp_stream' has no member named 'list'
19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ^~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
| ^~~~
include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert'
19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ^~~~~~~~~~~~~
include/linux/container_of.h:19:23: note: in expansion of macro '__same_type'
19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ^~~~~~~~~~~
include/linux/list.h:520:9: note: in expansion of macro 'container_of'
520 | container_of(ptr, type, member)
| ^~~~~~~~~~~~
include/linux/list.h:531:9: note: in expansion of macro 'list_entry'
531 | list_entry((ptr)->next, type, member)
| ^~~~~~~~~~
include/linux/list.h:674:20: note: in expansion of macro 'list_first_entry'
674 | for (pos = list_first_entry(head, typeof(*pos), member); \
| ^~~~~~~~~~~~~~~~
sound/soc/amd/acp/acp-i2s.c:75:9: note: in expansion of macro 'list_for_each_entry'
75 | list_for_each_entry(stream, &adata->stream_list, list) {
| ^~~~~~~~~~~~~~~~~~~
sound/soc/amd/acp/acp-i2s.c:75:43: error: 'struct acp_dev_data' has no member named 'stream_list'
75 | list_for_each_entry(stream, &adata->stream_list, list) {
| ^~
include/linux/build_bug.h:78:56: note: in definition of macro '__static_assert'
78 | #define __static_assert(expr, msg, ...) _Static_assert(expr, msg)
| ^~~~
include/linux/container_of.h:19:9: note: in expansion of macro 'static_assert'
19 | static_assert(__same_type(*(ptr), ((type *)0)->member) || \
| ^~~~~~~~~~~~~
include/linux/container_of.h:20:23: note: in expansion of macro '__same_type'
20 | __same_type(*(ptr), void), \
| ^~~~~~~~~~~
include/linux/list.h:520:9: note: in expansion of macro 'container_of'
520 | container_of(ptr, type, member)
| ^~~~~~~~~~~~
include/linux/list.h:531:9: note: in expansion of macro 'list_entry'
531 | list_entry((ptr)->next, type, member)
| ^~~~~~~~~~
include/linux/list.h:674:20: note: in expansion of macro 'list_first_entry'


vim +74 sound/soc/amd/acp/acp-i2s.c

47
48 static int acp_i2s_set_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask, u32 rx_mask,
49 int slots, int slot_width)
50 {
51 struct device *dev = dai->component->dev;
52 struct acp_dev_data *adata = snd_soc_dai_get_drvdata(dai);
53 struct acp_stream *stream;
54 int slot_len;
55
56 switch (slot_width) {
57 case SLOT_WIDTH_8:
58 slot_len = 8;
59 break;
60 case SLOT_WIDTH_16:
61 slot_len = 16;
62 break;
63 case SLOT_WIDTH_24:
64 slot_len = 24;
65 break;
66 case SLOT_WIDTH_32:
67 slot_len = 0;
68 break;
69 default:
70 dev_err(dev, "Unsupported bitdepth %d\n", slot_width);
71 return -EINVAL;
72 }
73
> 74 spin_lock_irq(&adata->acp_lock);
75 list_for_each_entry(stream, &adata->stream_list, list) {
76 if (tx_mask && stream->dir == SNDRV_PCM_STREAM_PLAYBACK)
77 adata->tdm_tx_fmt[stream->dai_id - 1] =
78 FRM_LEN | (slots << 15) | (slot_len << 18);
79 else if (rx_mask && stream->dir == SNDRV_PCM_STREAM_CAPTURE)
80 adata->tdm_rx_fmt[stream->dai_id - 1] =
81 FRM_LEN | (slots << 15) | (slot_len << 18);
82 }
83 spin_unlock_irq(&adata->acp_lock);
84 return 0;
85 }
86

--
0-DAY CI Kernel Test Service
https://01.org/lkp