mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6
@ 2026-09-20  9:28 Ilya Pavlukhin
  2026-09-20  9:28 ` [PATCH 1/4] ACPI: scan: Add CLSA0102 to the serial bus ignore list Ilya Pavlukhin
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Ilya Pavlukhin @ 2026-09-20  9:28 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Jaroslav Kysela, David Rhodes, Richard Fitzgerald,
	Rafael J . Wysocki, Len Brown, Hans de Goede, Ilpo Järvinen,
	linux-sound, patches, linux-acpi, platform-driver-x86,
	linux-kernel

The Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0, Ryzen 5000) has four
speakers. The two tweeters are driven directly by the ALC287, the two
bass speakers by a pair of CS35L41 amplifiers on I2C. On Linux only
the tweeters work [1].

The amplifiers are described by ACPI HID CLSA0102, without _DSD, in a
single node with both I2C addresses, the same way as CLSA0100/CLSA0101
on the Legion 7. Patches 1-3 add CLSA0102 next to them. The Windows
Cirrus driver configures CLSA0102 with an external speaker supply, so
external boost is used.

Patch 4 adds the codec quirk. The ALC287 only clocks the I2S bus to the
amplifiers while pin 0x17 is enabled, and the BIOS marks that pin as
unconnected.

Tested on a Yoga Slim 7 Carbon 14ACN6 (BIOS H5CN42WW) with all four
speakers playing. The DSP firmware (cs35l41-dsp1-spk-prot-17aa3856*)
is not in linux-firmware yet. For testing it was taken from the Lenovo
Windows driver package (tuning "Lenovo-S760-17AA383D"). Without it the
driver falls back to the default spk-prot firmware.

[1] https://bugzilla.kernel.org/show_bug.cgi?id=215632

Ilya Pavlukhin (4):
  ACPI: scan: Add CLSA0102 to the serial bus ignore list
  platform/x86: serial-multi-instantiate: Add CLSA0102
  ALSA: hda: cs35l41: Add support for CLSA0102
  ALSA: hda/realtek: Add quirk for Lenovo Yoga Slim 7 Carbon 14ACN6

 drivers/acpi/scan.c                           |  1 +
 .../platform/x86/serial-multi-instantiate.c   |  1 +
 sound/hda/codecs/realtek/alc269.c             | 28 +++++++++++++++++++
 .../hda/codecs/side-codecs/cs35l41_hda_i2c.c  |  3 ++
 .../codecs/side-codecs/cs35l41_hda_property.c | 28 +++++++++++++++++++
 5 files changed, 61 insertions(+)


base-commit: 4d4bc656580bcc448f8e6d6b3b3a903120eb29bb
-- 
2.43.0


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

* [PATCH 1/4] ACPI: scan: Add CLSA0102 to the serial bus ignore list
  2026-09-20  9:28 [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6 Ilya Pavlukhin
@ 2026-09-20  9:28 ` Ilya Pavlukhin
  2026-09-22 11:32   ` Rafael J. Wysocki (Intel)
  2026-09-20  9:28 ` [PATCH 2/4] platform/x86: serial-multi-instantiate: Add CLSA0102 Ilya Pavlukhin
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 9+ messages in thread
From: Ilya Pavlukhin @ 2026-09-20  9:28 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Jaroslav Kysela, David Rhodes, Richard Fitzgerald,
	Rafael J . Wysocki, Len Brown, Hans de Goede, Ilpo Järvinen,
	linux-sound, patches, linux-acpi, platform-driver-x86,
	linux-kernel

The Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0) describes the two CS35L41
amplifiers of its bass speakers as a single ACPI node, HID CLSA0102,
with two I2cSerialBusV2 resources (0x40 and 0x41), like CLSA0100 and
CLSA0101 on the Legion 7. Skip the default I2C enumeration so that
serial-multi-instantiate can create a client for each amplifier.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=215632
Assisted-by: Claude Opus 5
Signed-off-by: Ilya Pavlukhin <i.pavluhin@ya.ru>
---
 drivers/acpi/scan.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index f48715ed8..1d9698df9 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -1768,6 +1768,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
 		/* Non-conforming _HID for Cirrus Logic already released */
 		{"CLSA0100", },
 		{"CLSA0101", },
