All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ALSA: hda: cs35l41: Fix Speakers on HP OmniBook 7 16-bh0xxx
@ 2026-07-16 10:17 Yufan
  2026-07-16 10:29 ` Takashi Iwai
       [not found] ` <87h6e8fk7n.wl-tiwai@suse.de>
  0 siblings, 2 replies; 4+ messages in thread
From: Yufan @ 2026-07-16 10:17 UTC (permalink / raw)
  To: linux-sound, tiwai
  Cc: david.rhodes, rf, perex, patches, linux-kernel, Yufan Kuang

From: Yufan Kuang <kuangfan955@gmail.com>

The HP OmniBook 7 Laptop 16-bh0xxx (SSID 103C8E60) has two CS35L41
amplifiers connected via I2C with internal boost, but its _DSD
provides cirrus,dev-index as a Package while the driver expects
per-device scalar values, causing the probe to fail with -EINVAL,
leaving only the left speaker working.

Add the SSID to the configuration and prop-model override tables.

Tested on a HP OmniBook 7 Laptop 16-bh0xxx (BIOS F.12) with
CachyOS 7.1.3-2; speaker-test confirms both channels work correctly.

Signed-off-by: Yufan Kuang <kuangfan955@gmail.com>
Assisted-by: Copilot:DeepSeek-V4-Pro
---
 sound/hda/codecs/side-codecs/cs35l41_hda_property.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
