Linux Sound subsystem development
 help / color / mirror / Atom feed
* [PATCH] ALSA: hda: Allow for codec model selection with module param
@ 2026-09-14 10:22 Cezary Rojewski
  2026-09-14 16:01 ` Takashi Iwai
  0 siblings, 1 reply; 12+ messages in thread
From: Cezary Rojewski @ 2026-09-14 10:22 UTC (permalink / raw)
  To: tiwai; +Cc: broonie, perex, amade, linux-sound, Cezary Rojewski

Model selection allows for customization of codec behaviour and thus
dealing with various problems on very specific configurations. The
parameter already exists but is part of snd_hda_intel specifically.
Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
from it.

The common place for all the bus drivers is snd_hda_codec. Add modelname
parameter there and honor it when initializing codec->modelname field.

Link: https://github.com/thesofproject/linux/issues/5683
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
---
 sound/hda/common/codec.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/sound/hda/common/codec.c b/sound/hda/common/codec.c
index 7d17d773cfbf..73b0009a0395 100644
--- a/sound/hda/common/codec.c
+++ b/sound/hda/common/codec.c
@@ -32,6 +32,10 @@
 #define codec_has_clkstop(codec) \
 	((codec)->core.power_caps & AC_PWRST_CLKSTOP)
 
+static char *modelname[HDA_MAX_CODEC_ADDRESS];
+module_param_array_named(model, modelname, charp, NULL, 0444);
+MODULE_PARM_DESC(model, "Use the given board model.");
+
 static int call_exec_verb(struct hda_bus *bus, struct hda_codec *codec,
 			  unsigned int cmd, unsigned int flags,
 			  unsigned int *res)
@@ -966,6 +970,7 @@ int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
 			bool snddev_managed)
 {
 	char component[31];
+	const char *mname;
 	hda_nid_t fg;
 	int err;
 	static const struct snd_device_ops dev_ops = {
@@ -988,8 +993,9 @@ int snd_hda_codec_device_new(struct hda_bus *bus, struct snd_card *card,
 
 	snd_hda_sysfs_init(codec);
 
-	if (codec->bus->modelname) {
-		codec->modelname = kstrdup(codec->bus->modelname, GFP_KERNEL);
+	mname = bus->modelname ? bus->modelname : modelname[codec_addr];
+	if (mname && strlen(mname)) {
+		codec->modelname = kstrdup(mname, GFP_KERNEL);
 		if (!codec->modelname)
 			return -ENOMEM;
 	}
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-14 10:22 [PATCH] ALSA: hda: Allow for codec model selection with module param Cezary Rojewski
@ 2026-09-14 16:01 ` Takashi Iwai
  2026-09-14 16:29   ` Cezary Rojewski
  0 siblings, 1 reply; 12+ messages in thread
From: Takashi Iwai @ 2026-09-14 16:01 UTC (permalink / raw)
  To: Cezary Rojewski; +Cc: tiwai, broonie, perex, amade, linux-sound

On Mon, 14 Sep 2026 12:22:53 +0200,
Cezary Rojewski wrote:
> 
> Model selection allows for customization of codec behaviour and thus
> dealing with various problems on very specific configurations. The
> parameter already exists but is part of snd_hda_intel specifically.
> Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
> from it.
> 
> The common place for all the bus drivers is snd_hda_codec. Add modelname
> parameter there and honor it when initializing codec->modelname field.
> 
> Link: https://github.com/thesofproject/linux/issues/5683
> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>

The handling of the model option is a very long-standing PITA.
A few years ago, I proposed a change like:
  https://mailman.alsa-project.org/pipermail/alsa-devel/2022-September/206631.html
but it didn't reach to agreement.  So I'm not 100% sure whether adding
here is the best choice, either.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-14 16:01 ` Takashi Iwai
@ 2026-09-14 16:29   ` Cezary Rojewski
  2026-09-14 16:44     ` Takashi Iwai
  0 siblings, 1 reply; 12+ messages in thread
From: Cezary Rojewski @ 2026-09-14 16:29 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: tiwai, broonie, perex, amade, linux-sound

