On Thu, Dec 12, 2024 at 7:45 PM Mark Brown broonie@kernel.org wrote:
On Thu, Dec 12, 2024 at 03:45:07PM +0800, Shengjiu Wang wrote:
Implement the ASRC memory to memory function using the compress framework, user can use this function with compress ioctl interface.
This feature can be shared by ASRC and EASRC drivers
This breaks an x86 allmodconfig build (using GCC 13):
/build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:186:68: warning: ‘struct snd_compr_task_runtime’ declared inside parameter list will not be visible outside of this definition or declaration 186 | static void asrc_m2m_device_run(struct fsl_asrc_pair *pair, struct snd_compr_task_runtime *task) | ^~~~~~~~~~~~~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c: In function ‘asrc_m2m_device_run’: /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:212:26: error: invalid use of undefined type ‘struct snd_compr_task_runtime’ 212 | in_buf_len = task->input_size; | ^~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:279:13: error: invalid use of undefined type ‘struct snd_compr_task_runtime’ 279 | task->output_size = out_dma_len; | ^~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c: At top level: /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:451:49: warning: ‘struct snd_compr_task_runtime’ declared inside parameter list will not be visible outside of this definition or declaration 451 | struct snd_compr_task_runtime *task) | ^~~~~~~~~~~~~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c: In function ‘fsl_asrc_m2m_comp_task_create’: /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:465:13: error: invalid use of undefined type ‘struct snd_compr_task_runtime’ 465 | task->input = dma_buf_export(&exp_info_in); | ^~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:466:24: error: invalid use of undefined type ‘struct snd_compr_task_runtime’ 466 | if (IS_ERR(task->input)) { | ^~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:467:35: error: invalid use of undefined type ‘struct snd_compr_task_runtime’ 467 | ret = PTR_ERR(task->input); | ^~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:475:13: error: invalid use of undefined type ‘struct snd_compr_task_runtime’ 475 | task->output = dma_buf_export(&exp_info_out); | ^~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:476:24: error: invalid use of undefined type ‘struct snd_compr_task_runtime’ 476 | if (IS_ERR(task->output)) { | ^~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:477:35: error: invalid use of undefined type ‘struct snd_compr_task_runtime’ 477 | ret = PTR_ERR(task->output); | ^~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c: At top level: /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:523:48: warning: ‘struct snd_compr_task_runtime’ declared inside parameter list will not be visible outside of this definition or declaration 523 | struct snd_compr_task_runtime *task) | ^~~~~~~~~~~~~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c: In function ‘fsl_asrc_m2m_comp_task_start’: /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:528:35: error: passing argument 2 of ‘asrc_m2m_device_run’ from incompatible pointer type [-Werror=incompatible-pointer-types] 528 | asrc_m2m_device_run(pair, task); | ^~~~ | | | struct snd_compr_task_runtime * /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:186:92: note: expected ‘struct snd_compr_task_runtime *’ but argument is of type ‘struct snd_compr_task_runtime *’ 186 | static void asrc_m2m_device_run(struct fsl_asrc_pair *pair, struct snd_compr_task_runtime *task) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c: At top level: /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:534:47: warning: ‘struct snd_compr_task_runtime’ declared inside parameter list will not be visible outside of this definition or declaration 534 | struct snd_compr_task_runtime *task) | ^~~~~~~~~~~~~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:540:47: warning: ‘struct snd_compr_task_runtime’ declared inside parameter list will not be visible outside of this definition or declaration 540 | struct snd_compr_task_runtime *task) | ^~~~~~~~~~~~~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:623:10: error: ‘struct snd_compr_ops’ has no member named ‘task_create’ 623 | .task_create = fsl_asrc_m2m_comp_task_create, | ^~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:623:24: warning: excess elements in struct initializer 623 | .task_create = fsl_asrc_m2m_comp_task_create, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:623:24: note: (near initialization for ‘fsl_asrc_m2m_compr_ops’) /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:624:10: error: ‘struct snd_compr_ops’ has no member named ‘task_start’ 624 | .task_start = fsl_asrc_m2m_comp_task_start, | ^~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:624:23: warning: excess elements in struct initializer 624 | .task_start = fsl_asrc_m2m_comp_task_start, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:624:23: note: (near initialization for ‘fsl_asrc_m2m_compr_ops’) /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:625:10: error: ‘struct snd_compr_ops’ has no member named ‘task_stop’ 625 | .task_stop = fsl_asrc_m2m_comp_task_stop, | ^~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:625:22: warning: excess elements in struct initializer 625 | .task_stop = fsl_asrc_m2m_comp_task_stop, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:625:22: note: (near initialization for ‘fsl_asrc_m2m_compr_ops’) /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:626:10: error: ‘struct snd_compr_ops’ has no member named ‘task_free’ 626 | .task_free = fsl_asrc_m2m_comp_task_free, | ^~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:626:22: warning: excess elements in struct initializer 626 | .task_free = fsl_asrc_m2m_comp_task_free, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:626:22: note: (near initialization for ‘fsl_asrc_m2m_compr_ops’) /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c: In function ‘fsl_asrc_m2m_init’: /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:701:41: error: ‘SND_COMPRESS_ACCEL’ undeclared (first use in this function); did you mean ‘SNDRV_COMPRESS_AVAIL’? 701 | ret = snd_compress_new(card, 0, SND_COMPRESS_ACCEL, "ASRC M2M", compr); | ^~~~~~~~~~~~~~~~~~ | SNDRV_COMPRESS_AVAIL /build/stage/linux/sound/soc/fsl/fsl_asrc_m2m.c:701:41: note: each undeclared identifier is reported only once for each function it appears in cc1: some warnings being treated as errors
Hi Mark
I can't reproduce this issue with 'make allmodconfig'. I tried the branches: for-6.13/for-6.14/for-next.
I suspect you are using the wrong branch, because I can reproduce this issue on for-6.12. which is caused by the below commit that is only applied from for-6.13. 04177158cf98 ("ALSA: compress_offload: introduce accel operation mode")
But could you please tell me your steps in detail?, so that I can try more.
Best regards Shengjiu Wang