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