lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