On 9/14/2026 6:01 PM, Takashi Iwai wrote:
> On Mon, 14 Sep 2026 12:22:53 +0200,
> Cezary Rojewski wrote:
>>
>> Model selection allows for customization of codec behaviour and thus
>> dealing with various problems on very specific configurations. The
>> parameter already exists but is part of snd_hda_intel specifically.
>> Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
>> from it.
>>
>> The common place for all the bus drivers is snd_hda_codec. Add modelname
>> parameter there and honor it when initializing codec->modelname field.
>>
>> Link: https://github.com/thesofproject/linux/issues/5683
>> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
> 
> The handling of the model option is a very long-standing PITA.
> A few years ago, I proposed a change like:
>   https://mailman.alsa-project.org/pipermail/alsa-devel/2022-September/206631.html
> but it didn't reach to agreement.  So I'm not 100% sure whether adding
> here is the best choice, either.
Thank you for the link, Takashi.

IMHO patch presented here addresses the feedback. I too prefer
one-location-for-all approach. Also, I do believe having no option for
specifying the model is worse than choosing either of the approaches for
the model selection.

snd_hda_codec module is *everywhere* and given the param is an array, it
supports even very complicated scenarios when multiple HDAudio codecs
are engaged.

Kind regards,
Czarek

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-14 16:29   ` Cezary Rojewski
@ 2026-09-14 16:44     ` Takashi Iwai
  2026-09-14 17:58       ` Cezary Rojewski
  0 siblings, 1 reply; 12+ messages in thread
From: Takashi Iwai @ 2026-09-14 16:44 UTC (permalink / raw)
  To: Cezary Rojewski; +Cc: Takashi Iwai, tiwai, broonie, perex, amade, linux-sound

On Mon, 14 Sep 2026 18:29:19 +0200,
Cezary Rojewski wrote:
> 
> On 9/14/2026 6:01 PM, Takashi Iwai wrote:
> > On Mon, 14 Sep 2026 12:22:53 +0200,
> > Cezary Rojewski wrote:
> >>
> >> Model selection allows for customization of codec behaviour and thus
> >> dealing with various problems on very specific configurations. The
> >> parameter already exists but is part of snd_hda_intel specifically.
> >> Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
> >> from it.
> >>
> >> The common place for all the bus drivers is snd_hda_codec. Add modelname
> >> parameter there and honor it when initializing codec->modelname field.
> >>
> >> Link: https://github.com/thesofproject/linux/issues/5683
> >> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
> > 
> > The handling of the model option is a very long-standing PITA.
> > A few years ago, I proposed a change like:
> >   https://mailman.alsa-project.org/pipermail/alsa-devel/2022-September/206631.html
> > but it didn't reach to agreement.  So I'm not 100% sure whether adding
> > here is the best choice, either.
> Thank you for the link, Takashi.
> 
> IMHO patch presented here addresses the feedback. I too prefer
> one-location-for-all approach. Also, I do believe having no option for
> specifying the model is worse than choosing either of the approaches for
> the model selection.
> 
> snd_hda_codec module is *everywhere* and given the param is an array, it
> supports even very complicated scenarios when multiple HDAudio codecs
> are engaged.

The multi-codec is exactly the problem I've been seeing (of course in
addition to the lack of the option in ASoC HD-audio).  You'll have to
be very careful how to pass the option, and it can be even fragile.
That's why I hesitated to take this...


thanks,

Takashi

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-14 16:44     ` Takashi Iwai
@ 2026-09-14 17:58       ` Cezary Rojewski
  2026-09-15 11:14         ` Takashi Iwai
  0 siblings, 1 reply; 12+ messages in thread
From: Cezary Rojewski @ 2026-09-14 17:58 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: tiwai, broonie, perex, amade, linux-sound

On 9/14/2026 6:44 PM, Takashi Iwai wrote:

>>>> Model selection allows for customization of codec behaviour and thus
>>>> dealing with various problems on very specific configurations. The
>>>> parameter already exists but is part of snd_hda_intel specifically.
>>>> Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
>>>> from it.
>>>>
>>>> The common place for all the bus drivers is snd_hda_codec. Add modelname
>>>> parameter there and honor it when initializing codec->modelname field.
>>>>
>>>> Link: https://github.com/thesofproject/linux/issues/5683
>>>> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
>>>
>>> The handling of the model option is a very long-standing PITA.
>>> A few years ago, I proposed a change like:
>>>   https://mailman.alsa-project.org/pipermail/alsa-devel/2022-September/206631.html
>>> but it didn't reach to agreement.  So I'm not 100% sure whether adding
>>> here is the best choice, either.
>> Thank you for the link, Takashi.
>>
>> IMHO patch presented here addresses the feedback. I too prefer
>> one-location-for-all approach. Also, I do believe having no option for
>> specifying the model is worse than choosing either of the approaches for
>> the model selection.
>>
>> snd_hda_codec module is *everywhere* and given the param is an array, it
>> supports even very complicated scenarios when multiple HDAudio codecs
>> are engaged.
> 
> The multi-codec is exactly the problem I've been seeing (of course in
> addition to the lack of the option in ASoC HD-audio).  You'll have to
> be very careful how to pass the option, and it can be even fragile.
> That's why I hesitated to take this...
By multi-codec I also meant scenarios where one has 2+ codecs from one
vendor e.g.: realtek. Having non-array param e.g.: for
snd_hda_codec_realtek would not suffice.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-14 17:58       ` Cezary Rojewski
@ 2026-09-15 11:14         ` Takashi Iwai
  2026-09-15 11:26           ` Cezary Rojewski
  0 siblings, 1 reply; 12+ messages in thread
From: Takashi Iwai @ 2026-09-15 11:14 UTC (permalink / raw)
  To: Cezary Rojewski; +Cc: Takashi Iwai, tiwai, broonie, perex, amade, linux-sound

On Mon, 14 Sep 2026 19:58:05 +0200,
Cezary Rojewski wrote:
> 
> On 9/14/2026 6:44 PM, Takashi Iwai wrote:
> 
> >>>> Model selection allows for customization of codec behaviour and thus
> >>>> dealing with various problems on very specific configurations. The
> >>>> parameter already exists but is part of snd_hda_intel specifically.
> >>>> Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
> >>>> from it.
> >>>>
> >>>> The common place for all the bus drivers is snd_hda_codec. Add modelname
> >>>> parameter there and honor it when initializing codec->modelname field.
> >>>>
> >>>> Link: https://github.com/thesofproject/linux/issues/5683
> >>>> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
> >>>
> >>> The handling of the model option is a very long-standing PITA.
> >>> A few years ago, I proposed a change like:
> >>>   https://mailman.alsa-project.org/pipermail/alsa-devel/2022-September/206631.html
> >>> but it didn't reach to agreement.  So I'm not 100% sure whether adding
> >>> here is the best choice, either.
> >> Thank you for the link, Takashi.
> >>
> >> IMHO patch presented here addresses the feedback. I too prefer
> >> one-location-for-all approach. Also, I do believe having no option for
> >> specifying the model is worse than choosing either of the approaches for
> >> the model selection.
> >>
> >> snd_hda_codec module is *everywhere* and given the param is an array, it
> >> supports even very complicated scenarios when multiple HDAudio codecs
> >> are engaged.
> > 
> > The multi-codec is exactly the problem I've been seeing (of course in
> > addition to the lack of the option in ASoC HD-audio).  You'll have to
> > be very careful how to pass the option, and it can be even fragile.
> > That's why I hesitated to take this...
> By multi-codec I also meant scenarios where one has 2+ codecs from one
> vendor e.g.: realtek. Having non-array param e.g.: for
> snd_hda_codec_realtek would not suffice.

But those 2+ codecs are for the single device, right?  (e.g. driving
multiple channels with multiple codecs, but all of them are a single
device for user.)

In theory, it can be a hotplug device, and in that case, we may have
two device configurations for multiple codecs of the same codec chip.
But, that's an exception, and I wonder whether we should care for the
model option that is mainly used for debugging or workaround.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-15 11:14         ` Takashi Iwai
@ 2026-09-15 11:26           ` Cezary Rojewski
  2026-09-15 16:02             ` Takashi Iwai
  0 siblings, 1 reply; 12+ messages in thread
From: Cezary Rojewski @ 2026-09-15 11:26 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: tiwai, broonie, perex, amade, linux-sound

