From aae500cbde8ccaeff5644a6352bd5e40145424e2 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 17 Jan 2024 12:25:30 +0100 Subject: [PATCH] 6.7-stable patches added patches: acpi-resource-add-another-dmi-match-for-the-tongfang-gmxxgxx.patch alsa-hda-add-driver-properties-for-cs35l41-for-lenovo-legion-slim-7-gen-8-serie.patch alsa-hda-cs35l41-prevent-firmware-load-if-spi-speed-too-low.patch alsa-hda-cs35l41-support-additional-dell-models-without-_dsd.patch alsa-hda-cs35l41-support-more-hp-models-without-_dsd.patch alsa-hda-realtek-add-quirks-for-dell-models.patch alsa-hda-realtek-enable-snd_pci_quirk-for-lenovo-legion-slim-7-gen-8-2023-serie.patch alsa-hda-realtek-fix-mute-and-mic-mute-leds-for-hp-envy-x360-13-ay0xxx.patch bus-moxtet-add-spi-device-table.patch bus-moxtet-mark-the-irq-as-shared.patch --- ...r-dmi-match-for-the-tongfang-gmxxgxx.patch | 41 +++ ...for-lenovo-legion-slim-7-gen-8-serie.patch | 45 +++ ...t-firmware-load-if-spi-speed-too-low.patch | 281 ++++++++++++++++++ ...-additional-dell-models-without-_dsd.patch | 44 +++ ...-support-more-hp-models-without-_dsd.patch | 85 ++++++ ...a-realtek-add-quirks-for-dell-models.patch | 78 +++++ ...enovo-legion-slim-7-gen-8-2023-serie.patch | 41 +++ ...mute-leds-for-hp-envy-x360-13-ay0xxx.patch | 34 +++ .../bus-moxtet-add-spi-device-table.patch | 47 +++ .../bus-moxtet-mark-the-irq-as-shared.patch | 38 +++ queue-6.7/series | 10 + 11 files changed, 744 insertions(+) create mode 100644 queue-6.7/acpi-resource-add-another-dmi-match-for-the-tongfang-gmxxgxx.patch create mode 100644 queue-6.7/alsa-hda-add-driver-properties-for-cs35l41-for-lenovo-legion-slim-7-gen-8-serie.patch create mode 100644 queue-6.7/alsa-hda-cs35l41-prevent-firmware-load-if-spi-speed-too-low.patch create mode 100644 queue-6.7/alsa-hda-cs35l41-support-additional-dell-models-without-_dsd.patch create mode 100644 queue-6.7/alsa-hda-cs35l41-support-more-hp-models-without-_dsd.patch create mode 100644 queue-6.7/alsa-hda-realtek-add-quirks-for-dell-models.patch create mode 100644 queue-6.7/alsa-hda-realtek-enable-snd_pci_quirk-for-lenovo-legion-slim-7-gen-8-2023-serie.patch create mode 100644 queue-6.7/alsa-hda-realtek-fix-mute-and-mic-mute-leds-for-hp-envy-x360-13-ay0xxx.patch create mode 100644 queue-6.7/bus-moxtet-add-spi-device-table.patch create mode 100644 queue-6.7/bus-moxtet-mark-the-irq-as-shared.patch diff --git a/queue-6.7/acpi-resource-add-another-dmi-match-for-the-tongfang-gmxxgxx.patch b/queue-6.7/acpi-resource-add-another-dmi-match-for-the-tongfang-gmxxgxx.patch new file mode 100644 index 00000000000..14710f45c3a --- /dev/null +++ b/queue-6.7/acpi-resource-add-another-dmi-match-for-the-tongfang-gmxxgxx.patch @@ -0,0 +1,41 @@ +From df0cced74159c79e36ce7971f0bf250673296d93 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Sat, 23 Dec 2023 15:57:06 +0100 +Subject: ACPI: resource: Add another DMI match for the TongFang GMxXGxx + +From: Hans de Goede + +commit df0cced74159c79e36ce7971f0bf250673296d93 upstream. + +The TongFang GMxXGxx, which needs IRQ overriding for the keyboard to work, +is also sold as the Eluktronics RP-15 which does not use the standard +TongFang GMxXGxx DMI board_name. + +Add an entry for this laptop to the irq1_edge_low_force_override[] DMI +table to make the internal keyboard functional. + +Reported-by: Luis Acuna +Signed-off-by: Hans de Goede +Cc: All applicable +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman +--- + drivers/acpi/resource.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/acpi/resource.c ++++ b/drivers/acpi/resource.c +@@ -511,6 +511,13 @@ static const struct dmi_system_id irq1_e + }, + }, + { ++ /* TongFang GMxXGxx sold as Eluktronics Inc. RP-15 */ ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "Eluktronics Inc."), ++ DMI_MATCH(DMI_BOARD_NAME, "RP-15"), ++ }, ++ }, ++ { + /* TongFang GM6XGxX/TUXEDO Stellaris 16 Gen5 AMD */ + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "GM6XGxX"), diff --git a/queue-6.7/alsa-hda-add-driver-properties-for-cs35l41-for-lenovo-legion-slim-7-gen-8-serie.patch b/queue-6.7/alsa-hda-add-driver-properties-for-cs35l41-for-lenovo-legion-slim-7-gen-8-serie.patch new file mode 100644 index 00000000000..3135763076b --- /dev/null +++ b/queue-6.7/alsa-hda-add-driver-properties-for-cs35l41-for-lenovo-legion-slim-7-gen-8-serie.patch @@ -0,0 +1,45 @@ +From ba7053b4b4a4ddcf530fa2b897e697004715d086 Mon Sep 17 00:00:00 2001 +From: Dorian Cruveiller +Date: Sat, 30 Dec 2023 12:43:12 +0100 +Subject: ALSA: hda: Add driver properties for cs35l41 for Lenovo Legion Slim 7 Gen 8 serie + +From: Dorian Cruveiller + +commit ba7053b4b4a4ddcf530fa2b897e697004715d086 upstream. + +Add driver properties on 4 models of this laptop serie since they don't +have _DSD in the ACPI table + +Signed-off-by: Dorian Cruveiller +Cc: # v6.7 +Link: https://lore.kernel.org/r/20231230114312.22118-1-doriancruveiller@gmail.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/cs35l41_hda_property.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/sound/pci/hda/cs35l41_hda_property.c ++++ b/sound/pci/hda/cs35l41_hda_property.c +@@ -71,6 +71,10 @@ static const struct cs35l41_config cs35l + { "10431F12", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, + { "10431F1F", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 0, 0, 0 }, + { "10431F62", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, ++ { "17AA38B4", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 }, ++ { "17AA38B5", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 }, ++ { "17AA38B6", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 }, ++ { "17AA38B7", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 }, + {} + }; + +@@ -379,6 +383,10 @@ static const struct cs35l41_prop_model c + { "CSC3551", "10431F12", generic_dsd_config }, + { "CSC3551", "10431F1F", generic_dsd_config }, + { "CSC3551", "10431F62", generic_dsd_config }, ++ { "CSC3551", "17AA38B4", generic_dsd_config }, ++ { "CSC3551", "17AA38B5", generic_dsd_config }, ++ { "CSC3551", "17AA38B6", generic_dsd_config }, ++ { "CSC3551", "17AA38B7", generic_dsd_config }, + {} + }; + diff --git a/queue-6.7/alsa-hda-cs35l41-prevent-firmware-load-if-spi-speed-too-low.patch b/queue-6.7/alsa-hda-cs35l41-prevent-firmware-load-if-spi-speed-too-low.patch new file mode 100644 index 00000000000..f7baa300e80 --- /dev/null +++ b/queue-6.7/alsa-hda-cs35l41-prevent-firmware-load-if-spi-speed-too-low.patch @@ -0,0 +1,281 @@ +From d110858a6925827609d11db8513d76750483ec06 Mon Sep 17 00:00:00 2001 +From: Stefan Binding +Date: Thu, 21 Dec 2023 13:25:17 +0000 +Subject: ALSA: hda: cs35l41: Prevent firmware load if SPI speed too low + +From: Stefan Binding + +commit d110858a6925827609d11db8513d76750483ec06 upstream. + +Some laptops without _DSD have the SPI speed set very low in the BIOS. +Since the SPI controller uses this speed as its max speed, the SPI +transactions are very slow. Firmware download writes to many registers, +and if the SPI speed is too slow, it can take a long time to download. +For this reason, disable firmware loading if the maximum SPI speed is +too low. Without Firmware, audio playback will work, but the volume +will be low to ensure safe operation of the CS35L41. + +Signed-off-by: Stefan Binding +Cc: # v6.7+ +Link: https://lore.kernel.org/r/20231221132518.3213-3-sbinding@opensource.cirrus.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/cs35l41_hda.c | 25 ++++++++++- + sound/pci/hda/cs35l41_hda.h | 12 +++++ + sound/pci/hda/cs35l41_hda_i2c.c | 2 + sound/pci/hda/cs35l41_hda_property.c | 74 ++++++++++++++++------------------- + sound/pci/hda/cs35l41_hda_spi.c | 2 + 5 files changed, 70 insertions(+), 45 deletions(-) + +--- a/sound/pci/hda/cs35l41_hda.c ++++ b/sound/pci/hda/cs35l41_hda.c +@@ -12,6 +12,7 @@ + #include + #include + #include ++#include + #include "hda_local.h" + #include "hda_auto_parser.h" + #include "hda_jack.h" +@@ -996,6 +997,11 @@ static int cs35l41_smart_amp(struct cs35 + __be32 halo_sts; + int ret; + ++ if (cs35l41->bypass_fw) { ++ dev_warn(cs35l41->dev, "Bypassing Firmware.\n"); ++ return 0; ++ } ++ + ret = cs35l41_init_dsp(cs35l41); + if (ret) { + dev_warn(cs35l41->dev, "Cannot Initialize Firmware. Error: %d\n", ret); +@@ -1588,6 +1594,7 @@ static int cs35l41_hda_read_acpi(struct + u32 values[HDA_MAX_COMPONENTS]; + struct acpi_device *adev; + struct device *physdev; ++ struct spi_device *spi; + const char *sub; + char *property; + size_t nval; +@@ -1610,7 +1617,7 @@ static int cs35l41_hda_read_acpi(struct + ret = cs35l41_add_dsd_properties(cs35l41, physdev, id, hid); + if (!ret) { + dev_info(cs35l41->dev, "Using extra _DSD properties, bypassing _DSD in ACPI\n"); +- goto put_physdev; ++ goto out; + } + + property = "cirrus,dev-index"; +@@ -1701,8 +1708,20 @@ static int cs35l41_hda_read_acpi(struct + hw_cfg->bst_type = CS35L41_EXT_BOOST; + + hw_cfg->valid = true; ++out: + put_device(physdev); + ++ cs35l41->bypass_fw = false; ++ if (cs35l41->control_bus == SPI) { ++ spi = to_spi_device(cs35l41->dev); ++ if (spi->max_speed_hz < CS35L41_MAX_ACCEPTABLE_SPI_SPEED_HZ) { ++ dev_warn(cs35l41->dev, ++ "SPI speed is too slow to support firmware download: %d Hz.\n", ++ spi->max_speed_hz); ++ cs35l41->bypass_fw = true; ++ } ++ } ++ + return 0; + + err: +@@ -1711,14 +1730,13 @@ err: + hw_cfg->gpio1.valid = false; + hw_cfg->gpio2.valid = false; + acpi_dev_put(cs35l41->dacpi); +-put_physdev: + put_device(physdev); + + return ret; + } + + int cs35l41_hda_probe(struct device *dev, const char *device_name, int id, int irq, +- struct regmap *regmap) ++ struct regmap *regmap, enum control_bus control_bus) + { + unsigned int regid, reg_revid; + struct cs35l41_hda *cs35l41; +@@ -1737,6 +1755,7 @@ int cs35l41_hda_probe(struct device *dev + cs35l41->dev = dev; + cs35l41->irq = irq; + cs35l41->regmap = regmap; ++ cs35l41->control_bus = control_bus; + dev_set_drvdata(dev, cs35l41); + + ret = cs35l41_hda_read_acpi(cs35l41, device_name, id); +--- a/sound/pci/hda/cs35l41_hda.h ++++ b/sound/pci/hda/cs35l41_hda.h +@@ -20,6 +20,8 @@ + #include + #include + ++#define CS35L41_MAX_ACCEPTABLE_SPI_SPEED_HZ 1000000 ++ + struct cs35l41_amp_cal_data { + u32 calTarget[2]; + u32 calTime[2]; +@@ -46,6 +48,11 @@ enum cs35l41_hda_gpio_function { + CS35l41_SYNC, + }; + ++enum control_bus { ++ I2C, ++ SPI ++}; ++ + struct cs35l41_hda { + struct device *dev; + struct regmap *regmap; +@@ -74,6 +81,9 @@ struct cs35l41_hda { + struct cs_dsp cs_dsp; + struct acpi_device *dacpi; + bool mute_override; ++ enum control_bus control_bus; ++ bool bypass_fw; ++ + }; + + enum halo_state { +@@ -85,7 +95,7 @@ enum halo_state { + extern const struct dev_pm_ops cs35l41_hda_pm_ops; + + int cs35l41_hda_probe(struct device *dev, const char *device_name, int id, int irq, +- struct regmap *regmap); ++ struct regmap *regmap, enum control_bus control_bus); + void cs35l41_hda_remove(struct device *dev); + int cs35l41_get_speaker_id(struct device *dev, int amp_index, int num_amps, int fixed_gpio_id); + +--- a/sound/pci/hda/cs35l41_hda_i2c.c ++++ b/sound/pci/hda/cs35l41_hda_i2c.c +@@ -30,7 +30,7 @@ static int cs35l41_hda_i2c_probe(struct + return -ENODEV; + + return cs35l41_hda_probe(&clt->dev, device_name, clt->addr, clt->irq, +- devm_regmap_init_i2c(clt, &cs35l41_regmap_i2c)); ++ devm_regmap_init_i2c(clt, &cs35l41_regmap_i2c), I2C); + } + + static void cs35l41_hda_i2c_remove(struct i2c_client *clt) +--- a/sound/pci/hda/cs35l41_hda_property.c ++++ b/sound/pci/hda/cs35l41_hda_property.c +@@ -16,10 +16,6 @@ + + struct cs35l41_config { + const char *ssid; +- enum { +- SPI, +- I2C +- } bus; + int num_amps; + enum { + INTERNAL, +@@ -35,46 +31,46 @@ struct cs35l41_config { + }; + + static const struct cs35l41_config cs35l41_config_table[] = { +- { "10280B27", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "10280B28", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "10280BEB", SPI, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 0, 0, 0 }, +- { "10280C4D", I2C, 4, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, CS35L41_LEFT, CS35L41_RIGHT }, 0, 1, -1, 1000, 4500, 24 }, ++ { "10280B27", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10280B28", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10280BEB", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 0, 0, 0 }, ++ { "10280C4D", 4, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, CS35L41_LEFT, CS35L41_RIGHT }, 0, 1, -1, 1000, 4500, 24 }, + /* + * Device 103C89C6 does have _DSD, however it is setup to use the wrong boost type. + * We can override the _DSD to correct the boost type here. + * Since this laptop has valid ACPI, we do not need to handle cs-gpios, since that already exists + * in the ACPI. The Reset GPIO is also valid, so we can use the Reset defined in _DSD. + */ +- { "103C89C6", SPI, 2, INTERNAL, { CS35L41_RIGHT, CS35L41_LEFT, 0, 0 }, -1, -1, -1, 1000, 4500, 24 }, +- { "104312AF", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "10431433", I2C, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, +- { "10431463", I2C, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, +- { "10431473", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 1000, 4500, 24 }, +- { "10431483", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 1000, 4500, 24 }, +- { "10431493", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "104314D3", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "104314E3", I2C, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, +- { "10431503", I2C, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, +- { "10431533", I2C, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, +- { "10431573", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "10431663", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 1000, 4500, 24 }, +- { "104316D3", SPI, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, +- { "104316F3", SPI, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, +- { "104317F3", I2C, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, +- { "10431863", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "104318D3", I2C, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 0, 0, 0 }, +- { "10431C9F", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "10431CAF", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "10431CCF", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "10431CDF", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "10431CEF", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, +- { "10431D1F", I2C, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, +- { "10431DA2", SPI, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, +- { "10431E02", SPI, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, +- { "10431EE2", I2C, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, -1, -1, 0, 0, 0 }, +- { "10431F12", I2C, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, +- { "10431F1F", SPI, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 0, 0, 0 }, +- { "10431F62", SPI, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, ++ { "103C89C6", 2, INTERNAL, { CS35L41_RIGHT, CS35L41_LEFT, 0, 0 }, -1, -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 }, ++ { "10431473", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 1000, 4500, 24 }, ++ { "10431483", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 1000, 4500, 24 }, ++ { "10431493", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "104314D3", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "104314E3", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, ++ { "10431503", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, ++ { "10431533", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, ++ { "10431573", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10431663", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 1000, 4500, 24 }, ++ { "104316D3", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, ++ { "104316F3", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, ++ { "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 }, ++ { "10431C9F", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10431CAF", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10431CCF", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10431CDF", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10431CEF", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10431D1F", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, ++ { "10431DA2", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, ++ { "10431E02", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, ++ { "10431EE2", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, -1, -1, 0, 0, 0 }, ++ { "10431F12", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4500, 24 }, ++ { "10431F1F", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 0, 0, 0 }, ++ { "10431F62", 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 0, 0, 0 }, + {} + }; + +@@ -212,7 +208,7 @@ static int generic_dsd_config(struct cs3 + "_DSD already exists.\n"); + } + +- if (cfg->bus == SPI) { ++ if (cs35l41->control_bus == SPI) { + cs35l41->index = id; + + /* +--- a/sound/pci/hda/cs35l41_hda_spi.c ++++ b/sound/pci/hda/cs35l41_hda_spi.c +@@ -26,7 +26,7 @@ static int cs35l41_hda_spi_probe(struct + return -ENODEV; + + return cs35l41_hda_probe(&spi->dev, device_name, spi_get_chipselect(spi, 0), spi->irq, +- devm_regmap_init_spi(spi, &cs35l41_regmap_spi)); ++ devm_regmap_init_spi(spi, &cs35l41_regmap_spi), SPI); + } + + static void cs35l41_hda_spi_remove(struct spi_device *spi) diff --git a/queue-6.7/alsa-hda-cs35l41-support-additional-dell-models-without-_dsd.patch b/queue-6.7/alsa-hda-cs35l41-support-additional-dell-models-without-_dsd.patch new file mode 100644 index 00000000000..23ea62de202 --- /dev/null +++ b/queue-6.7/alsa-hda-cs35l41-support-additional-dell-models-without-_dsd.patch @@ -0,0 +1,44 @@ +From ee694e7db47e1af00ffb29f569904a9ed576868f Mon Sep 17 00:00:00 2001 +From: Stefan Binding +Date: Thu, 21 Dec 2023 13:25:16 +0000 +Subject: ALSA: hda: cs35l41: Support additional Dell models without _DSD + +From: Stefan Binding + +commit ee694e7db47e1af00ffb29f569904a9ed576868f upstream. + +Add new model entries into configuration table. + +Signed-off-by: Stefan Binding +Cc: # v6.7+ +Link: https://lore.kernel.org/r/20231221132518.3213-2-sbinding@opensource.cirrus.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/cs35l41_hda_property.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/sound/pci/hda/cs35l41_hda_property.c ++++ b/sound/pci/hda/cs35l41_hda_property.c +@@ -35,6 +35,10 @@ struct cs35l41_config { + }; + + static const struct cs35l41_config cs35l41_config_table[] = { ++ { "10280B27", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10280B28", SPI, 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, 2, 0, 1000, 4500, 24 }, ++ { "10280BEB", SPI, 2, EXTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 1, -1, 0, 0, 0, 0 }, ++ { "10280C4D", I2C, 4, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, CS35L41_LEFT, CS35L41_RIGHT }, 0, 1, -1, 1000, 4500, 24 }, + /* + * Device 103C89C6 does have _DSD, however it is setup to use the wrong boost type. + * We can override the _DSD to correct the boost type here. +@@ -345,6 +349,10 @@ 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 }, ++ { "CSC3551", "10280B27", generic_dsd_config }, ++ { "CSC3551", "10280B28", generic_dsd_config }, ++ { "CSC3551", "10280BEB", generic_dsd_config }, ++ { "CSC3551", "10280C4D", generic_dsd_config }, + { "CSC3551", "103C89C6", generic_dsd_config }, + { "CSC3551", "104312AF", generic_dsd_config }, + { "CSC3551", "10431433", generic_dsd_config }, diff --git a/queue-6.7/alsa-hda-cs35l41-support-more-hp-models-without-_dsd.patch b/queue-6.7/alsa-hda-cs35l41-support-more-hp-models-without-_dsd.patch new file mode 100644 index 00000000000..cfc25fc175c --- /dev/null +++ b/queue-6.7/alsa-hda-cs35l41-support-more-hp-models-without-_dsd.patch @@ -0,0 +1,85 @@ +From 7d65d70161ef75a3991480c91668ac11acedf211 Mon Sep 17 00:00:00 2001 +From: Lorenz Brun +Date: Tue, 2 Jan 2024 22:48:20 +0100 +Subject: ALSA: hda: cs35l41: Support more HP models without _DSD + +From: Lorenz Brun + +commit 7d65d70161ef75a3991480c91668ac11acedf211 upstream. + +This adds overrides for a series of notebooks using a common config +taken from HP's proprietary Windows driver. + +This has been tested on a HP 15-ey0xxxx device (subsystem 103C8A31) +together with another Realtek quirk and the calibration files from the +proprietary driver. + +Signed-off-by: Lorenz Brun +Cc: # v6.7 +Link: https://lore.kernel.org/r/20240102214821.3394810-1-lorenz@brun.one +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/cs35l41_hda_property.c | 44 +++++++++++++++++++++++++++++++++++ + 1 file changed, 44 insertions(+) + +--- a/sound/pci/hda/cs35l41_hda_property.c ++++ b/sound/pci/hda/cs35l41_hda_property.c +@@ -42,6 +42,28 @@ static const struct cs35l41_config cs35l + * in the ACPI. The Reset GPIO is also valid, so we can use the Reset defined in _DSD. + */ + { "103C89C6", 2, INTERNAL, { CS35L41_RIGHT, CS35L41_LEFT, 0, 0 }, -1, -1, -1, 1000, 4500, 24 }, ++ { "103C8A28", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8A29", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8A2A", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8A2B", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8A2C", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8A2D", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8A2E", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8A30", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8A31", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BB3", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BB4", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BDF", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BE0", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BE1", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BE2", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BE9", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BDD", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BDE", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BE3", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BE5", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8BE6", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 24 }, ++ { "103C8B3A", 2, INTERNAL, { CS35L41_LEFT, CS35L41_RIGHT, 0, 0 }, 0, 1, -1, 1000, 4100, 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 }, +@@ -354,6 +376,28 @@ static const struct cs35l41_prop_model c + { "CSC3551", "10280BEB", generic_dsd_config }, + { "CSC3551", "10280C4D", generic_dsd_config }, + { "CSC3551", "103C89C6", generic_dsd_config }, ++ { "CSC3551", "103C8A28", generic_dsd_config }, ++ { "CSC3551", "103C8A29", generic_dsd_config }, ++ { "CSC3551", "103C8A2A", generic_dsd_config }, ++ { "CSC3551", "103C8A2B", generic_dsd_config }, ++ { "CSC3551", "103C8A2C", generic_dsd_config }, ++ { "CSC3551", "103C8A2D", generic_dsd_config }, ++ { "CSC3551", "103C8A2E", generic_dsd_config }, ++ { "CSC3551", "103C8A30", generic_dsd_config }, ++ { "CSC3551", "103C8A31", generic_dsd_config }, ++ { "CSC3551", "103C8BB3", generic_dsd_config }, ++ { "CSC3551", "103C8BB4", generic_dsd_config }, ++ { "CSC3551", "103C8BDF", generic_dsd_config }, ++ { "CSC3551", "103C8BE0", generic_dsd_config }, ++ { "CSC3551", "103C8BE1", generic_dsd_config }, ++ { "CSC3551", "103C8BE2", generic_dsd_config }, ++ { "CSC3551", "103C8BE9", generic_dsd_config }, ++ { "CSC3551", "103C8BDD", generic_dsd_config }, ++ { "CSC3551", "103C8BDE", generic_dsd_config }, ++ { "CSC3551", "103C8BE3", generic_dsd_config }, ++ { "CSC3551", "103C8BE5", generic_dsd_config }, ++ { "CSC3551", "103C8BE6", generic_dsd_config }, ++ { "CSC3551", "103C8B3A", generic_dsd_config }, + { "CSC3551", "104312AF", generic_dsd_config }, + { "CSC3551", "10431433", generic_dsd_config }, + { "CSC3551", "10431463", generic_dsd_config }, diff --git a/queue-6.7/alsa-hda-realtek-add-quirks-for-dell-models.patch b/queue-6.7/alsa-hda-realtek-add-quirks-for-dell-models.patch new file mode 100644 index 00000000000..71305ab8bc2 --- /dev/null +++ b/queue-6.7/alsa-hda-realtek-add-quirks-for-dell-models.patch @@ -0,0 +1,78 @@ +From 423206604b28174698d77bf5ea81365cdd6c0f77 Mon Sep 17 00:00:00 2001 +From: Stefan Binding +Date: Thu, 21 Dec 2023 13:25:18 +0000 +Subject: ALSA: hda/realtek: Add quirks for Dell models + +From: Stefan Binding + +commit 423206604b28174698d77bf5ea81365cdd6c0f77 upstream. + +These models use 2 or 4 CS35L41 amps with HDA using SPI and I2C. +Models use internal and external boost. +All models require DSD support to be added inside +cs35l41_hda_property.c + +Signed-off-by: Stefan Binding +Cc: # v6.7+ +Link: https://lore.kernel.org/r/20231221132518.3213-4-sbinding@opensource.cirrus.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c +index c3a756528886..19040887ff67 100644 +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -6956,6 +6956,11 @@ static void cs35l41_fixup_i2c_two(struct hda_codec *cdc, const struct hda_fixup + cs35l41_generic_fixup(cdc, action, "i2c", "CSC3551", 2); + } + ++static void cs35l41_fixup_i2c_four(struct hda_codec *cdc, const struct hda_fixup *fix, int action) ++{ ++ cs35l41_generic_fixup(cdc, action, "i2c", "CSC3551", 4); ++} ++ + static void cs35l41_fixup_spi_two(struct hda_codec *codec, const struct hda_fixup *fix, int action) + { + cs35l41_generic_fixup(codec, action, "spi", "CSC3551", 2); +@@ -7441,6 +7446,7 @@ enum { + ALC287_FIXUP_LEGION_16ACHG6, + ALC287_FIXUP_CS35L41_I2C_2, + ALC287_FIXUP_CS35L41_I2C_2_HP_GPIO_LED, ++ ALC287_FIXUP_CS35L41_I2C_4, + ALC245_FIXUP_CS35L41_SPI_2, + ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED, + ALC245_FIXUP_CS35L41_SPI_4, +@@ -9427,6 +9433,10 @@ static const struct hda_fixup alc269_fixups[] = { + .chained = true, + .chain_id = ALC285_FIXUP_HP_MUTE_LED, + }, ++ [ALC287_FIXUP_CS35L41_I2C_4] = { ++ .type = HDA_FIXUP_FUNC, ++ .v.func = cs35l41_fixup_i2c_four, ++ }, + [ALC245_FIXUP_CS35L41_SPI_2] = { + .type = HDA_FIXUP_FUNC, + .v.func = cs35l41_fixup_spi_two, +@@ -9703,6 +9713,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { + SND_PCI_QUIRK(0x1028, 0x0a9e, "Dell Latitude 5430", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE), + SND_PCI_QUIRK(0x1028, 0x0b19, "Dell XPS 15 9520", ALC289_FIXUP_DUAL_SPK), + SND_PCI_QUIRK(0x1028, 0x0b1a, "Dell Precision 5570", ALC289_FIXUP_DUAL_SPK), ++ SND_PCI_QUIRK(0x1028, 0x0b27, "Dell", ALC245_FIXUP_CS35L41_SPI_2), ++ SND_PCI_QUIRK(0x1028, 0x0b28, "Dell", ALC245_FIXUP_CS35L41_SPI_2), + SND_PCI_QUIRK(0x1028, 0x0b37, "Dell Inspiron 16 Plus 7620 2-in-1", ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS), + SND_PCI_QUIRK(0x1028, 0x0b71, "Dell Inspiron 16 Plus 7620", ALC295_FIXUP_DELL_INSPIRON_TOP_SPEAKERS), + SND_PCI_QUIRK(0x1028, 0x0beb, "Dell XPS 15 9530 (2023)", ALC289_FIXUP_DELL_CS35L41_SPI_2), +@@ -9713,6 +9725,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { + SND_PCI_QUIRK(0x1028, 0x0c1c, "Dell Precision 3540", ALC236_FIXUP_DELL_DUAL_CODECS), + SND_PCI_QUIRK(0x1028, 0x0c1d, "Dell Precision 3440", ALC236_FIXUP_DELL_DUAL_CODECS), + SND_PCI_QUIRK(0x1028, 0x0c1e, "Dell Precision 3540", ALC236_FIXUP_DELL_DUAL_CODECS), ++ SND_PCI_QUIRK(0x1028, 0x0c4d, "Dell", ALC287_FIXUP_CS35L41_I2C_4), + SND_PCI_QUIRK(0x1028, 0x0cbd, "Dell Oasis 13 CS MTL-U", ALC289_FIXUP_DELL_CS35L41_SPI_2), + SND_PCI_QUIRK(0x1028, 0x0cbe, "Dell Oasis 13 2-IN-1 MTL-U", ALC289_FIXUP_DELL_CS35L41_SPI_2), + SND_PCI_QUIRK(0x1028, 0x0cbf, "Dell Oasis 13 Low Weight MTU-L", ALC289_FIXUP_DELL_CS35L41_SPI_2), +-- +2.43.0 + diff --git a/queue-6.7/alsa-hda-realtek-enable-snd_pci_quirk-for-lenovo-legion-slim-7-gen-8-2023-serie.patch b/queue-6.7/alsa-hda-realtek-enable-snd_pci_quirk-for-lenovo-legion-slim-7-gen-8-2023-serie.patch new file mode 100644 index 00000000000..9501470fdb9 --- /dev/null +++ b/queue-6.7/alsa-hda-realtek-enable-snd_pci_quirk-for-lenovo-legion-slim-7-gen-8-2023-serie.patch @@ -0,0 +1,41 @@ +From 99af5b11c57d33c32d761797f6308b40936c22ed Mon Sep 17 00:00:00 2001 +From: Dorian Cruveiller +Date: Sat, 30 Dec 2023 12:40:01 +0100 +Subject: ALSA: hda/realtek: enable SND_PCI_QUIRK for Lenovo Legion Slim 7 Gen 8 (2023) serie + +From: Dorian Cruveiller + +commit 99af5b11c57d33c32d761797f6308b40936c22ed upstream. + +Link up the realtek audio chip to the cirrus cs35l41 sound amplifier chip +on 4 models of the Lenovo legion slim 7 gen 8 (2023). These models are +16IRH8 (2 differents subsystem id) and 16APH8 (2 differents subsystem ids). + +Subsystem ids list: + - 17AA38B4 + - 17AA38B5 + - 17AA38B6 + - 17AA38B7 + +Signed-off-by: Dorian Cruveiller +Cc: # v6.7 +Link: https://lore.kernel.org/r/20231230114001.19855-1-doriancruveiller@gmail.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -10242,6 +10242,10 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x17aa, 0x3886, "Y780 VECO DUAL", ALC287_FIXUP_TAS2781_I2C), + SND_PCI_QUIRK(0x17aa, 0x38a7, "Y780P AMD YG dual", ALC287_FIXUP_TAS2781_I2C), + SND_PCI_QUIRK(0x17aa, 0x38a8, "Y780P AMD VECO dual", ALC287_FIXUP_TAS2781_I2C), ++ SND_PCI_QUIRK(0x17aa, 0x38b4, "Legion Slim 7 16IRH8", ALC287_FIXUP_CS35L41_I2C_2), ++ SND_PCI_QUIRK(0x17aa, 0x38b5, "Legion Slim 7 16IRH8", ALC287_FIXUP_CS35L41_I2C_2), ++ SND_PCI_QUIRK(0x17aa, 0x38b6, "Legion Slim 7 16APH8", ALC287_FIXUP_CS35L41_I2C_2), ++ SND_PCI_QUIRK(0x17aa, 0x38b7, "Legion Slim 7 16APH8", ALC287_FIXUP_CS35L41_I2C_2), + SND_PCI_QUIRK(0x17aa, 0x38ba, "Yoga S780-14.5 Air AMD quad YC", ALC287_FIXUP_TAS2781_I2C), + SND_PCI_QUIRK(0x17aa, 0x38bb, "Yoga S780-14.5 Air AMD quad AAC", ALC287_FIXUP_TAS2781_I2C), + SND_PCI_QUIRK(0x17aa, 0x38be, "Yoga S980-14.5 proX YC Dual", ALC287_FIXUP_TAS2781_I2C), diff --git a/queue-6.7/alsa-hda-realtek-fix-mute-and-mic-mute-leds-for-hp-envy-x360-13-ay0xxx.patch b/queue-6.7/alsa-hda-realtek-fix-mute-and-mic-mute-leds-for-hp-envy-x360-13-ay0xxx.patch new file mode 100644 index 00000000000..aafd4ad5cad --- /dev/null +++ b/queue-6.7/alsa-hda-realtek-fix-mute-and-mic-mute-leds-for-hp-envy-x360-13-ay0xxx.patch @@ -0,0 +1,34 @@ +From 6b3d14b7f9b1acaf7303d8499836bf78ee9c470c Mon Sep 17 00:00:00 2001 +From: Tom Jason Schwanke +Date: Mon, 8 Jan 2024 16:15:21 +0100 +Subject: ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP Envy X360 13-ay0xxx + +From: Tom Jason Schwanke + +commit 6b3d14b7f9b1acaf7303d8499836bf78ee9c470c upstream. + +This enables the mute and mic-mute LEDs on the HP Envy X360 13-ay0xxx +convertibles. +The quirk 'ALC245_FIXUP_HP_X360_MUTE_LEDS' already exists and is now +enabled for this device. + +Link: https://bugzilla.kernel.org/show_bug.cgi?id=216197 +Signed-off-by: Tom Jason Schwanke +Cc: +Link: https://lore.kernel.org/r/651b26e9-e86b-45dd-aa90-3e43d6b99823@catboys.cloud +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -9829,6 +9829,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x103c, 0x8735, "HP ProBook 435 G7", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), + SND_PCI_QUIRK(0x103c, 0x8736, "HP", ALC285_FIXUP_HP_GPIO_AMP_INIT), + SND_PCI_QUIRK(0x103c, 0x8760, "HP", ALC285_FIXUP_HP_MUTE_LED), ++ SND_PCI_QUIRK(0x103c, 0x876e, "HP ENVY x360 Convertible 13-ay0xxx", ALC245_FIXUP_HP_X360_MUTE_LEDS), + SND_PCI_QUIRK(0x103c, 0x877a, "HP", ALC285_FIXUP_HP_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x877d, "HP", ALC236_FIXUP_HP_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x8780, "HP ZBook Fury 17 G7 Mobile Workstation", diff --git a/queue-6.7/bus-moxtet-add-spi-device-table.patch b/queue-6.7/bus-moxtet-add-spi-device-table.patch new file mode 100644 index 00000000000..1972b2dfa88 --- /dev/null +++ b/queue-6.7/bus-moxtet-add-spi-device-table.patch @@ -0,0 +1,47 @@ +From aaafe88d5500ba18b33be72458439367ef878788 Mon Sep 17 00:00:00 2001 +From: Sjoerd Simons +Date: Tue, 28 Nov 2023 22:35:05 +0100 +Subject: bus: moxtet: Add spi device table +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Sjoerd Simons + +commit aaafe88d5500ba18b33be72458439367ef878788 upstream. + +The moxtet module fails to auto-load on. Add a SPI id table to +allow it to do so. + +Signed-off-by: Sjoerd Simons +Cc: +Reviewed-by: Marek Behún +Signed-off-by: Gregory CLEMENT +Signed-off-by: Greg Kroah-Hartman +--- + drivers/bus/moxtet.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/bus/moxtet.c ++++ b/drivers/bus/moxtet.c +@@ -830,6 +830,12 @@ static void moxtet_remove(struct spi_dev + mutex_destroy(&moxtet->lock); + } + ++static const struct spi_device_id moxtet_spi_ids[] = { ++ { "moxtet" }, ++ { }, ++}; ++MODULE_DEVICE_TABLE(spi, moxtet_spi_ids); ++ + static const struct of_device_id moxtet_dt_ids[] = { + { .compatible = "cznic,moxtet" }, + {}, +@@ -841,6 +847,7 @@ static struct spi_driver moxtet_spi_driv + .name = "moxtet", + .of_match_table = moxtet_dt_ids, + }, ++ .id_table = moxtet_spi_ids, + .probe = moxtet_probe, + .remove = moxtet_remove, + }; diff --git a/queue-6.7/bus-moxtet-mark-the-irq-as-shared.patch b/queue-6.7/bus-moxtet-mark-the-irq-as-shared.patch new file mode 100644 index 00000000000..4418ec17e30 --- /dev/null +++ b/queue-6.7/bus-moxtet-mark-the-irq-as-shared.patch @@ -0,0 +1,38 @@ +From e7830f5a83e96d8cb8efc0412902a03008f8fbe3 Mon Sep 17 00:00:00 2001 +From: Sjoerd Simons +Date: Tue, 28 Nov 2023 22:35:04 +0100 +Subject: bus: moxtet: Mark the irq as shared +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Sjoerd Simons + +commit e7830f5a83e96d8cb8efc0412902a03008f8fbe3 upstream. + +The Turris Mox shares the moxtet IRQ with various devices on the board, +so mark the IRQ as shared in the driver as well. + +Without this loading the module will fail with: + genirq: Flags mismatch irq 40. 00002002 (moxtet) vs. 00002080 (mcp7940x) + +Signed-off-by: Sjoerd Simons +Cc: # v6.2+ +Reviewed-by: Marek Behún +Signed-off-by: Gregory CLEMENT +Signed-off-by: Greg Kroah-Hartman +--- + drivers/bus/moxtet.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/bus/moxtet.c ++++ b/drivers/bus/moxtet.c +@@ -755,7 +755,7 @@ static int moxtet_irq_setup(struct moxte + moxtet->irq.masked = ~0; + + ret = request_threaded_irq(moxtet->dev_irq, NULL, moxtet_irq_thread_fn, +- IRQF_ONESHOT, "moxtet", moxtet); ++ IRQF_SHARED | IRQF_ONESHOT, "moxtet", moxtet); + if (ret < 0) + goto err_free; + diff --git a/queue-6.7/series b/queue-6.7/series index 4c6ad7e1923..6a8ab146867 100644 --- a/queue-6.7/series +++ b/queue-6.7/series @@ -1 +1,11 @@ f2fs-explicitly-null-terminate-the-xattr-list.patch +alsa-hda-realtek-add-quirks-for-dell-models.patch +alsa-hda-cs35l41-support-additional-dell-models-without-_dsd.patch +alsa-hda-cs35l41-prevent-firmware-load-if-spi-speed-too-low.patch +alsa-hda-add-driver-properties-for-cs35l41-for-lenovo-legion-slim-7-gen-8-serie.patch +alsa-hda-realtek-enable-snd_pci_quirk-for-lenovo-legion-slim-7-gen-8-2023-serie.patch +alsa-hda-realtek-fix-mute-and-mic-mute-leds-for-hp-envy-x360-13-ay0xxx.patch +alsa-hda-cs35l41-support-more-hp-models-without-_dsd.patch +acpi-resource-add-another-dmi-match-for-the-tongfang-gmxxgxx.patch +bus-moxtet-mark-the-irq-as-shared.patch +bus-moxtet-add-spi-device-table.patch -- 2.47.3