[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CABBwEEh7gjMPi8dybAcd_4rTT0ZJU=zi99ahSgdzCAjMtL6zdg@mail.gmail.com>
Date: Fri, 31 Oct 2025 19:45:04 +0530
From: harikrishna <hariconscious@...il.com>
To: Kuninori Morimoto <kuninori.morimoto.gx@...esas.com>
Cc: lgirdwood@...il.com, broonie@...nel.org, perex@...ex.cz, tiwai@...e.com,
shuah@...nel.org, david.hunter.linux@...il.com, linux-sound@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [RFC] ASoC: soc-core: proposal to remove num_auto_selectable_formats
from snd_soc_dai_ops
On Fri, Oct 31, 2025 at 12:28 PM Kuninori Morimoto
<kuninori.morimoto.gx@...esas.com> wrote:
>
>
> Hi HariKrishna
>
> Thank you for suggestion
>
> > Iʼd like to propose a small cleanup and simplification in the
> > snd_soc_dai_ops structure by removing the
> > "num_auto_selectable_formats" parameter.
>
> Do you mean like this ?
>
> struct snd_soc_dai_ops {
> ...
> const u64 *auto_selectable_formats;
> - int num_auto_selectable_formats;
> ...
> };
>
> > Currently,snd_soc_dai_ops includes the "num_auto_selectable_formats"
> > field to indicate the number of entries in the "auto_selectable_formats"
> > array.However, this count can be derived programmatically using the
> > ARRAY_SIZE() macro wherever needed.
>
> If my understanding was correct, unfortunately we can't do it.
>
> We can use ARRAY_SIZE() in each driver, because we can access to raw array.
> But can't use it on ASoC framework, becase auto_selectable_formats is just
> a pointer. see how ARRAY_SIZE() is defined.
>
> --- driver ---
> my_formats[] = {
> [0] = SND_SOC_POSSIBLE_DAIFMT_xxx | SND_SOC_POSSIBLE_DAIFMT_xxx ...,
> [1] = SND_SOC_POSSIBLE_DAIFMT_xxx | SND_SOC_POSSIBLE_DAIFMT_xxx ...,
> };
>
> // We can use ARRAY_SIZE() in driver, because we know raw array.
> my_dai_ops = {
> ...
> .auto_selectable_formats = my_formats,
> => .num_auto_selectable_formats = ARRAY_SIZE(my_formats),
> };
>
> --- soc-xxx.c ---
> // it will be error, because we don't know its size
> => int num = ARRAY_SIZE(ops->auto_selectable_formats);
>
> Or do you mean create new macro, like this ?
>
> #define ASOC_SELECT_FORMATS(array)\
> .auto_selectable_formats = array,
> .num_auto_selectable_formats = ARRAY_SIZE(array)
>
> my_ops = {
> ...
> - .auto_selectable_formats = my_formats,
> - .num_auto_selectable_formats = ARRAY_SIZE(my_formats),
> + ASOC_SELECT_FORMATS(my_formats),
> };
>
> Or am I misunderstanding your suggestion ?
>
>
> Thank you for your help !!
>
> Best regards
> ---
> Kuninori Morimoto
Hi Kuninori Morimoto,
Yes, you are right.
I have got it now.
We can use it in codec driver not in framework.
Thought of changing the type of "U64 *auto_selectable_formats" to
"U64 (*auto_selectable_formats)[]" and removing the
"num_auto_selectable_formats".
But cannot be used to get count. Apologies for this.
Thanks for the guidance.
Regards,
HariKrishna.
Powered by blists - more mailing lists