On 9/15/2026 1:14 PM, Takashi Iwai wrote:
> On Mon, 14 Sep 2026 19:58:05 +0200,
> Cezary Rojewski wrote:
>>
>> On 9/14/2026 6:44 PM, Takashi Iwai wrote:
>>
>>>>>> Model selection allows for customization of codec behaviour and thus
>>>>>> dealing with various problems on very specific configurations. The
>>>>>> parameter already exists but is part of snd_hda_intel specifically.
>>>>>> Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
>>>>>> from it.
>>>>>>
>>>>>> The common place for all the bus drivers is snd_hda_codec. Add modelname
>>>>>> parameter there and honor it when initializing codec->modelname field.
>>>>>>
>>>>>> Link: https://github.com/thesofproject/linux/issues/5683
>>>>>> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
>>>>>
>>>>> The handling of the model option is a very long-standing PITA.
>>>>> A few years ago, I proposed a change like:
>>>>>   https://mailman.alsa-project.org/pipermail/alsa-devel/2022-September/206631.html
>>>>> but it didn't reach to agreement.  So I'm not 100% sure whether adding
>>>>> here is the best choice, either.
>>>> Thank you for the link, Takashi.
>>>>
>>>> IMHO patch presented here addresses the feedback. I too prefer
>>>> one-location-for-all approach. Also, I do believe having no option for
>>>> specifying the model is worse than choosing either of the approaches for
>>>> the model selection.
>>>>
>>>> snd_hda_codec module is *everywhere* and given the param is an array, it
>>>> supports even very complicated scenarios when multiple HDAudio codecs
>>>> are engaged.
>>>
>>> The multi-codec is exactly the problem I've been seeing (of course in
>>> addition to the lack of the option in ASoC HD-audio).  You'll have to
>>> be very careful how to pass the option, and it can be even fragile.
>>> That's why I hesitated to take this...
>> By multi-codec I also meant scenarios where one has 2+ codecs from one
>> vendor e.g.: realtek. Having non-array param e.g.: for
>> snd_hda_codec_realtek would not suffice.
> 
> But those 2+ codecs are for the single device, right?  (e.g. driving
> multiple channels with multiple codecs, but all of them are a single
> device for user.)
> 
> In theory, it can be a hotplug device, and in that case, we may have
> two device configurations for multiple codecs of the same codec chip.
> But, that's an exception, and I wonder whether we should care for the
> model option that is mainly used for debugging or workaround.
On reference setups we do anything. 2+ standalone codecs on HDAudio bus
in our lab is not some kind of sorcery. Obviously right now we
workaround the kernel by applying a bunch of patches. But adding a
module param (of type array) covers both: any userspace and any
reference scenario.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-15 11:26           ` Cezary Rojewski
@ 2026-09-15 16:02             ` Takashi Iwai
  2026-09-16  8:29               ` Cezary Rojewski
  0 siblings, 1 reply; 12+ messages in thread
From: Takashi Iwai @ 2026-09-15 16:02 UTC (permalink / raw)
  To: Cezary Rojewski; +Cc: Takashi Iwai, tiwai, broonie, perex, amade, linux-sound

On Tue, 15 Sep 2026 13:26:11 +0200,
Cezary Rojewski wrote:
> 
> On 9/15/2026 1:14 PM, Takashi Iwai wrote:
> > On Mon, 14 Sep 2026 19:58:05 +0200,
> > Cezary Rojewski wrote:
> >>
> >> On 9/14/2026 6:44 PM, Takashi Iwai wrote:
> >>
> >>>>>> Model selection allows for customization of codec behaviour and thus
> >>>>>> dealing with various problems on very specific configurations. The
> >>>>>> parameter already exists but is part of snd_hda_intel specifically.
> >>>>>> Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
> >>>>>> from it.
> >>>>>>
> >>>>>> The common place for all the bus drivers is snd_hda_codec. Add modelname
> >>>>>> parameter there and honor it when initializing codec->modelname field.
> >>>>>>
> >>>>>> Link: https://github.com/thesofproject/linux/issues/5683
> >>>>>> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
> >>>>>
> >>>>> The handling of the model option is a very long-standing PITA.
> >>>>> A few years ago, I proposed a change like:
> >>>>>   https://mailman.alsa-project.org/pipermail/alsa-devel/2022-September/206631.html
> >>>>> but it didn't reach to agreement.  So I'm not 100% sure whether adding
> >>>>> here is the best choice, either.
> >>>> Thank you for the link, Takashi.
> >>>>
> >>>> IMHO patch presented here addresses the feedback. I too prefer
> >>>> one-location-for-all approach. Also, I do believe having no option for
> >>>> specifying the model is worse than choosing either of the approaches for
> >>>> the model selection.
> >>>>
> >>>> snd_hda_codec module is *everywhere* and given the param is an array, it
> >>>> supports even very complicated scenarios when multiple HDAudio codecs
> >>>> are engaged.
> >>>
> >>> The multi-codec is exactly the problem I've been seeing (of course in
> >>> addition to the lack of the option in ASoC HD-audio).  You'll have to
> >>> be very careful how to pass the option, and it can be even fragile.
> >>> That's why I hesitated to take this...
> >> By multi-codec I also meant scenarios where one has 2+ codecs from one
> >> vendor e.g.: realtek. Having non-array param e.g.: for
> >> snd_hda_codec_realtek would not suffice.
> > 
> > But those 2+ codecs are for the single device, right?  (e.g. driving
> > multiple channels with multiple codecs, but all of them are a single
> > device for user.)
> > 
> > In theory, it can be a hotplug device, and in that case, we may have
> > two device configurations for multiple codecs of the same codec chip.
> > But, that's an exception, and I wonder whether we should care for the
> > model option that is mainly used for debugging or workaround.
> On reference setups we do anything. 2+ standalone codecs on HDAudio bus
> in our lab is not some kind of sorcery. Obviously right now we
> workaround the kernel by applying a bunch of patches. But adding a
> module param (of type array) covers both: any userspace and any
> reference scenario.

Well, using an array itself isn't a big problem.  The codec module
option could be an array, too.

The problem I've been seeing is, however, that it's cumbersome to pass
the arrays correctly if there are multiple devices.  Currently it
depends on the controller probe order, and that's often unintuitive
for users.  This problem still remains with your proposed change --
even more confusing because now there are multiple entries but
digested differently (imagine a combination of hda-intel and SOF).

So, obviously, I haven't found any good solution yet...


thanks,

Takashi

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-15 16:02             ` Takashi Iwai
@ 2026-09-16  8:29               ` Cezary Rojewski
  2026-09-16 10:57                 ` Takashi Iwai
  0 siblings, 1 reply; 12+ messages in thread
