[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87ldkr36cv.wl-kuninori.morimoto.gx@renesas.com>
Date: Fri, 31 Oct 2025 06:58:24 +0000
From: Kuninori Morimoto <kuninori.morimoto.gx@...esas.com>
To: HariKrishna Sagala <hariconscious@...il.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
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
Powered by blists - more mailing lists