All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS UX3405CA
@ 2026-08-01 23:00 Gemayel Lira
  2026-08-06  9:46 ` Takashi Iwai
  2026-08-15 21:49 ` [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when ACPI leaves GPIO1 unused Gemayel Lira
  0 siblings, 2 replies; 8+ messages in thread
From: Gemayel Lira @ 2026-08-01 23:00 UTC (permalink / raw)
  To: alsa-devel; +Cc: sbinding, tiwai

[-- Attachment #1: Type: text/plain, Size: 703 bytes --]

The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) has internal CS35L41
amplifiers, but was using the missing_speaker_id_gpio2 fallback entry.
This caused the right speaker channel to bind with VSPK voltage switch
disabled
(VSPK: 0), leading to a volume drop ~1 second after starting playback due to
power imbalance protection.

Add an explicit entry for 10431A63 in cs35l41_config_table with internal
boost
type, 4500mA peak current, and switch its model mapping to
generic_dsd_config.
This resolves the volume drop issue and enables proper internal boost for
both channels.

Pull Request on SOF Project:
https://github.com/thesofproject/linux/pull/5866

Signed-off-by: Gemayel Lira <gemayellira@gmail.com>

[-- Attachment #2: 0001-ALSA-hda-cs35l41-Add-DSD-property-override-for-ASUS-UX3405CA.patch --]
[-- Type: text/x-patch, Size: 2483 bytes --]

From 10431A6300000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Gemayel Lira <gemayellira@gmail.com>
Date: Sat, 1 Aug 2026 19:15:00 -0300
Subject: [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS UX3405CA

The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) has internal CS35L41
amplifiers, but was using the `missing_speaker_id_gpio2` fallback entry.
This caused the right speaker channel to bind with VSPK voltage switch disabled
(VSPK: 0), leading to a volume drop ~1 second after starting playback due to
power imbalance protection.

Add an explicit entry for 10431A63 in cs35l41_config_table with internal boost
type, 4500mA peak current, and switch its model mapping to `generic_dsd_config`.
This resolves the volume drop issue and enables proper internal boost for both channels.

Signed-off-by: Gemayel Lira <gemayellira@gmail.com>
---
 sound/hda/codecs/side-codecs/cs35l41_hda_property.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
index 416d7bf..1cf12f8 100644
--- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
+++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
@@ -104,6 +104,7 @@ static const struct cs35l41_config cs35l41_config_table[] = {
 	{ "104317F3", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
 	{ "10431863", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 },
 	{ "104318D3", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 },
+	{ "10431A63", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, -1, 2, -1, 1000, 4500, 24 },
 	{ "10431A83", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
 	{ "10431B93", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 },
 	{ "10431C9F", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 },
@@ -530,7 +531,7 @@ static const struct cs35l41_prop_model cs35l41_prop_model_table[] = {
 	{ "CSC3551", "104317F3", generic_dsd_config },
 	{ "CSC3551", "10431863", generic_dsd_config },
 	{ "CSC3551", "104318D3", generic_dsd_config },
-	{ "CSC3551", "10431A63", missing_speaker_id_gpio2 },
+	{ "CSC3551", "10431A63", generic_dsd_config },
 	{ "CSC3551", "10431A83", generic_dsd_config },
 	{ "CSC3551", "10431B93", generic_dsd_config },
 	{ "CSC3551", "10431C9F", generic_dsd_config },
-- 
2.43.0

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

* Re: [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS UX3405CA
  2026-08-01 23:00 [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS UX3405CA Gemayel Lira
@ 2026-08-06  9:46 ` Takashi Iwai
  2026-08-06 13:38   ` Stefan Binding (Opensource)
  2026-08-15 21:49 ` [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when ACPI leaves GPIO1 unused Gemayel Lira
  1 sibling, 1 reply; 8+ messages in thread
From: Takashi Iwai @ 2026-08-06  9:46 UTC (permalink / raw)
  To: sbinding; +Cc: Gemayel Lira, alsa-devel

On Sun, 02 Aug 2026 01:00:22 +0200,
Gemayel Lira wrote:
> 
> 
> The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) has internal CS35L41
> amplifiers, but was using the missing_speaker_id_gpio2 fallback entry.
> This caused the right speaker channel to bind with VSPK voltage switch
> disabled
> (VSPK: 0), leading to a volume drop ~1 second after starting playback due to
> power imbalance protection.
> 
> Add an explicit entry for 10431A63 in cs35l41_config_table with internal boost
> type, 4500mA peak current, and switch its model mapping to generic_dsd_config.
> This resolves the volume drop issue and enables proper internal boost for both
> channels.
> 
> Pull Request on SOF Project: https://github.com/thesofproject/linux/pull/5866
> 
> Signed-off-by: Gemayel Lira <gemayellira@gmail.com>
> 
> From 10431A6300000000000000000000000000000000 Mon Sep 17 00:00:00 2001
> From: Gemayel Lira <gemayellira@gmail.com>
> Date: Sat, 1 Aug 2026 19:15:00 -0300
> Subject: [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS UX3405CA
> 
> The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) has internal CS35L41
> amplifiers, but was using the `missing_speaker_id_gpio2` fallback entry.
> This caused the right speaker channel to bind with VSPK voltage switch disabled
> (VSPK: 0), leading to a volume drop ~1 second after starting playback due to
> power imbalance protection.
> 
> Add an explicit entry for 10431A63 in cs35l41_config_table with internal boost
> type, 4500mA peak current, and switch its model mapping to `generic_dsd_config`.
> This resolves the volume drop issue and enables proper internal boost for both channels.
> 
> Signed-off-by: Gemayel Lira <gemayellira@gmail.com>

Stefan, is this also covered in your side?
Or shall we just take this?


BTW, Gemayel, at the next time, please submit to
linux-sound@vger.kernel.org.  It's the place for kernel patches, while
alsa-devel ML is mostly for only user-space stuff.


thanks,

Takashi


> ---
>  sound/hda/codecs/side-codecs/cs35l41_hda_property.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> index 416d7bf..1cf12f8 100644
> --- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> +++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> @@ -104,6 +104,7 @@ static const struct cs35l41_config cs35l41_config_table[] = {
>  	{ "104317F3", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
>  	{ "10431863", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 },
>  	{ "104318D3", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 },
> +	{ "10431A63", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, -1, 2, -1, 1000, 4500, 24 },
>  	{ "10431A83", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
>  	{ "10431B93", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 },
>  	{ "10431C9F", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 },
> @@ -530,7 +531,7 @@ static const struct cs35l41_prop_model cs35l41_prop_model_table[] = {
>  	{ "CSC3551", "104317F3", generic_dsd_config },
>  	{ "CSC3551", "10431863", generic_dsd_config },
>  	{ "CSC3551", "104318D3", generic_dsd_config },
> -	{ "CSC3551", "10431A63", missing_speaker_id_gpio2 },
> +	{ "CSC3551", "10431A63", generic_dsd_config },
>  	{ "CSC3551", "10431A83", generic_dsd_config },
>  	{ "CSC3551", "10431B93", generic_dsd_config },
>  	{ "CSC3551", "10431C9F", generic_dsd_config },
> -- 
> 2.43.0

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

* RE: [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS UX3405CA
  2026-08-06  9:46 ` Takashi Iwai
@ 2026-08-06 13:38   ` Stefan Binding (Opensource)
  2026-08-06 13:46     ` Takashi Iwai
  0 siblings, 1 reply; 8+ messages in thread
From: Stefan Binding (Opensource) @ 2026-08-06 13:38 UTC (permalink / raw)
  To: 'Takashi Iwai'; +Cc: 'Gemayel Lira', alsa-devel

Hi Takashi,

Unfortunately, this does not look like an ACPI issue.
This laptop is an external boost laptop, but this patch is changing the
properties to redefine it as internal boost.
This could cause issues with the amplifiers.

It looks like speaker protection is kicking in after 1s, but I don't know
why.
I recommend the OP create a BugZilla so we can investigate this separately.
I also recommend we do not take this patch, as it might damage this laptop.

Thanks,
Stefan

> -----Original Message-----
> From: Takashi Iwai <tiwai@suse.de>
> Sent: Thursday, August 6, 2026 10:46 AM
> To: sbinding@opensource.cirrus.com
> Cc: Gemayel Lira <gemayellira@gmail.com>; alsa-devel@alsa-project.org
> Subject: Re: [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS
> UX3405CA
> 
> On Sun, 02 Aug 2026 01:00:22 +0200,
> Gemayel Lira wrote:
> >
> >
> > The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) has internal CS35L41
> > amplifiers, but was using the missing_speaker_id_gpio2 fallback entry.
> > This caused the right speaker channel to bind with VSPK voltage switch
> > disabled
> > (VSPK: 0), leading to a volume drop ~1 second after starting playback
> > due to power imbalance protection.
> >
> > Add an explicit entry for 10431A63 in cs35l41_config_table with
> > internal boost type, 4500mA peak current, and switch its model mapping
to
> generic_dsd_config.
> > This resolves the volume drop issue and enables proper internal boost
> > for both channels.
> >
> > Pull Request on SOF Project:
> > https://github.com/thesofproject/linux/pull/5866
> >
> > Signed-off-by: Gemayel Lira <gemayellira@gmail.com>
> >
> > From 10431A6300000000000000000000000000000000 Mon Sep 17
> 00:00:00 2001
> > From: Gemayel Lira <gemayellira@gmail.com>
> > Date: Sat, 1 Aug 2026 19:15:00 -0300
> > Subject: [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS
> > UX3405CA
> >
> > The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) has internal CS35L41
> > amplifiers, but was using the `missing_speaker_id_gpio2` fallback entry.
> > This caused the right speaker channel to bind with VSPK voltage switch
> > disabled
> > (VSPK: 0), leading to a volume drop ~1 second after starting playback
> > due to power imbalance protection.
> >
> > Add an explicit entry for 10431A63 in cs35l41_config_table with
> > internal boost type, 4500mA peak current, and switch its model mapping
to
> `generic_dsd_config`.
> > This resolves the volume drop issue and enables proper internal boost
for
> both channels.
> >
> > Signed-off-by: Gemayel Lira <gemayellira@gmail.com>
> 
> Stefan, is this also covered in your side?
> Or shall we just take this?
> 
> 
> BTW, Gemayel, at the next time, please submit to linux-
> sound@vger.kernel.org.  It's the place for kernel patches, while
alsa-devel ML is
> mostly for only user-space stuff.
> 
> 
> thanks,
> 
> Takashi
> 
> 
> > ---
> >  sound/hda/codecs/side-codecs/cs35l41_hda_property.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > index 416d7bf..1cf12f8 100644
> > --- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > +++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > @@ -104,6 +104,7 @@ static const struct cs35l41_config
> cs35l41_config_table[] = {
> >  	{ "104317F3", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> 0, 1, -1, 1000, 4500, 24 },
> >  	{ "10431863", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> 1, 2, 0, 1000, 4500, 24 },
> >  	{ "104318D3", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> 0,
> > 1, -1, 0, 0, 0 },
> > +	{ "10431A63", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> > +-1, 2, -1, 1000, 4500, 24 },
> >  	{ "10431A83", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> 0, 1, -1, 1000, 4500, 24 },
> >  	{ "10431B93", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> 1, 2, 0, 1000, 4500, 24 },
> >  	{ "10431C9F", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> 1,
> > 2, 0, 1000, 4500, 24 }, @@ -530,7 +531,7 @@ static const struct
> cs35l41_prop_model cs35l41_prop_model_table[] = {
> >  	{ "CSC3551", "104317F3", generic_dsd_config },
> >  	{ "CSC3551", "10431863", generic_dsd_config },
> >  	{ "CSC3551", "104318D3", generic_dsd_config },
> > -	{ "CSC3551", "10431A63", missing_speaker_id_gpio2 },
> > +	{ "CSC3551", "10431A63", generic_dsd_config },
> >  	{ "CSC3551", "10431A83", generic_dsd_config },
> >  	{ "CSC3551", "10431B93", generic_dsd_config },
> >  	{ "CSC3551", "10431C9F", generic_dsd_config },
> > --
> > 2.43.0


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

* Re: [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS UX3405CA
  2026-08-06 13:38   ` Stefan Binding (Opensource)
@ 2026-08-06 13:46     ` Takashi Iwai
  0 siblings, 0 replies; 8+ messages in thread
From: Takashi Iwai @ 2026-08-06 13:46 UTC (permalink / raw)
  To: Stefan Binding (Opensource); +Cc: 'Gemayel Lira', alsa-devel

On Thu, 06 Aug 2026 15:38:39 +0200,
Stefan Binding (Opensource) wrote:
> 
> Hi Takashi,
> 
> Unfortunately, this does not look like an ACPI issue.
> This laptop is an external boost laptop, but this patch is changing the
> properties to redefine it as internal boost.
> This could cause issues with the amplifiers.
> 
> It looks like speaker protection is kicking in after 1s, but I don't know
> why.
> I recommend the OP create a BugZilla so we can investigate this separately.
> I also recommend we do not take this patch, as it might damage this laptop.

OK, thanks for confirmation, it's an important information!


Takashi

> 
> Thanks,
> Stefan
> 
> > -----Original Message-----
> > From: Takashi Iwai <tiwai@suse.de>
> > Sent: Thursday, August 6, 2026 10:46 AM
> > To: sbinding@opensource.cirrus.com
> > Cc: Gemayel Lira <gemayellira@gmail.com>; alsa-devel@alsa-project.org
> > Subject: Re: [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS
> > UX3405CA
> > 
> > On Sun, 02 Aug 2026 01:00:22 +0200,
> > Gemayel Lira wrote:
> > >
> > >
> > > The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) has internal CS35L41
> > > amplifiers, but was using the missing_speaker_id_gpio2 fallback entry.
> > > This caused the right speaker channel to bind with VSPK voltage switch
> > > disabled
> > > (VSPK: 0), leading to a volume drop ~1 second after starting playback
> > > due to power imbalance protection.
> > >
> > > Add an explicit entry for 10431A63 in cs35l41_config_table with
> > > internal boost type, 4500mA peak current, and switch its model mapping
> to
> > generic_dsd_config.
> > > This resolves the volume drop issue and enables proper internal boost
> > > for both channels.
> > >
> > > Pull Request on SOF Project:
> > > https://github.com/thesofproject/linux/pull/5866
> > >
> > > Signed-off-by: Gemayel Lira <gemayellira@gmail.com>
> > >
> > > From 10431A6300000000000000000000000000000000 Mon Sep 17
> > 00:00:00 2001
> > > From: Gemayel Lira <gemayellira@gmail.com>
> > > Date: Sat, 1 Aug 2026 19:15:00 -0300
> > > Subject: [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS
> > > UX3405CA
> > >
> > > The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) has internal CS35L41
> > > amplifiers, but was using the `missing_speaker_id_gpio2` fallback entry.
> > > This caused the right speaker channel to bind with VSPK voltage switch
> > > disabled
> > > (VSPK: 0), leading to a volume drop ~1 second after starting playback
> > > due to power imbalance protection.
> > >
> > > Add an explicit entry for 10431A63 in cs35l41_config_table with
> > > internal boost type, 4500mA peak current, and switch its model mapping
> to
> > `generic_dsd_config`.
> > > This resolves the volume drop issue and enables proper internal boost
> for
> > both channels.
> > >
> > > Signed-off-by: Gemayel Lira <gemayellira@gmail.com>
> > 
> > Stefan, is this also covered in your side?
> > Or shall we just take this?
> > 
> > 
> > BTW, Gemayel, at the next time, please submit to linux-
> > sound@vger.kernel.org.  It's the place for kernel patches, while
> alsa-devel ML is
> > mostly for only user-space stuff.
> > 
> > 
> > thanks,
> > 
> > Takashi
> > 
> > 
> > > ---
> > >  sound/hda/codecs/side-codecs/cs35l41_hda_property.c | 3 ++-
> > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > > b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > > index 416d7bf..1cf12f8 100644
> > > --- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > > +++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > > @@ -104,6 +104,7 @@ static const struct cs35l41_config
> > cs35l41_config_table[] = {
> > >  	{ "104317F3", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> > 0, 1, -1, 1000, 4500, 24 },
> > >  	{ "10431863", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> > 1, 2, 0, 1000, 4500, 24 },
> > >  	{ "104318D3", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> > 0,
> > > 1, -1, 0, 0, 0 },
> > > +	{ "10431A63", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> > > +-1, 2, -1, 1000, 4500, 24 },
> > >  	{ "10431A83", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> > 0, 1, -1, 1000, 4500, 24 },
> > >  	{ "10431B93", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> > 1, 2, 0, 1000, 4500, 24 },
> > >  	{ "10431C9F", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 },
> > 1,
> > > 2, 0, 1000, 4500, 24 }, @@ -530,7 +531,7 @@ static const struct
> > cs35l41_prop_model cs35l41_prop_model_table[] = {
> > >  	{ "CSC3551", "104317F3", generic_dsd_config },
> > >  	{ "CSC3551", "10431863", generic_dsd_config },
> > >  	{ "CSC3551", "104318D3", generic_dsd_config },
> > > -	{ "CSC3551", "10431A63", missing_speaker_id_gpio2 },
> > > +	{ "CSC3551", "10431A63", generic_dsd_config },
> > >  	{ "CSC3551", "10431A83", generic_dsd_config },
> > >  	{ "CSC3551", "10431B93", generic_dsd_config },
> > >  	{ "CSC3551", "10431C9F", generic_dsd_config },
> > > --
> > > 2.43.0
> 

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

* [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when ACPI leaves GPIO1 unused
  2026-08-01 23:00 [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS UX3405CA Gemayel Lira
  2026-08-06  9:46 ` Takashi Iwai
@ 2026-08-15 21:49 ` Gemayel Lira
  2026-08-17 10:55     ` Stefan Binding (Opensource)
  1 sibling, 1 reply; 8+ messages in thread
From: Gemayel Lira @ 2026-08-15 21:49 UTC (permalink / raw)
  To: linux-sound, Takashi Iwai, Jaroslav Kysela
  Cc: Stefan Binding, alsa-devel, patches

v1 mapped 10431A63 to generic_dsd_config and INTERNAL boost. Stefan Binding
rejected that: this laptop is external boost, and overriding the ACPI _DSD
as internal can damage the amplifiers. Takashi agreed not to take v1.

v1 also loaded fallback firmware (SPKID: -19). After some S3 resumes the
right amp failed with PM resume -110, then SPI -16 (EBUSY) until reboot.

This v2 keeps Binding's missing_speaker_id_gpio2 parse of the existing
_DSD (external boost, shared reset, gpio2 = IRQ, speaker-id at CRS index
2). ACPI sets cirrus,gpio1-func to VSPK (1) on the left amp and unused (0)
on the right, so the right channel binds with VSPK: 0 and volume drops
about one second after playback. After parse_acpi, enable VSPK on GPIO1
only when ACPI left it unused. Boost type is unchanged.

Tested: ASUS Zenbook 14 UX3405CA, Ubuntu kernel 7.0.0-27-generic.
Both amps: VSPK: 1, SPKID: 1, firmware
spk-prot-10431a63-spkid1-{l,r}0.bin. One S3 (deep): both amps reloaded
firmware, no -110/-16.

ACPI _DSD (SSDT SPKRAMPS), excerpt:

  cirrus,gpio1-func:  1, 0
  cirrus,gpio2-func:  2, 2
  cirrus,boost-type:  1, 1
  reset-gpios:        shared CRS index 1
  spk-id-gpios:       missing (CRS index 2)

dmesg after this quirk:

  CS35L41 Bound - SSID: 10431A63, BST: 1, VSPK: 1, CH: L, FW EN: 1, SPKID: 1
  CS35L41 Bound - SSID: 10431A63, BST: 1, VSPK: 1, CH: R, FW EN: 1, SPKID: 1

v1: https://lore.kernel.org/linux-sound/CAD96ZT+SnRnGr4Xd+NJkkVNpj8XrzL3Ete=pRgz05mqxAzbU2w@mail.gmail.com/

From c325bb06bb37fd658f0250dc8571b5bb6b2c7dbf Mon Sep 17 00:00:00 2001
From: Gemayel Lira <gemayellira@gmail.com>
Date: Sat, 15 Aug 2026 17:16:18 -0300
Subject: [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when ACPI leaves
 GPIO1 unused

The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) already has a valid _DSD
and uses missing_speaker_id_gpio2. ACPI sets cirrus,gpio1-func to VSPK
on the left amplifier and unused on the right, so the right channel
binds with VSPK: 0 and volume drops shortly after playback starts.

After parsing ACPI, enable VSPK on GPIO1 when it was left unused.

Signed-off-by: Gemayel Lira <gemayellira@gmail.com>
---
Changes in v2:
- Do not map 10431A63 to generic_dsd_config / INTERNAL boost. Stefan
  Binding rejected v1: this laptop is external boost, and that override
  can damage the amplifiers.
- Keep missing_speaker_id_gpio2 and enable VSPK only when ACPI left
  GPIO1 unused. Boost type is unchanged.
- v1 loaded fallback firmware (SPKID: -19) and, after some S3 resumes,
  hit PM -110 then SPI -16 (EBUSY) on the right amp. This v2 binds
  SPKID: 1 and official spk-prot-10431a63 firmware.

v1: Message-ID:
<CAD96ZT+SnRnGr4Xd+NJkkVNpj8XrzL3Ete=pRgz05mqxAzbU2w@mail.gmail.com>

 .../hda/codecs/side-codecs/cs35l41_hda_property.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
index 416d7bf..0c09094 100644
--- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
+++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
@@ -450,7 +450,20 @@ static int missing_speaker_id_gpio2(struct
cs35l41_hda *cs35l41, struct device *
 		return ret;
 	}

-	return cs35l41_hda_parse_acpi(cs35l41, physdev, id);
+	ret = cs35l41_hda_parse_acpi(cs35l41, physdev, id);
+	if (ret)
+		return ret;
+
+	/*
+	 * ACPI on 10431A63 sets gpio1 to VSPK on the left amp and unused
+	 * on the right, so the right channel binds with VSPK: 0.
+	 */
+	if (cs35l41->hw_cfg.gpio1.func == CS35L41_NOT_USED) {
+		cs35l41->hw_cfg.gpio1.func = CS35l41_VSPK_SWITCH;
+		cs35l41->hw_cfg.gpio1.valid = true;
+	}
+
+	return 0;
 }

 struct cs35l41_prop_model {
-- 
2.53.0

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

* RE: [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when ACPI leaves GPIO1 unused
  2026-08-15 21:49 ` [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when ACPI leaves GPIO1 unused Gemayel Lira
@ 2026-08-17 10:55     ` Stefan Binding (Opensource)
  0 siblings, 0 replies; 8+ messages in thread
From: Stefan Binding (Opensource) @ 2026-08-17 10:55 UTC (permalink / raw)
  To: 'Gemayel Lira', linux-sound, 'Takashi Iwai',
	'Jaroslav Kysela'
  Cc: alsa-devel, patches

Hi,

Looking at your patch, it's enabling the second amps GPIO for VSPK Enable.
From what I know of this laptop this shouldn’t have any effect, so we'd like to investigate this further.
Please create a bugzilla ticket at the below address and CC Cirrus Patches (patches@opensource.cirrus.com) to it, we will investigate the issue as soon as we can.

https://bugzilla.kernel.org/

Please attach an acpi dump and dmesg of the issue to the ticket.

Creating a public Bugzilla allows others with the same laptop to find relevant information pertaining to this issue.

Thanks,

Stefan Binding

> -----Original Message-----
> From: Gemayel Lira <gemayellira@gmail.com>
> Sent: Saturday, August 15, 2026 10:50 PM
> To: linux-sound@vger.kernel.org; Takashi Iwai <tiwai@suse.de>; Jaroslav
> Kysela <perex@perex.cz>
> Cc: Stefan Binding <sbinding@opensource.cirrus.com>; alsa-devel@alsa-
> project.org; patches@opensource.cirrus.com
> Subject: [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when
> ACPI leaves GPIO1 unused
> 
> v1 mapped 10431A63 to generic_dsd_config and INTERNAL boost. Stefan
> Binding rejected that: this laptop is external boost, and overriding the ACPI
> _DSD as internal can damage the amplifiers. Takashi agreed not to take v1.
> 
> v1 also loaded fallback firmware (SPKID: -19). After some S3 resumes the right
> amp failed with PM resume -110, then SPI -16 (EBUSY) until reboot.
> 
> This v2 keeps Binding's missing_speaker_id_gpio2 parse of the existing _DSD
> (external boost, shared reset, gpio2 = IRQ, speaker-id at CRS index 2). ACPI
> sets cirrus,gpio1-func to VSPK (1) on the left amp and unused (0) on the right,
> so the right channel binds with VSPK: 0 and volume drops about one second
> after playback. After parse_acpi, enable VSPK on GPIO1 only when ACPI left it
> unused. Boost type is unchanged.
> 
> Tested: ASUS Zenbook 14 UX3405CA, Ubuntu kernel 7.0.0-27-generic.
> Both amps: VSPK: 1, SPKID: 1, firmware
> spk-prot-10431a63-spkid1-{l,r}0.bin. One S3 (deep): both amps reloaded
> firmware, no -110/-16.
> 
> ACPI _DSD (SSDT SPKRAMPS), excerpt:
> 
>   cirrus,gpio1-func:  1, 0
>   cirrus,gpio2-func:  2, 2
>   cirrus,boost-type:  1, 1
>   reset-gpios:        shared CRS index 1
>   spk-id-gpios:       missing (CRS index 2)
> 
> dmesg after this quirk:
> 
>   CS35L41 Bound - SSID: 10431A63, BST: 1, VSPK: 1, CH: L, FW EN: 1, SPKID: 1
>   CS35L41 Bound - SSID: 10431A63, BST: 1, VSPK: 1, CH: R, FW EN: 1, SPKID: 1
> 
> v1: https://lore.kernel.org/linux-
> sound/CAD96ZT+SnRnGr4Xd+NJkkVNpj8XrzL3Ete=pRgz05mqxAzbU2w@mail
> .gmail.com/
> 
> >From c325bb06bb37fd658f0250dc8571b5bb6b2c7dbf Mon Sep 17
> 00:00:00 2001
> From: Gemayel Lira <gemayellira@gmail.com>
> Date: Sat, 15 Aug 2026 17:16:18 -0300
> Subject: [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when
> ACPI leaves
>  GPIO1 unused
> 
> The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) already has a valid _DSD
> and uses missing_speaker_id_gpio2. ACPI sets cirrus,gpio1-func to VSPK on
> the left amplifier and unused on the right, so the right channel binds with
> VSPK: 0 and volume drops shortly after playback starts.
> 
> After parsing ACPI, enable VSPK on GPIO1 when it was left unused.
> 
> Signed-off-by: Gemayel Lira <gemayellira@gmail.com>
> ---
> Changes in v2:
> - Do not map 10431A63 to generic_dsd_config / INTERNAL boost. Stefan
>   Binding rejected v1: this laptop is external boost, and that override
>   can damage the amplifiers.
> - Keep missing_speaker_id_gpio2 and enable VSPK only when ACPI left
>   GPIO1 unused. Boost type is unchanged.
> - v1 loaded fallback firmware (SPKID: -19) and, after some S3 resumes,
>   hit PM -110 then SPI -16 (EBUSY) on the right amp. This v2 binds
>   SPKID: 1 and official spk-prot-10431a63 firmware.
> 
> v1: Message-ID:
> <CAD96ZT+SnRnGr4Xd+NJkkVNpj8XrzL3Ete=pRgz05mqxAzbU2w@mail.gmail
> .com>
> 
>  .../hda/codecs/side-codecs/cs35l41_hda_property.c | 15 ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> index 416d7bf..0c09094 100644
> --- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> +++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> @@ -450,7 +450,20 @@ static int missing_speaker_id_gpio2(struct
> cs35l41_hda *cs35l41, struct device *
>  		return ret;
>  	}
> 
> -	return cs35l41_hda_parse_acpi(cs35l41, physdev, id);
> +	ret = cs35l41_hda_parse_acpi(cs35l41, physdev, id);
> +	if (ret)
> +		return ret;
> +
> +	/*
> +	 * ACPI on 10431A63 sets gpio1 to VSPK on the left amp and unused
> +	 * on the right, so the right channel binds with VSPK: 0.
> +	 */
> +	if (cs35l41->hw_cfg.gpio1.func == CS35L41_NOT_USED) {
> +		cs35l41->hw_cfg.gpio1.func = CS35l41_VSPK_SWITCH;
> +		cs35l41->hw_cfg.gpio1.valid = true;
> +	}
> +
> +	return 0;
>  }
> 
>  struct cs35l41_prop_model {
> --
> 2.53.0


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

* RE: [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when ACPI leaves GPIO1 unused
@ 2026-08-17 10:55     ` Stefan Binding (Opensource)
  0 siblings, 0 replies; 8+ messages in thread
From: Stefan Binding (Opensource) @ 2026-08-17 10:55 UTC (permalink / raw)
  To: 'Gemayel Lira', linux-sound, 'Takashi Iwai',
	'Jaroslav Kysela'
  Cc: alsa-devel, patches

Hi,

Looking at your patch, it's enabling the second amps GPIO for VSPK Enable.
>From what I know of this laptop this shouldn’t have any effect, so we'd like to investigate this further.
Please create a bugzilla ticket at the below address and CC Cirrus Patches (patches@opensource.cirrus.com) to it, we will investigate the issue as soon as we can.

https://bugzilla.kernel.org/

Please attach an acpi dump and dmesg of the issue to the ticket.

Creating a public Bugzilla allows others with the same laptop to find relevant information pertaining to this issue.

Thanks,

Stefan Binding

> -----Original Message-----
> From: Gemayel Lira <gemayellira@gmail.com>
> Sent: Saturday, August 15, 2026 10:50 PM
> To: linux-sound@vger.kernel.org; Takashi Iwai <tiwai@suse.de>; Jaroslav
> Kysela <perex@perex.cz>
> Cc: Stefan Binding <sbinding@opensource.cirrus.com>; alsa-devel@alsa-
> project.org; patches@opensource.cirrus.com
> Subject: [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when
> ACPI leaves GPIO1 unused
> 
> v1 mapped 10431A63 to generic_dsd_config and INTERNAL boost. Stefan
> Binding rejected that: this laptop is external boost, and overriding the ACPI
> _DSD as internal can damage the amplifiers. Takashi agreed not to take v1.
> 
> v1 also loaded fallback firmware (SPKID: -19). After some S3 resumes the right
> amp failed with PM resume -110, then SPI -16 (EBUSY) until reboot.
> 
> This v2 keeps Binding's missing_speaker_id_gpio2 parse of the existing _DSD
> (external boost, shared reset, gpio2 = IRQ, speaker-id at CRS index 2). ACPI
> sets cirrus,gpio1-func to VSPK (1) on the left amp and unused (0) on the right,
> so the right channel binds with VSPK: 0 and volume drops about one second
> after playback. After parse_acpi, enable VSPK on GPIO1 only when ACPI left it
> unused. Boost type is unchanged.
> 
> Tested: ASUS Zenbook 14 UX3405CA, Ubuntu kernel 7.0.0-27-generic.
> Both amps: VSPK: 1, SPKID: 1, firmware
> spk-prot-10431a63-spkid1-{l,r}0.bin. One S3 (deep): both amps reloaded
> firmware, no -110/-16.
> 
> ACPI _DSD (SSDT SPKRAMPS), excerpt:
> 
>   cirrus,gpio1-func:  1, 0
>   cirrus,gpio2-func:  2, 2
>   cirrus,boost-type:  1, 1
>   reset-gpios:        shared CRS index 1
>   spk-id-gpios:       missing (CRS index 2)
> 
> dmesg after this quirk:
> 
>   CS35L41 Bound - SSID: 10431A63, BST: 1, VSPK: 1, CH: L, FW EN: 1, SPKID: 1
>   CS35L41 Bound - SSID: 10431A63, BST: 1, VSPK: 1, CH: R, FW EN: 1, SPKID: 1
> 
> v1: https://lore.kernel.org/linux-
> sound/CAD96ZT+SnRnGr4Xd+NJkkVNpj8XrzL3Ete=pRgz05mqxAzbU2w@mail
> .gmail.com/
> 
> >From c325bb06bb37fd658f0250dc8571b5bb6b2c7dbf Mon Sep 17
> 00:00:00 2001
> From: Gemayel Lira <gemayellira@gmail.com>
> Date: Sat, 15 Aug 2026 17:16:18 -0300
> Subject: [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when
> ACPI leaves
>  GPIO1 unused
> 
> The ASUS Zenbook 14 UX3405CA (SSID 1043:1A63) already has a valid _DSD
> and uses missing_speaker_id_gpio2. ACPI sets cirrus,gpio1-func to VSPK on
> the left amplifier and unused on the right, so the right channel binds with
> VSPK: 0 and volume drops shortly after playback starts.
> 
> After parsing ACPI, enable VSPK on GPIO1 when it was left unused.
> 
> Signed-off-by: Gemayel Lira <gemayellira@gmail.com>
> ---
> Changes in v2:
> - Do not map 10431A63 to generic_dsd_config / INTERNAL boost. Stefan
>   Binding rejected v1: this laptop is external boost, and that override
>   can damage the amplifiers.
> - Keep missing_speaker_id_gpio2 and enable VSPK only when ACPI left
>   GPIO1 unused. Boost type is unchanged.
> - v1 loaded fallback firmware (SPKID: -19) and, after some S3 resumes,
>   hit PM -110 then SPI -16 (EBUSY) on the right amp. This v2 binds
>   SPKID: 1 and official spk-prot-10431a63 firmware.
> 
> v1: Message-ID:
> <CAD96ZT+SnRnGr4Xd+NJkkVNpj8XrzL3Ete=pRgz05mqxAzbU2w@mail.gmail
> .com>
> 
>  .../hda/codecs/side-codecs/cs35l41_hda_property.c | 15 ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> index 416d7bf..0c09094 100644
> --- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> +++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> @@ -450,7 +450,20 @@ static int missing_speaker_id_gpio2(struct
> cs35l41_hda *cs35l41, struct device *
>  		return ret;
>  	}
> 
> -	return cs35l41_hda_parse_acpi(cs35l41, physdev, id);
> +	ret = cs35l41_hda_parse_acpi(cs35l41, physdev, id);
> +	if (ret)
> +		return ret;
> +
> +	/*
> +	 * ACPI on 10431A63 sets gpio1 to VSPK on the left amp and unused
> +	 * on the right, so the right channel binds with VSPK: 0.
> +	 */
> +	if (cs35l41->hw_cfg.gpio1.func == CS35L41_NOT_USED) {
> +		cs35l41->hw_cfg.gpio1.func = CS35l41_VSPK_SWITCH;
> +		cs35l41->hw_cfg.gpio1.valid = true;
> +	}
> +
> +	return 0;
>  }
> 
>  struct cs35l41_prop_model {
> --
> 2.53.0


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

* Re: [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when ACPI leaves GPIO1 unused
  2026-08-17 10:55     ` Stefan Binding (Opensource)
  (?)
@ 2026-08-17 12:40     ` Gemayel Lira
  -1 siblings, 0 replies; 8+ messages in thread
From: Gemayel Lira @ 2026-08-17 12:40 UTC (permalink / raw)
  To: Stefan Binding, linux-sound, Takashi Iwai, Jaroslav Kysela
  Cc: alsa-devel, patches

On Mon, 17 Aug 2026, Stefan Binding wrote:
> Please create a bugzilla ticket at the below address and CC Cirrus
> Patches (patches@opensource.cirrus.com) to it
> Please attach an acpi dump and dmesg of the issue to the ticket.

https://bugzilla.kernel.org/show_bug.cgi?id=221896

Thanks,
Gemayel Lira

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

end of thread, other threads:[~2026-08-17 12:40 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-01 23:00 [PATCH] ALSA: hda/cs35l41: Add DSD property override for ASUS UX3405CA Gemayel Lira
2026-08-06  9:46 ` Takashi Iwai
2026-08-06 13:38   ` Stefan Binding (Opensource)
2026-08-06 13:46     ` Takashi Iwai
2026-08-15 21:49 ` [PATCH v2] ALSA: hda: cs35l41: Enable VSPK on UX3405CA when ACPI leaves GPIO1 unused Gemayel Lira
2026-08-17 10:55   ` Stefan Binding (Opensource)
2026-08-17 10:55     ` Stefan Binding (Opensource)
2026-08-17 12:40     ` Gemayel Lira

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.