From: Cezary Rojewski @ 2026-09-16  8:29 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: tiwai, broonie, perex, amade, linux-sound

On 9/15/2026 6:02 PM, Takashi Iwai wrote:

>>>>>>>> Model selection allows for customization of codec behaviour and thus
>>>>>>>> dealing with various problems on very specific configurations. The
>>>>>>>> parameter already exists but is part of snd_hda_intel specifically.
>>>>>>>> Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
>>>>>>>> from it.
>>>>>>>>
>>>>>>>> The common place for all the bus drivers is snd_hda_codec. Add modelname
>>>>>>>> parameter there and honor it when initializing codec->modelname field.
>>>>>>>>
>>>>>>>> Link: https://github.com/thesofproject/linux/issues/5683
>>>>>>>> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
>>>>>>>
>>>>>>> The handling of the model option is a very long-standing PITA.
>>>>>>> A few years ago, I proposed a change like:
>>>>>>>   https://mailman.alsa-project.org/pipermail/alsa-devel/2022-September/206631.html
>>>>>>> but it didn't reach to agreement.  So I'm not 100% sure whether adding
>>>>>>> here is the best choice, either.
>>>>>> Thank you for the link, Takashi.
>>>>>>
>>>>>> IMHO patch presented here addresses the feedback. I too prefer
>>>>>> one-location-for-all approach. Also, I do believe having no option for
>>>>>> specifying the model is worse than choosing either of the approaches for
>>>>>> the model selection.
>>>>>>
>>>>>> snd_hda_codec module is *everywhere* and given the param is an array, it
>>>>>> supports even very complicated scenarios when multiple HDAudio codecs
>>>>>> are engaged.
>>>>>
>>>>> The multi-codec is exactly the problem I've been seeing (of course in
>>>>> addition to the lack of the option in ASoC HD-audio).  You'll have to
>>>>> be very careful how to pass the option, and it can be even fragile.
>>>>> That's why I hesitated to take this...
>>>> By multi-codec I also meant scenarios where one has 2+ codecs from one
>>>> vendor e.g.: realtek. Having non-array param e.g.: for
>>>> snd_hda_codec_realtek would not suffice.
>>>
>>> But those 2+ codecs are for the single device, right?  (e.g. driving
>>> multiple channels with multiple codecs, but all of them are a single
>>> device for user.)
>>>
>>> In theory, it can be a hotplug device, and in that case, we may have
>>> two device configurations for multiple codecs of the same codec chip.
>>> But, that's an exception, and I wonder whether we should care for the
>>> model option that is mainly used for debugging or workaround.
>> On reference setups we do anything. 2+ standalone codecs on HDAudio bus
>> in our lab is not some kind of sorcery. Obviously right now we
>> workaround the kernel by applying a bunch of patches. But adding a
>> module param (of type array) covers both: any userspace and any
>> reference scenario.
> 
> Well, using an array itself isn't a big problem.  The codec module
> option could be an array, too.
> 
> The problem I've been seeing is, however, that it's cumbersome to pass
> the arrays correctly if there are multiple devices.  Currently it
> depends on the controller probe order, and that's often unintuitive
> for users.  This problem still remains with your proposed change --
> even more confusing because now there are multiple entries but
> digested differently (imagine a combination of hda-intel and SOF).
> 
> So, obviously, I haven't found any good solution yet...
snd_hda_codec is fetched with SND_HDA kconfig which is always on when
SND_HDA_CORE is selected - this is true for both DSP drivers, avs-driver
and the sof-driver as both depend on SND_HDA_EXT_CORE:

	SND_HDA <- SND_HDA_CORE <- SND_HDA_EXT_CORE