+		{"CLSA0102", },
 	/*
 	 * Some ACPI devs contain SerialBus resources even though they are not
 	 * attached to a serial bus at all.
-- 
2.43.0


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

* [PATCH 2/4] platform/x86: serial-multi-instantiate: Add CLSA0102
  2026-09-20  9:28 [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6 Ilya Pavlukhin
  2026-09-20  9:28 ` [PATCH 1/4] ACPI: scan: Add CLSA0102 to the serial bus ignore list Ilya Pavlukhin
@ 2026-09-20  9:28 ` Ilya Pavlukhin
  2026-09-20  9:28 ` [PATCH 3/4] ALSA: hda: cs35l41: Add support for CLSA0102 Ilya Pavlukhin
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Ilya Pavlukhin @ 2026-09-20  9:28 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Jaroslav Kysela, David Rhodes, Richard Fitzgerald,
	Rafael J . Wysocki, Len Brown, Hans de Goede, Ilpo Järvinen,
	linux-sound, patches, linux-acpi, platform-driver-x86,
	linux-kernel

Instantiate both CS35L41 amplifiers of the CLSA0102 node found on the
Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0), the same way as for CLSA0100
and CLSA0101.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=215632
Assisted-by: Claude Opus 5
Signed-off-by: Ilya Pavlukhin <i.pavluhin@ya.ru>
---
 drivers/platform/x86/serial-multi-instantiate.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/platform/x86/serial-multi-instantiate.c b/drivers/platform/x86/serial-multi-instantiate.c
index 3e89fcdd4..d535025a3 100644
--- a/drivers/platform/x86/serial-multi-instantiate.c
+++ b/drivers/platform/x86/serial-multi-instantiate.c
@@ -426,6 +426,7 @@ static const struct acpi_device_id smi_acpi_ids[] = {
 	/* Non-conforming _HID for Cirrus Logic already released */
 	{ "CLSA0100", (unsigned long)&cs35l41_hda },
 	{ "CLSA0101", (unsigned long)&cs35l41_hda },
+	{ "CLSA0102", (unsigned long)&cs35l41_hda },
 	{ }
 };
 MODULE_DEVICE_TABLE(acpi, smi_acpi_ids);
-- 
2.43.0


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

