Re: [PATCH] ALSA: hda: cs35l41: Fix Speakers on HP OmniBook 7 16-bh0xxx
From: Takashi Iwai
Date: Thu Jul 16 2026 - 06:30:11 EST
On Thu, 16 Jul 2026 12:17:08 +0200,
Yufan wrote:
>
> From: Yufan Kuang <kuangfan955@xxxxxxxxx>
>
> 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@xxxxxxxxx>
> 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@xxxxxxxxxxx
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
>