Depending on dsp_driver, not selected drivers will quit probe() early
before the code gets to model assignment part.

And thus I'm not sure what you meant by "combination of hda-intel and
SOF".  At the same time not quite sure about "controller probe order"
issue either - bus->modelname and codec's model are two different
things.  It's likely I've missed something and if so, I'd greatly
appreciate additional input.

Kind regards,
Czarek

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-16  8:29               ` Cezary Rojewski
@ 2026-09-16 10:57                 ` Takashi Iwai
  2026-09-18  8:33                   ` Cezary Rojewski
  0 siblings, 1 reply; 12+ messages in thread
From: Takashi Iwai @ 2026-09-16 10:57 UTC (permalink / raw)
  To: Cezary Rojewski; +Cc: Takashi Iwai, tiwai, broonie, perex, amade, linux-sound

On Wed, 16 Sep 2026 10:29:49 +0200,
Cezary Rojewski wrote:
> 
> On 9/15/2026 6:02 PM, Takashi Iwai wrote:
> 
> >>>>>>>> Model selection allows for customization of codec behaviour and thus
> >>>>>>>> dealing with various problems on very specific configurations. The
> >>>>>>>> parameter already exists but is part of snd_hda_intel specifically.
> >>>>>>>> Non-Intel HDAudio controllers and DSP-capable drivers cannot benefit
> >>>>>>>> from it.
> >>>>>>>>
> >>>>>>>> The common place for all the bus drivers is snd_hda_codec. Add modelname
> >>>>>>>> parameter there and honor it when initializing codec->modelname field.
> >>>>>>>>
> >>>>>>>> Link: https://github.com/thesofproject/linux/issues/5683
> >>>>>>>> Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
> >>>>>>>
> >>>>>>> The handling of the model option is a very long-standing PITA.
> >>>>>>> A few years ago, I proposed a change like:
> >>>>>>>   https://mailman.alsa-project.org/pipermail/alsa-devel/2022-September/206631.html
> >>>>>>> but it didn't reach to agreement.  So I'm not 100% sure whether adding
> >>>>>>> here is the best choice, either.
> >>>>>> Thank you for the link, Takashi.
> >>>>>>
> >>>>>> IMHO patch presented here addresses the feedback. I too prefer
> >>>>>> one-location-for-all approach. Also, I do believe having no option for
> >>>>>> specifying the model is worse than choosing either of the approaches for
> >>>>>> the model selection.
> >>>>>>
> >>>>>> snd_hda_codec module is *everywhere* and given the param is an array, it
> >>>>>> supports even very complicated scenarios when multiple HDAudio codecs
> >>>>>> are engaged.
> >>>>>
> >>>>> The multi-codec is exactly the problem I've been seeing (of course in
> >>>>> addition to the lack of the option in ASoC HD-audio).  You'll have to
> >>>>> be very careful how to pass the option, and it can be even fragile.
> >>>>> That's why I hesitated to take this...
> >>>> By multi-codec I also meant scenarios where one has 2+ codecs from one
> >>>> vendor e.g.: realtek. Having non-array param e.g.: for
> >>>> snd_hda_codec_realtek would not suffice.
> >>>
> >>> But those 2+ codecs are for the single device, right?  (e.g. driving
> >>> multiple channels with multiple codecs, but all of them are a single
> >>> device for user.)
> >>>
> >>> In theory, it can be a hotplug device, and in that case, we may have
> >>> two device configurations for multiple codecs of the same codec chip.
> >>> But, that's an exception, and I wonder whether we should care for the
> >>> model option that is mainly used for debugging or workaround.
> >> On reference setups we do anything. 2+ standalone codecs on HDAudio bus
> >> in our lab is not some kind of sorcery. Obviously right now we
> >> workaround the kernel by applying a bunch of patches. But adding a
> >> module param (of type array) covers both: any userspace and any
> >> reference scenario.
> > 
> > Well, using an array itself isn't a big problem.  The codec module
> > option could be an array, too.
> > 
> > The problem I've been seeing is, however, that it's cumbersome to pass
> > the arrays correctly if there are multiple devices.  Currently it
> > depends on the controller probe order, and that's often unintuitive
> > for users.  This problem still remains with your proposed change --
> > even more confusing because now there are multiple entries but
> > digested differently (imagine a combination of hda-intel and SOF).
> > 
> > So, obviously, I haven't found any good solution yet...
> snd_hda_codec is fetched with SND_HDA kconfig which is always on when
> SND_HDA_CORE is selected - this is true for both DSP drivers, avs-driver
> and the sof-driver as both depend on SND_HDA_EXT_CORE:
> 
> 	SND_HDA <- SND_HDA_CORE <- SND_HDA_EXT_CORE
> 
> Depending on dsp_driver, not selected drivers will quit probe() early
> before the code gets to model assignment part.
> 
> And thus I'm not sure what you meant by "combination of hda-intel and
> SOF".  At the same time not quite sure about "controller probe order"
> issue either - bus->modelname and codec's model are two different
> things.  It's likely I've missed something and if so, I'd greatly
> appreciate additional input.

Basically the model option is passed per controller, not per codec.

So, if you have two HDMI controllers (e.g. built-in audio and HDMI on
d-GPU), it's common that they are bound to different drivers (ASoC and
hda-intel) on the same machine.
Now when you pass the model option to snd-hda-intel, only the HDMI
controller takes it.  Meanwhile, if you pass the same model option to
snd-hda-codec, it's taken from both, and the order matters, and you'd
have to be very careful at which position you'd have to put.
That is, the same model option, but they have different values.


Takashi

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-16 10:57                 ` Takashi Iwai
@ 2026-09-18  8:33                   ` Cezary Rojewski
  2026-09-28 11:02                     ` Takashi Iwai
  0 siblings, 1 reply; 12+ messages in thread