index 416d7bf3e289..e14a87336478 100644
--- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
+++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
@@ -85,6 +85,7 @@ static const struct cs35l41_config cs35l41_config_table[] = {
 	{ "103C8C51", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 },
 	{ "103C8CDD", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 },
 	{ "103C8CDE", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 3900, 24 },
+	{ "103C8E60", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
 	{ "104312AF", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 },
 	{ "10431433", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
 	{ "10431463", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
@@ -511,6 +512,7 @@ static const struct cs35l41_prop_model cs35l41_prop_model_table[] = {
 	{ "CSC3551", "103C8C6A", hp_i2c_int_2amp_dual_spkid },
 	{ "CSC3551", "103C8CDD", generic_dsd_config },
 	{ "CSC3551", "103C8CDE", generic_dsd_config },
+	{ "CSC3551", "103C8E60", generic_dsd_config },
 	{ "CSC3551", "104312AF", generic_dsd_config },
 	{ "CSC3551", "10431433", generic_dsd_config },
 	{ "CSC3551", "10431463", generic_dsd_config },
-- 
2.55.0


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

* Re: [PATCH] ALSA: hda: cs35l41: Fix Speakers on HP OmniBook 7 16-bh0xxx
  2026-07-16 10:17 [PATCH] ALSA: hda: cs35l41: Fix Speakers on HP OmniBook 7 16-bh0xxx Yufan
@ 2026-07-16 10:29 ` Takashi Iwai
  2026-07-16 13:17   ` Stefan Binding (Opensource)
       [not found] ` <87h6e8fk7n.wl-tiwai@suse.de>
  1 sibling, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2026-07-16 10:29 UTC (permalink / raw)
  To: Yufan
  Cc: sbinding, linux-sound, tiwai, david.rhodes, rf, perex, patches,
	linux-kernel

On Thu, 16 Jul 2026 12:17:08 +0200,
Yufan wrote:
> 
> From: Yufan Kuang <kuangfan955@gmail.com>
> 
> The HP OmniBook 7 Laptop 16-bh0xxx (SSID 103C8E60) has two CS35L41
> amplifiers connected via I2C with internal boost, but its _DSD
> provides cirrus,dev-index as a Package while the driver expects
> per-device scalar values, causing the probe to fail with -EINVAL,
> leaving only the left speaker working.
> 
> Add the SSID to the configuration and prop-model override tables.
> 
> Tested on a HP OmniBook 7 Laptop 16-bh0xxx (BIOS F.12) with
> CachyOS 7.1.3-2; speaker-test confirms both channels work correctly.
> 
> Signed-off-by: Yufan Kuang <kuangfan955@gmail.com>
> Assisted-by: Copilot:DeepSeek-V4-Pro

The very same change has been already submitted (maybe multiple
times), e.g.
  https://lore.kernel.org/20260709214414.8461-1-skbotnl@disroot.org

The problem is known, and it's basically an issue of the firmware.
But obviously we need to address *something* in the driver side.

Cirrus people -- do you have ideas to fix those HP laptops?

If it's not feasible in a short term, maybe it'd be better to take
those quirk additions; although they aren't 100% correct, but they do
work somehow in a certain level.


thanks,

Takashi


> ---
>  sound/hda/codecs/side-codecs/cs35l41_hda_property.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> index 416d7bf3e289..e14a87336478 100644
> --- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> +++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> @@ -85,6 +85,7 @@ static const struct cs35l41_config cs35l41_config_table[] = {
>  	{ "103C8C51", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 },
>  	{ "103C8CDD", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 },
>  	{ "103C8CDE", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 3900, 24 },
> +	{ "103C8E60", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
>  	{ "104312AF", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 },
>  	{ "10431433", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
>  	{ "10431463", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 },
> @@ -511,6 +512,7 @@ static const struct cs35l41_prop_model cs35l41_prop_model_table[] = {
>  	{ "CSC3551", "103C8C6A", hp_i2c_int_2amp_dual_spkid },
>  	{ "CSC3551", "103C8CDD", generic_dsd_config },
>  	{ "CSC3551", "103C8CDE", generic_dsd_config },
> +	{ "CSC3551", "103C8E60", generic_dsd_config },
>  	{ "CSC3551", "104312AF", generic_dsd_config },
>  	{ "CSC3551", "10431433", generic_dsd_config },
>  	{ "CSC3551", "10431463", generic_dsd_config },
> -- 
> 2.55.0
> 

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

* Re: [PATCH] ALSA: hda: cs35l41: Fix Speakers on HP OmniBook 7 16-bh0xxx
       [not found] ` <87h6e8fk7n.wl-tiwai@suse.de>
@ 2026-07-16 11:33   ` Yufan
  0 siblings, 0 replies; 4+ messages in thread
From: Yufan @ 2026-07-16 11:33 UTC (permalink / raw)
  To: linux-sound, tiwai
  Cc: david.rhodes, rf, perex, patches, linux-kernel, Yufan Kuang

From: Yufan Kuang <kuangfan955@gmail.com>

Hi Takashi and all,

Thank you for the review. I missed Sven's earlier submission — I only
searched the source tree and commit history for the SSID, not the
mailing list.

Since his v2 patch is identical and predates mine, please drop my
submission.

I have tested the identical quirk on my HP OmniBook 7 (BIOS F.12)
and both speakers work correctly. If it helps, you can add:

Tested-by: Yufan Kuang <kuangfan955@gmail.com>

to Sven's patch.

Thanks,
Yufan

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

* RE: [PATCH] ALSA: hda: cs35l41: Fix Speakers on HP OmniBook 7 16-bh0xxx
  2026-07-16 10:29 ` Takashi Iwai
@ 2026-07-16 13:17   ` Stefan Binding (Opensource)
  0 siblings, 0 replies; 4+ messages in thread
From: Stefan Binding (Opensource) @ 2026-07-16 13:17 UTC (permalink / raw)
  To: 'Takashi Iwai', 'Yufan'
  Cc: linux-sound, tiwai, david.rhodes, rf, perex, patches,
	linux-kernel

Hi Takashi,

We should be able to add entries for this laptop and others in
cs35l41_hda_property.c to override all the missing properties from ACPI.
The ACPI in those laptops is malformed, which means the entire _DSD for the
CS35L41 is corrupted, and appears to be missing from the kernels
perspective.
In most cases the malformed ACPI is also not correct for that laptop, so its
not a case of taking the settings from the ACPI on the laptop itself and
putting them in cs35l41_hda_property.c.

However, we should be able to determine these settings ourselves, but end
users will not be able to.
We are actively looking at doing so for this laptop, and several others.

Thanks,
Stefan

> -----Original Message-----
> From: Takashi Iwai <tiwai@suse.de>
> Sent: Thursday, July 16, 2026 11:30 AM
> To: Yufan <kuangfan955@gmail.com>
> Cc: sbinding@opensource.cirrus.com; linux-sound@vger.kernel.org;
> tiwai@suse.com; david.rhodes@cirrus.com; rf@opensource.cirrus.com;
> perex@perex.cz; patches@opensource.cirrus.com;
linux-kernel@vger.kernel.org
> Subject: Re: [PATCH] ALSA: hda: cs35l41: Fix Speakers on HP OmniBook 7 16-
> bh0xxx
> 
> On Thu, 16 Jul 2026 12:17:08 +0200,
> Yufan wrote:
> >
> > From: Yufan Kuang <kuangfan955@gmail.com>
> >
> > The HP OmniBook 7 Laptop 16-bh0xxx (SSID 103C8E60) has two CS35L41
> > amplifiers connected via I2C with internal boost, but its _DSD
> > provides cirrus,dev-index as a Package while the driver expects
> > per-device scalar values, causing the probe to fail with -EINVAL,
> > leaving only the left speaker working.
> >
> > Add the SSID to the configuration and prop-model override tables.
> >
> > Tested on a HP OmniBook 7 Laptop 16-bh0xxx (BIOS F.12) with CachyOS
> > 7.1.3-2; speaker-test confirms both channels work correctly.
> >
> > Signed-off-by: Yufan Kuang <kuangfan955@gmail.com>
> > Assisted-by: Copilot:DeepSeek-V4-Pro
> 
> The very same change has been already submitted (maybe multiple times),
e.g.
>   https://lore.kernel.org/20260709214414.8461-1-skbotnl@disroot.org
> 
> The problem is known, and it's basically an issue of the firmware.
> But obviously we need to address *something* in the driver side.
> 
> Cirrus people -- do you have ideas to fix those HP laptops?
> 
> If it's not feasible in a short term, maybe it'd be better to take those
quirk
> additions; although they aren't 100% correct, but they do work somehow in
a
> certain level.
> 
> 
> thanks,
> 
> Takashi
> 
> 
> > ---
> >  sound/hda/codecs/side-codecs/cs35l41_hda_property.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > index 416d7bf3e289..e14a87336478 100644
> > --- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > +++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
> > @@ -85,6 +85,7 @@ static const struct cs35l41_config
cs35l41_config_table[]
> = {
> >  	{ "103C8C51", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0,
1,
> -1, 1000, 4100, 24 },
> >  	{ "103C8CDD", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0,
1,
> -1, 1000, 4100, 24 },
> >  	{ "103C8CDE", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0,
> > 1, -1, 1000, 3900, 24 },
> > +	{ "103C8E60", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0,
> > +1, -1, 1000, 4500, 24 },
> >  	{ "104312AF", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1,
2,
> 0, 1000, 4500, 24 },
> >  	{ "10431433", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0,
1,
> -1, 1000, 4500, 24 },
> >  	{ "10431463", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0,
> > 1, -1, 1000, 4500, 24 }, @@ -511,6 +512,7 @@ static const struct
> cs35l41_prop_model cs35l41_prop_model_table[] = {
> >  	{ "CSC3551", "103C8C6A", hp_i2c_int_2amp_dual_spkid },
> >  	{ "CSC3551", "103C8CDD", generic_dsd_config },
> >  	{ "CSC3551", "103C8CDE", generic_dsd_config },
> > +	{ "CSC3551", "103C8E60", generic_dsd_config },
> >  	{ "CSC3551", "104312AF", generic_dsd_config },
> >  	{ "CSC3551", "10431433", generic_dsd_config },
> >  	{ "CSC3551", "10431463", generic_dsd_config },
> > --
> > 2.55.0
> >



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

end of thread, other threads:[~2026-07-16 13:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-16 10:17 [PATCH] ALSA: hda: cs35l41: Fix Speakers on HP OmniBook 7 16-bh0xxx Yufan
2026-07-16 10:29 ` Takashi Iwai
2026-07-16 13:17   ` Stefan Binding (Opensource)
     [not found] ` <87h6e8fk7n.wl-tiwai@suse.de>
2026-07-16 11:33   ` Yufan

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.