* [PATCH 3/4] ALSA: hda: cs35l41: Add support for CLSA0102
  2026-09-20  9:28 [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6 Ilya Pavlukhin
  2026-09-20  9:28 ` [PATCH 1/4] ACPI: scan: Add CLSA0102 to the serial bus ignore list Ilya Pavlukhin
  2026-09-20  9:28 ` [PATCH 2/4] platform/x86: serial-multi-instantiate: Add CLSA0102 Ilya Pavlukhin
@ 2026-09-20  9:28 ` Ilya Pavlukhin
  2026-09-20  9:28 ` [PATCH 4/4] ALSA: hda/realtek: Add quirk for Lenovo Yoga Slim 7 Carbon 14ACN6 Ilya Pavlukhin
  2026-09-29  9:45 ` [PATCH 0/4] Add support for the bass speakers of " Takashi Iwai
  4 siblings, 0 replies; 9+ messages in thread
From: Ilya Pavlukhin @ 2026-09-20  9:28 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Jaroslav Kysela, David Rhodes, Richard Fitzgerald,
	Rafael J . Wysocki, Len Brown, Hans de Goede, Ilpo Järvinen,
	linux-sound, patches, linux-acpi, platform-driver-x86,
	linux-kernel

The Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0) drives its bass speakers
with two CS35L41 amplifiers, described by ACPI HID CLSA0102 without a
_DSD. The node has the same layout as CLSA0100/CLSA0101: both amps in
one node, reset on GPIO index 0 and the interrupt on a GpioInt. Unlike
the Legion 7 there is no speaker ID GPIO, index 2 is the interrupt line.

The Windows driver runs the amps from an external VSPK supply
(ExternalVspkControl, boost converter disabled), so use
CS35L41_EXT_BOOST with the VSPK switch on GPIO1. With the internal
boost converter enabled the amps report "Amp short error" during
playback.

There is no _SUB in the ACPI node, so the firmware files are looked up
by the codec SSID, 17aa3856.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=215632
Assisted-by: Claude Opus 5
Signed-off-by: Ilya Pavlukhin <i.pavluhin@ya.ru>
---
 .../hda/codecs/side-codecs/cs35l41_hda_i2c.c  |  3 ++
 .../codecs/side-codecs/cs35l41_hda_property.c | 28 +++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_i2c.c b/sound/hda/codecs/side-codecs/cs35l41_hda_i2c.c
index fdf406e92..59b82238f 100644
--- a/sound/hda/codecs/side-codecs/cs35l41_hda_i2c.c
+++ b/sound/hda/codecs/side-codecs/cs35l41_hda_i2c.c
@@ -23,6 +23,8 @@ static int cs35l41_hda_i2c_probe(struct i2c_client *clt)
 		device_name = "CLSA0100";
 	else if (strstr(dev_name(&clt->dev), "CLSA0101"))
 		device_name = "CLSA0101";
+	else if (strstr(dev_name(&clt->dev), "CLSA0102"))
+		device_name = "CLSA0102";
 	else if (strstr(dev_name(&clt->dev), "CSC3551"))
 		device_name = "CSC3551";
 	else
@@ -45,6 +47,7 @@ static const struct i2c_device_id cs35l41_hda_i2c_id[] = {
 static const struct acpi_device_id cs35l41_acpi_hda_match[] = {
 	{"CLSA0100", 0 },
 	{"CLSA0101", 0 },
+	{"CLSA0102", 0 },
 	{"CSC3551", 0 },
 	{}
 };
diff --git a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
index 416d7bf3e..c4f2bbed0 100644
--- a/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
+++ b/sound/hda/codecs/side-codecs/cs35l41_hda_property.c
@@ -439,6 +439,33 @@ static int lenovo_legion_no_acpi(struct cs35l41_hda *cs35l41, struct device *phy
 	return 0;
 }
 
+/*
+ * Device CLSA0102 (Lenovo Yoga Slim 7 Carbon 14ACN6) has the same ACPI layout as CLSA010(0/1):
+ * no _DSD, both amps in one node, reset on GPIO index 0. It has no speaker ID GPIO, the
+ * interrupt GPIO sits at index 2. The speakers use an external VSPK supply switched by GPIO1
+ * (the Windows driver sets ExternalVspkControl and keeps the boost converter off).
+ */
+static int lenovo_yoga_slim7_carbon_no_acpi(struct cs35l41_hda *cs35l41, struct device *physdev,
+					    int id, const char *hid)
+{
+	struct cs35l41_hw_cfg *hw_cfg = &cs35l41->hw_cfg;
+
+	/* check I2C address to assign the index */
+	cs35l41->index = id == 0x40 ? 0 : 1;
+	cs35l41->channel_index = 0;
+	cs35l41->reset_gpio = gpiod_get_index(physdev, NULL, 0, GPIOD_OUT_HIGH);
+	cs35l41->speaker_id = -ENOENT;
+	hw_cfg->spk_pos = cs35l41->index;
+	hw_cfg->bst_type = CS35L41_EXT_BOOST;
+	hw_cfg->gpio1.func = CS35l41_VSPK_SWITCH;
+	hw_cfg->gpio1.valid = true;
+	hw_cfg->gpio2.func = CS35L41_INTERRUPT;
+	hw_cfg->gpio2.valid = true;
+	hw_cfg->valid = true;
+
+	return 0;
+}
+
 static int missing_speaker_id_gpio2(struct cs35l41_hda *cs35l41, struct device *physdev, int id,
 				    const char *hid)
 {
@@ -463,6 +490,7 @@ struct cs35l41_prop_model {
 static const struct cs35l41_prop_model cs35l41_prop_model_table[] = {
 	{ "CLSA0100", NULL, lenovo_legion_no_acpi },
 	{ "CLSA0101", NULL, lenovo_legion_no_acpi },
+	{ "CLSA0102", NULL, lenovo_yoga_slim7_carbon_no_acpi },
 	{ "CSC3551", "10251826", generic_dsd_config },
 	{ "CSC3551", "1025182C", generic_dsd_config },
 	{ "CSC3551", "10251844", generic_dsd_config },
-- 
2.43.0


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

* [PATCH 4/4] ALSA: hda/realtek: Add quirk for Lenovo Yoga Slim 7 Carbon 14ACN6
  2026-09-20  9:28 [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6 Ilya Pavlukhin
                   ` (2 preceding siblings ...)
  2026-09-20  9:28 ` [PATCH 3/4] ALSA: hda: cs35l41: Add support for CLSA0102 Ilya Pavlukhin
@ 2026-09-20  9:28 ` Ilya Pavlukhin
  2026-09-29  9:45 ` [PATCH 0/4] Add support for the bass speakers of " Takashi Iwai
  4 siblings, 0 replies; 9+ messages in thread
From: Ilya Pavlukhin @ 2026-09-20  9:28 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Jaroslav Kysela, David Rhodes, Richard Fitzgerald,
	Rafael J . Wysocki, Len Brown, Hans de Goede, Ilpo Järvinen,
	linux-sound, patches, linux-acpi, platform-driver-x86,
	linux-kernel

The bass speakers of the Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0) are
driven by two CS35L41 amplifiers, fed over I2S by the ALC287. The codec
only clocks the I2S bus while pin 0x17 is enabled, but the BIOS reports
the pin as unconnected (0x411111f0). The amplifiers then never see a
clock and fail to power up:

  cs35l41-hda i2c-CLSA0102:00-cs35l41-hda.0: Enable(1) failed: -110

Configure pin 0x17 as a speaker and keep it on DAC 0x02 together with
pin 0x14: with DAC 0x06 the path is powered down during stereo
playback, which stops the clock again. Then bind the two CS35L41
amplifiers.

The PCI SSID of this machine is 17aa:0000, so match on the codec SSID.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=215632
Assisted-by: Claude Opus 5
Signed-off-by: Ilya Pavlukhin <i.pavluhin@ya.ru>
---
 sound/hda/codecs/realtek/alc269.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/sound/hda/codecs/realtek/alc269.c b/sound/hda/codecs/realtek/alc269.c
index 8f55c3c00..7856c92df 100644
--- a/sound/hda/codecs/realtek/alc269.c
+++ b/sound/hda/codecs/realtek/alc269.c
@@ -3448,6 +3448,28 @@ static void alc287_fixup_legion_16ithg6_speakers(struct hda_codec *cdc, const st
 	comp_generic_fixup(cdc, action, "i2c", "CLSA0101", "-%s:00-cs35l41-hda.%d", 2);
 }
 
+static void alc287_fixup_yoga_slim7_carbon_speakers(struct hda_codec *cdc,
+						    const struct hda_fixup *fix, int action)
+{
+	/*
+	 * The bass speakers are driven by two CS35L41 amps fed over I2S. The codec only
+	 * clocks the I2S bus while pin 0x17 is enabled, but the BIOS marks it unconnected.
+	 * Keep the pin on DAC 0x02 with the other speakers: DAC 0x06 gets powered down
+	 * with stereo streams, which stops the clock and the amps fail to power up.
+	 */
+	static const struct hda_pintbl pincfgs[] = {
+		{ 0x17, 0x90170121 },
+		{ }
+	};
+	static const hda_nid_t conn[] = { 0x02 };
+
+	if (action == HDA_FIXUP_ACT_PRE_PROBE) {
+		snd_hda_apply_pincfgs(cdc, pincfgs);
+		snd_hda_override_conn_list(cdc, 0x17, ARRAY_SIZE(conn), conn);
+	}
+	comp_generic_fixup(cdc, action, "i2c", "CLSA0102", "-%s:00-cs35l41-hda.%d", 2);
+}
+
 static void alc285_fixup_asus_ga403u(struct hda_codec *cdc, const struct hda_fixup *fix, int action)
 {
 	/*
@@ -4328,6 +4350,7 @@ enum {
 	ALC295_FIXUP_FRAMEWORK_LAPTOP_MIC_NO_PRESENCE,
 	ALC295_FIXUP_FRAMEWORK_LAPTOP_LIMIT_INT_MIC_BOOST,
 	ALC287_FIXUP_LEGION_16ITHG6,
+	ALC287_FIXUP_YOGA_SLIM7_CARBON_SPEAKERS,
 	ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK,
 	ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN,
 	ALC287_FIXUP_YOGA9_14IMH9_BASS_SPK_PIN,
@@ -6690,6 +6713,10 @@ static const struct hda_fixup alc269_fixups[] = {
 		.type = HDA_FIXUP_FUNC,
 		.v.func = alc287_fixup_legion_16ithg6_speakers,
 	},
+	[ALC287_FIXUP_YOGA_SLIM7_CARBON_SPEAKERS] = {
+		.type = HDA_FIXUP_FUNC,
+		.v.func = alc287_fixup_yoga_slim7_carbon_speakers,
+	},
 	[ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK] = {
 		.type = HDA_FIXUP_VERBS,
 		.v.verbs = (const struct hda_verb[]) {
@@ -8182,6 +8209,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x17aa, 0x3852, "Lenovo Yoga 7 14ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS),
 	SND_PCI_QUIRK(0x17aa, 0x3853, "Lenovo Yoga 7 15ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS),
 	SND_PCI_QUIRK(0x17aa, 0x3855, "Legion 7 16ITHG6", ALC287_FIXUP_LEGION_16ITHG6),
+	HDA_CODEC_QUIRK(0x17aa, 0x3856, "Lenovo Yoga Slim 7 Carbon 14ACN6", ALC287_FIXUP_YOGA_SLIM7_CARBON_SPEAKERS),
 	SND_PCI_QUIRK(0x17aa, 0x3862, "Lenovo IdeaPad Slim 3 15ABR8", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
 	SND_PCI_QUIRK(0x17aa, 0x3865, "Lenovo 13X", ALC287_FIXUP_CS35L41_I2C_2),
 	SND_PCI_QUIRK(0x17aa, 0x3866, "Lenovo 13X", ALC287_FIXUP_CS35L41_I2C_2),
-- 
2.43.0


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

* Re: [PATCH 1/4] ACPI: scan: Add CLSA0102 to the serial bus ignore list
  2026-09-20  9:28 ` [PATCH 1/4] ACPI: scan: Add CLSA0102 to the serial bus ignore list Ilya Pavlukhin
@ 2026-09-22 11:32   ` Rafael J. Wysocki (Intel)
  0 siblings, 0 replies; 9+ messages in thread
From: Rafael J. Wysocki (Intel) @ 2026-09-22 11:32 UTC (permalink / raw)
  To: Ilya Pavlukhin
  Cc: Takashi Iwai, Jaroslav Kysela, David Rhodes, Richard Fitzgerald,
	Rafael J . Wysocki, Len Brown, Hans de Goede, Ilpo Järvinen,
	linux-sound, patches, linux-acpi, platform-driver-x86,
	linux-kernel

On Sun, Sep 20, 2026 at 11:28 AM Ilya Pavlukhin <i.pavluhin@ya.ru> wrote:
>
> The Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0) describes the two CS35L41
> amplifiers of its bass speakers as a single ACPI node, HID CLSA0102,
> with two I2cSerialBusV2 resources (0x40 and 0x41), like CLSA0100 and
> CLSA0101 on the Legion 7. Skip the default I2C enumeration so that
> serial-multi-instantiate can create a client for each amplifier.
>
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=215632

For the change

Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>

> Assisted-by: Claude Opus 5

Come on.

> Signed-off-by: Ilya Pavlukhin <i.pavluhin@ya.ru>
> ---
>  drivers/acpi/scan.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index f48715ed8..1d9698df9 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -1768,6 +1768,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)
>                 /* Non-conforming _HID for Cirrus Logic already released */
>                 {"CLSA0100", },
>                 {"CLSA0101", },
> +               {"CLSA0102", },
>         /*
>          * Some ACPI devs contain SerialBus resources even though they are not
>          * attached to a serial bus at all.
> --
> 2.43.0
>

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

* Re: [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6
  2026-09-20  9:28 [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6 Ilya Pavlukhin
                   ` (3 preceding siblings ...)
  2026-09-20  9:28 ` [PATCH 4/4] ALSA: hda/realtek: Add quirk for Lenovo Yoga Slim 7 Carbon 14ACN6 Ilya Pavlukhin
@ 2026-09-29  9:45 ` Takashi Iwai
  2026-09-29 14:30   ` Stefan Binding
  4 siblings, 1 reply; 9+ messages in thread
From: Takashi Iwai @ 2026-09-29  9:45 UTC (permalink / raw)
  To: Ilya Pavlukhin
  Cc: Takashi Iwai, Jaroslav Kysela, David Rhodes, Richard Fitzgerald,
	Rafael J . Wysocki, Len Brown, Hans de Goede, Ilpo Järvinen,
	linux-sound, patches, linux-acpi, platform-driver-x86,
	linux-kernel

On Sun, 20 Sep 2026 11:28:04 +0200,
Ilya Pavlukhin wrote:
> 
> The Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0, Ryzen 5000) has four
> speakers. The two tweeters are driven directly by the ALC287, the two
> bass speakers by a pair of CS35L41 amplifiers on I2C. On Linux only
> the tweeters work [1].
> 
> The amplifiers are described by ACPI HID CLSA0102, without _DSD, in a
> single node with both I2C addresses, the same way as CLSA0100/CLSA0101
> on the Legion 7. Patches 1-3 add CLSA0102 next to them. The Windows
> Cirrus driver configures CLSA0102 with an external speaker supply, so
> external boost is used.
> 
> Patch 4 adds the codec quirk. The ALC287 only clocks the I2S bus to the
> amplifiers while pin 0x17 is enabled, and the BIOS marks that pin as
> unconnected.
> 
> Tested on a Yoga Slim 7 Carbon 14ACN6 (BIOS H5CN42WW) with all four
> speakers playing. The DSP firmware (cs35l41-dsp1-spk-prot-17aa3856*)
> is not in linux-firmware yet. For testing it was taken from the Lenovo
> Windows driver package (tuning "Lenovo-S760-17AA383D"). Without it the
> driver falls back to the default spk-prot firmware.
> 
> [1] https://bugzilla.kernel.org/show_bug.cgi?id=215632
> 
> Ilya Pavlukhin (4):
>   ACPI: scan: Add CLSA0102 to the serial bus ignore list
>   platform/x86: serial-multi-instantiate: Add CLSA0102
>   ALSA: hda: cs35l41: Add support for CLSA0102
>   ALSA: hda/realtek: Add quirk for Lenovo Yoga Slim 7 Carbon 14ACN6

I can take the series, but before that, I'd like hear a confirmation
from Cirrus people.


thanks,

Takashi

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

* Re: [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6
  2026-09-29  9:45 ` [PATCH 0/4] Add support for the bass speakers of " Takashi Iwai
@ 2026-09-29 14:30   ` Stefan Binding
  2026-09-29 14:44     ` Takashi Iwai
  0 siblings, 1 reply; 9+ messages in thread
From: Stefan Binding @ 2026-09-29 14:30 UTC (permalink / raw)
  To: Takashi Iwai, Ilya Pavlukhin
  Cc: Takashi Iwai, Jaroslav Kysela, David Rhodes, Richard Fitzgerald,
	Rafael J . Wysocki, Len Brown, Hans de Goede, Ilpo Järvinen,
	linux-sound, patches, linux-acpi, platform-driver-x86,
	linux-kernel

On 29/09/2026 10:45, Takashi Iwai wrote:
> On Sun, 20 Sep 2026 11:28:04 +0200,
> Ilya Pavlukhin wrote:
>> The Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0, Ryzen 5000) has four
>> speakers. The two tweeters are driven directly by the ALC287, the two
>> bass speakers by a pair of CS35L41 amplifiers on I2C. On Linux only
>> the tweeters work [1].
>>
>> The amplifiers are described by ACPI HID CLSA0102, without _DSD, in a
>> single node with both I2C addresses, the same way as CLSA0100/CLSA0101
>> on the Legion 7. Patches 1-3 add CLSA0102 next to them. The Windows
>> Cirrus driver configures CLSA0102 with an external speaker supply, so
>> external boost is used.
>>
>> Patch 4 adds the codec quirk. The ALC287 only clocks the I2S bus to the
>> amplifiers while pin 0x17 is enabled, and the BIOS marks that pin as
>> unconnected.
>>
>> Tested on a Yoga Slim 7 Carbon 14ACN6 (BIOS H5CN42WW) with all four
>> speakers playing. The DSP firmware (cs35l41-dsp1-spk-prot-17aa3856*)
>> is not in linux-firmware yet. For testing it was taken from the Lenovo
>> Windows driver package (tuning "Lenovo-S760-17AA383D"). Without it the
>> driver falls back to the default spk-prot firmware.
>>
>> [1] https://bugzilla.kernel.org/show_bug.cgi?id=215632
>>
>> Ilya Pavlukhin (4):
>>   ACPI: scan: Add CLSA0102 to the serial bus ignore list
>>   platform/x86: serial-multi-instantiate: Add CLSA0102
>>   ALSA: hda: cs35l41: Add support for CLSA0102
>>   ALSA: hda/realtek: Add quirk for Lenovo Yoga Slim 7 Carbon 14ACN6
> I can take the series, but before that, I'd like hear a confirmation
> from Cirrus people.