From: Cezary Rojewski @ 2026-09-18  8:33 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: tiwai, broonie, perex, amade, linux-sound

On 9/16/2026 12:57 PM, Takashi Iwai wrote:

>>>>> In theory, it can be a hotplug device, and in that case, we may have
>>>>> two device configurations for multiple codecs of the same codec chip.
>>>>> But, that's an exception, and I wonder whether we should care for the
>>>>> model option that is mainly used for debugging or workaround.
>>>> On reference setups we do anything. 2+ standalone codecs on HDAudio bus
>>>> in our lab is not some kind of sorcery. Obviously right now we
>>>> workaround the kernel by applying a bunch of patches. But adding a
>>>> module param (of type array) covers both: any userspace and any
>>>> reference scenario.
>>>
>>> Well, using an array itself isn't a big problem.  The codec module
>>> option could be an array, too.
>>>
>>> The problem I've been seeing is, however, that it's cumbersome to pass
>>> the arrays correctly if there are multiple devices.  Currently it
>>> depends on the controller probe order, and that's often unintuitive
>>> for users.  This problem still remains with your proposed change --
>>> even more confusing because now there are multiple entries but
>>> digested differently (imagine a combination of hda-intel and SOF).
>>>
>>> So, obviously, I haven't found any good solution yet...
>> snd_hda_codec is fetched with SND_HDA kconfig which is always on when
>> SND_HDA_CORE is selected - this is true for both DSP drivers, avs-driver
>> and the sof-driver as both depend on SND_HDA_EXT_CORE:
>>
>> 	SND_HDA <- SND_HDA_CORE <- SND_HDA_EXT_CORE
>>
>> Depending on dsp_driver, not selected drivers will quit probe() early
>> before the code gets to model assignment part.
>>
>> And thus I'm not sure what you meant by "combination of hda-intel and
>> SOF".  At the same time not quite sure about "controller probe order"
>> issue either - bus->modelname and codec's model are two different
>> things.  It's likely I've missed something and if so, I'd greatly
>> appreciate additional input.
> 
> Basically the model option is passed per controller, not per codec.
> 
> So, if you have two HDMI controllers (e.g. built-in audio and HDMI on
> d-GPU), it's common that they are bound to different drivers (ASoC and
> hda-intel) on the same machine.
> Now when you pass the model option to snd-hda-intel, only the HDMI
> controller takes it.  Meanwhile, if you pass the same model option to
> snd-hda-codec, it's taken from both, and the order matters, and you'd
> have to be very careful at which position you'd have to put.
> That is, the same model option, but they have different values.

Marvelous! Thank you for the example.  I was typically using a FPGA for
multi-bus tests, oh well..
In such case I do not see us avoiding the bus' modelname when specifying
the quirks e.g.:

	// array param, [SND_MAX_CARDS]
	model=my_bus_xyz:my_codec_abc,my_bus_123:my_codec_890

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH] ALSA: hda: Allow for codec model selection with module param
  2026-09-18  8:33                   ` Cezary Rojewski
@ 2026-09-28 11:02                     ` Takashi Iwai
  0 siblings, 0 replies; 12+ messages in thread
