[PATCH v7 4/6] ASoC: fsl_asrc_m2m: Add memory to memory function

Shengjiu Wang shengjiu.wang at gmail.com
Fri Dec 13 18:45:46 AEDT 2024


On Thu, Dec 12, 2024 at 7:45 PM Mark Brown <broonie at 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


More information about the Linuxppc-dev mailing list