Looks all OK to me.
I'm going to send up firmware to linux-firmware for this laptop shortly.

Thanks,

Stefan

>
> thanks,
>
> Takashi

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

* Re: [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6
  2026-09-29 14:30   ` Stefan Binding
@ 2026-09-29 14:44     ` Takashi Iwai
  0 siblings, 0 replies; 9+ messages in thread
From: Takashi Iwai @ 2026-09-29 14:44 UTC (permalink / raw)
  To: Stefan Binding
  Cc: Takashi Iwai, Ilya Pavlukhin, Takashi Iwai, Jaroslav Kysela,
	David Rhodes, Richard Fitzgerald, Rafael J . Wysocki, Len Brown,
	Hans de Goede, Ilpo Järvinen, linux-sound, patches,
	linux-acpi, platform-driver-x86, linux-kernel

On Tue, 29 Sep 2026 16:30:42 +0200,
Stefan Binding wrote:
> 
> On 29/09/2026 10:45, Takashi Iwai wrote:
> > On Sun, 20 Sep 2026 11:28:04 +0200,
> > Ilya Pavlukhin wrote:
> >> The Lenovo Yoga Slim 7 Carbon 14ACN6 (82L0, Ryzen 5000) has four
> >> speakers. The two tweeters are driven directly by the ALC287, the two
> >> bass speakers by a pair of CS35L41 amplifiers on I2C. On Linux only
> >> the tweeters work [1].
> >>
> >> The amplifiers are described by ACPI HID CLSA0102, without _DSD, in a
> >> single node with both I2C addresses, the same way as CLSA0100/CLSA0101
> >> on the Legion 7. Patches 1-3 add CLSA0102 next to them. The Windows
> >> Cirrus driver configures CLSA0102 with an external speaker supply, so
> >> external boost is used.
> >>
> >> Patch 4 adds the codec quirk. The ALC287 only clocks the I2S bus to the
> >> amplifiers while pin 0x17 is enabled, and the BIOS marks that pin as
> >> unconnected.
> >>
> >> Tested on a Yoga Slim 7 Carbon 14ACN6 (BIOS H5CN42WW) with all four
> >> speakers playing. The DSP firmware (cs35l41-dsp1-spk-prot-17aa3856*)
> >> is not in linux-firmware yet. For testing it was taken from the Lenovo
> >> Windows driver package (tuning "Lenovo-S760-17AA383D"). Without it the
> >> driver falls back to the default spk-prot firmware.
> >>
> >> [1] https://bugzilla.kernel.org/show_bug.cgi?id=215632
> >>
> >> Ilya Pavlukhin (4):
> >>   ACPI: scan: Add CLSA0102 to the serial bus ignore list
> >>   platform/x86: serial-multi-instantiate: Add CLSA0102
> >>   ALSA: hda: cs35l41: Add support for CLSA0102
> >>   ALSA: hda/realtek: Add quirk for Lenovo Yoga Slim 7 Carbon 14ACN6
> > I can take the series, but before that, I'd like hear a confirmation
> > from Cirrus people.
> 
> Looks all OK to me.
> I'm going to send up firmware to linux-firmware for this laptop shortly.

Thanks for confirmation.

Now I applied all patches to sound git tree for-next branch.


Takashi

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

end of thread, other threads:[~2026-09-29 14:44 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-20  9:28 [PATCH 0/4] Add support for the bass speakers of Lenovo Yoga Slim 7 Carbon 14ACN6 Ilya Pavlukhin
2026-09-20  9:28 ` [PATCH 1/4] ACPI: scan: Add CLSA0102 to the serial bus ignore list Ilya Pavlukhin
2026-09-22 11:32   ` Rafael J. Wysocki (Intel)
2026-09-20  9:28 ` [PATCH 2/4] platform/x86: serial-multi-instantiate: Add CLSA0102 Ilya Pavlukhin
2026-09-20  9:28 ` [PATCH 3/4] ALSA: hda: cs35l41: Add support for CLSA0102 Ilya Pavlukhin
2026-09-20  9:28 ` [PATCH 4/4] ALSA: hda/realtek: Add quirk for Lenovo Yoga Slim 7 Carbon 14ACN6 Ilya Pavlukhin
2026-09-29  9:45 ` [PATCH 0/4] Add support for the bass speakers of " Takashi Iwai
2026-09-29 14:30   ` Stefan Binding
2026-09-29 14:44     ` Takashi Iwai

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

all inboxes | Powered by JetHome®