From: Takashi Iwai @ 2026-09-28 11:02 UTC (permalink / raw)
  To: Cezary Rojewski; +Cc: Takashi Iwai, tiwai, broonie, perex, amade, linux-sound

On Fri, 18 Sep 2026 10:33:00 +0200,
Cezary Rojewski wrote:
> 
> On 9/16/2026 12:57 PM, Takashi Iwai wrote:
> 
> >>>>> In theory, it can be a hotplug device, and in that case, we may have
> >>>>> two device configurations for multiple codecs of the same codec chip.
> >>>>> But, that's an exception, and I wonder whether we should care for the
> >>>>> model option that is mainly used for debugging or workaround.
> >>>> On reference setups we do anything. 2+ standalone codecs on HDAudio bus
> >>>> in our lab is not some kind of sorcery. Obviously right now we
> >>>> workaround the kernel by applying a bunch of patches. But adding a
> >>>> module param (of type array) covers both: any userspace and any
> >>>> reference scenario.
> >>>
> >>> Well, using an array itself isn't a big problem.  The codec module
> >>> option could be an array, too.
> >>>
> >>> The problem I've been seeing is, however, that it's cumbersome to pass
> >>> the arrays correctly if there are multiple devices.  Currently it
> >>> depends on the controller probe order, and that's often unintuitive
> >>> for users.  This problem still remains with your proposed change --
> >>> even more confusing because now there are multiple entries but
> >>> digested differently (imagine a combination of hda-intel and SOF).
> >>>
> >>> So, obviously, I haven't found any good solution yet...
> >> snd_hda_codec is fetched with SND_HDA kconfig which is always on when
> >> SND_HDA_CORE is selected - this is true for both DSP drivers, avs-driver
> >> and the sof-driver as both depend on SND_HDA_EXT_CORE:
> >>
> >> 	SND_HDA <- SND_HDA_CORE <- SND_HDA_EXT_CORE
> >>
> >> Depending on dsp_driver, not selected drivers will quit probe() early
> >> before the code gets to model assignment part.
> >>
> >> And thus I'm not sure what you meant by "combination of hda-intel and
> >> SOF".  At the same time not quite sure about "controller probe order"
> >> issue either - bus->modelname and codec's model are two different
> >> things.  It's likely I've missed something and if so, I'd greatly
> >> appreciate additional input.
> > 
> > Basically the model option is passed per controller, not per codec.
> > 
> > So, if you have two HDMI controllers (e.g. built-in audio and HDMI on
> > d-GPU), it's common that they are bound to different drivers (ASoC and
> > hda-intel) on the same machine.
> > Now when you pass the model option to snd-hda-intel, only the HDMI
> > controller takes it.  Meanwhile, if you pass the same model option to
> > snd-hda-codec, it's taken from both, and the order matters, and you'd
> > have to be very careful at which position you'd have to put.
> > That is, the same model option, but they have different values.
> 
> Marvelous! Thank you for the example.  I was typically using a FPGA for
> multi-bus tests, oh well..
> In such case I do not see us avoiding the bus' modelname when specifying
> the quirks e.g.:
> 
> 	// array param, [SND_MAX_CARDS]
> 	model=my_bus_xyz:my_codec_abc,my_bus_123:my_codec_890

There is already a handling with a colon in the model option as an
alias, so this syntax would conflict.  I think it can be something
with '@', e.g. model=something@bus. (Or other way round).
It's still an open question how the bus should be represented, though.

And, there can be the cases where you want to specify a different
quirk per codec address for multiple codecs.  This would need an
extension of the model string syntax, too.

So, overall, we need some redesign, I suppose.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-09-28 11:02 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-14 10:22 [PATCH] ALSA: hda: Allow for codec model selection with module param Cezary Rojewski
2026-09-14 16:01 ` Takashi Iwai
2026-09-14 16:29   ` Cezary Rojewski
2026-09-14 16:44     ` Takashi Iwai
2026-09-14 17:58       ` Cezary Rojewski
2026-09-15 11:14         ` Takashi Iwai
2026-09-15 11:26           ` Cezary Rojewski
2026-09-15 16:02             ` Takashi Iwai
2026-09-16  8:29               ` Cezary Rojewski
2026-09-16 10:57                 ` Takashi Iwai
2026-09-18  8:33                   ` Cezary Rojewski
2026-09-28 11:02                     ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox