From: Greg Kroah-Hartman Date: Tue, 18 Jan 2022 09:29:00 +0000 (+0100) Subject: 5.16-stable patches X-Git-Tag: v5.16.2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cda69abe135ca7397bde0659ca937a30ab37dbb4;p=thirdparty%2Fkernel%2Fstable-queue.git 5.16-stable patches added patches: alsa-hda-alc287-add-lenovo-ideapad-slim-9i-14itl5-speaker-quirk.patch alsa-hda-realtek-add-speaker-fixup-for-some-yoga-15itl5-devices.patch alsa-hda-realtek-fix-silent-output-on-gigabyte-x570-aorus-master-after-reboot-from-windows.patch alsa-hda-realtek-use-alc285_fixup_hp_gpio_led-on-another-hp-laptop.patch alsa-hda-tegra-fix-tegra194-hda-reset-failure.patch --- diff --git a/queue-5.16/alsa-hda-alc287-add-lenovo-ideapad-slim-9i-14itl5-speaker-quirk.patch b/queue-5.16/alsa-hda-alc287-add-lenovo-ideapad-slim-9i-14itl5-speaker-quirk.patch new file mode 100644 index 00000000000..0b109345418 --- /dev/null +++ b/queue-5.16/alsa-hda-alc287-add-lenovo-ideapad-slim-9i-14itl5-speaker-quirk.patch @@ -0,0 +1,36 @@ +From b81e9e5c723de936652653241d3dc4f33ae05e8c Mon Sep 17 00:00:00 2001 +From: Bart Kroon +Date: Mon, 13 Dec 2021 19:20:43 +0100 +Subject: ALSA: hda: ALC287: Add Lenovo IdeaPad Slim 9i 14ITL5 speaker quirk + +From: Bart Kroon + +commit b81e9e5c723de936652653241d3dc4f33ae05e8c upstream. + +The speaker fixup that is used for the Yoga 7 14ITL5 also applies to +the IdeaPad Slim 9i 14ITL5. The attached patch applies the quirk to +initialise the amplifier on the IdeaPad Slim 9i as well. + +This is validated to work on my laptop. + +[ corrected the quirk entry position by tiwai ] + +Signed-off-by: Bart Kroon +Cc: +Link: https://lore.kernel.org/r/JAG24R.7NLJGWBF4G8U@tarmack.eu +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 +@@ -8952,6 +8952,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x17aa, 0x31af, "ThinkCentre Station", ALC623_FIXUP_LENOVO_THINKSTATION_P340), + SND_PCI_QUIRK(0x17aa, 0x3818, "Lenovo C940", ALC298_FIXUP_LENOVO_SPK_VOLUME), + SND_PCI_QUIRK(0x17aa, 0x3827, "Ideapad S740", ALC285_FIXUP_IDEAPAD_S740_COEF), ++ SND_PCI_QUIRK(0x17aa, 0x3834, "Lenovo IdeaPad Slim 9i 14ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS), + SND_PCI_QUIRK(0x17aa, 0x3843, "Yoga 9i", ALC287_FIXUP_IDEAPAD_BASS_SPK_AMP), + SND_PCI_QUIRK(0x17aa, 0x3813, "Legion 7i 15IMHG05", ALC287_FIXUP_LEGION_15IMHG05_SPEAKERS), + SND_PCI_QUIRK(0x17aa, 0x3852, "Lenovo Yoga 7 14ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS), diff --git a/queue-5.16/alsa-hda-realtek-add-speaker-fixup-for-some-yoga-15itl5-devices.patch b/queue-5.16/alsa-hda-realtek-add-speaker-fixup-for-some-yoga-15itl5-devices.patch new file mode 100644 index 00000000000..ae04e7cbe0d --- /dev/null +++ b/queue-5.16/alsa-hda-realtek-add-speaker-fixup-for-some-yoga-15itl5-devices.patch @@ -0,0 +1,33 @@ +From 6dc86976220cc904e87ee58e4be19dd90d6a36d5 Mon Sep 17 00:00:00 2001 +From: Arie Geiger +Date: Thu, 23 Dec 2021 15:28:57 -0800 +Subject: ALSA: hda/realtek: Add speaker fixup for some Yoga 15ITL5 devices + +From: Arie Geiger + +commit 6dc86976220cc904e87ee58e4be19dd90d6a36d5 upstream. + +This patch adds another possible subsystem ID for the ALC287 used by +the Lenovo Yoga 15ITL5. +It uses the same initalization as the others. +This patch has been tested and works for my device. + +Signed-off-by: Arie Geiger +Cc: +Link: https://lore.kernel.org/r/20211223232857.30741-1-arsgeiger@gmail.com +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 +@@ -8927,6 +8927,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x17aa, 0x3813, "Legion 7i 15IMHG05", ALC287_FIXUP_LEGION_15IMHG05_SPEAKERS), + 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, 0x384a, "Lenovo Yoga 7 15ITL5", ALC287_FIXUP_YOGA7_14ITL_SPEAKERS), + SND_PCI_QUIRK(0x17aa, 0x3819, "Lenovo 13s Gen2 ITL", ALC287_FIXUP_13S_GEN2_SPEAKERS), + SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI), + SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), diff --git a/queue-5.16/alsa-hda-realtek-fix-silent-output-on-gigabyte-x570-aorus-master-after-reboot-from-windows.patch b/queue-5.16/alsa-hda-realtek-fix-silent-output-on-gigabyte-x570-aorus-master-after-reboot-from-windows.patch new file mode 100644 index 00000000000..75602a7c143 --- /dev/null +++ b/queue-5.16/alsa-hda-realtek-fix-silent-output-on-gigabyte-x570-aorus-master-after-reboot-from-windows.patch @@ -0,0 +1,105 @@ +From c1933008679586b20437280463110c967d66f865 Mon Sep 17 00:00:00 2001 +From: Christian Lachner +Date: Mon, 3 Jan 2022 15:05:17 +0100 +Subject: ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master after reboot from Windows + +From: Christian Lachner + +commit c1933008679586b20437280463110c967d66f865 upstream. + +This patch addresses an issue where after rebooting from Windows into Linux +there would be no audio output. + +It turns out that the Realtek Audio driver on Windows changes some coeffs +which are not being reset/reinitialized when rebooting the machine. As a +result, there is no audio output until these coeffs are being reset to +their initial state. This patch takes care of that by setting known-good +(initial) values to the coeffs. + +We initially relied upon alc1220_fixup_clevo_p950() to fix some pins in the +connection list. However, it also sets coef 0x7 which does not need to be +touched. Furthermore, to prevent mixing device-specific quirks I introduced +a new alc1220_fixup_gb_x570() which is heavily based on +alc1220_fixup_clevo_p950() but does not set coeff 0x7 and fixes the coeffs +that are actually needed instead. + +This new alc1220_fixup_gb_x570() is believed to also work for other boards, +like the Gigabyte X570 Aorus Extreme and the newer Gigabyte Aorus X570S +Master. However, as there is no way for me to test these I initially only +enable this new behaviour for the mainboard I have which is the Gigabyte +X570(non-S) Aorus Master. + +I tested this patch on the 5.15 branch as well as on master and it is +working well for me. + +BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=205275 +Signed-off-by: Christian Lachner +Fixes: 0d45e86d2267d ("ALSA: hda/realtek - Fix silent output on Gigabyte X570 Aorus Master") +Cc: +Link: https://lore.kernel.org/r/20220103140517.30273-2-gladiac@gmail.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/patch_realtek.c | 30 +++++++++++++++++++++++++++++- + 1 file changed, 29 insertions(+), 1 deletion(-) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -1924,6 +1924,7 @@ enum { + ALC887_FIXUP_ASUS_BASS, + ALC887_FIXUP_BASS_CHMAP, + ALC1220_FIXUP_GB_DUAL_CODECS, ++ ALC1220_FIXUP_GB_X570, + ALC1220_FIXUP_CLEVO_P950, + ALC1220_FIXUP_CLEVO_PB51ED, + ALC1220_FIXUP_CLEVO_PB51ED_PINS, +@@ -2113,6 +2114,29 @@ static void alc1220_fixup_gb_dual_codecs + } + } + ++static void alc1220_fixup_gb_x570(struct hda_codec *codec, ++ const struct hda_fixup *fix, ++ int action) ++{ ++ static const hda_nid_t conn1[] = { 0x0c }; ++ static const struct coef_fw gb_x570_coefs[] = { ++ WRITE_COEF(0x1a, 0x01c1), ++ WRITE_COEF(0x1b, 0x0202), ++ WRITE_COEF(0x43, 0x3005), ++ {} ++ }; ++ ++ switch (action) { ++ case HDA_FIXUP_ACT_PRE_PROBE: ++ snd_hda_override_conn_list(codec, 0x14, ARRAY_SIZE(conn1), conn1); ++ snd_hda_override_conn_list(codec, 0x1b, ARRAY_SIZE(conn1), conn1); ++ break; ++ case HDA_FIXUP_ACT_INIT: ++ alc_process_coef_fw(codec, gb_x570_coefs); ++ break; ++ } ++} ++ + static void alc1220_fixup_clevo_p950(struct hda_codec *codec, + const struct hda_fixup *fix, + int action) +@@ -2415,6 +2439,10 @@ static const struct hda_fixup alc882_fix + .type = HDA_FIXUP_FUNC, + .v.func = alc1220_fixup_gb_dual_codecs, + }, ++ [ALC1220_FIXUP_GB_X570] = { ++ .type = HDA_FIXUP_FUNC, ++ .v.func = alc1220_fixup_gb_x570, ++ }, + [ALC1220_FIXUP_CLEVO_P950] = { + .type = HDA_FIXUP_FUNC, + .v.func = alc1220_fixup_clevo_p950, +@@ -2517,7 +2545,7 @@ static const struct snd_pci_quirk alc882 + SND_PCI_QUIRK(0x13fe, 0x1009, "Advantech MIT-W101", ALC886_FIXUP_EAPD), + SND_PCI_QUIRK(0x1458, 0xa002, "Gigabyte EP45-DS3/Z87X-UD3H", ALC889_FIXUP_FRONT_HP_NO_PRESENCE), + SND_PCI_QUIRK(0x1458, 0xa0b8, "Gigabyte AZ370-Gaming", ALC1220_FIXUP_GB_DUAL_CODECS), +- SND_PCI_QUIRK(0x1458, 0xa0cd, "Gigabyte X570 Aorus Master", ALC1220_FIXUP_CLEVO_P950), ++ SND_PCI_QUIRK(0x1458, 0xa0cd, "Gigabyte X570 Aorus Master", ALC1220_FIXUP_GB_X570), + SND_PCI_QUIRK(0x1458, 0xa0ce, "Gigabyte X570 Aorus Xtreme", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1462, 0x11f7, "MSI-GE63", ALC1220_FIXUP_CLEVO_P950), + SND_PCI_QUIRK(0x1462, 0x1228, "MSI-GP63", ALC1220_FIXUP_CLEVO_P950), diff --git a/queue-5.16/alsa-hda-realtek-use-alc285_fixup_hp_gpio_led-on-another-hp-laptop.patch b/queue-5.16/alsa-hda-realtek-use-alc285_fixup_hp_gpio_led-on-another-hp-laptop.patch new file mode 100644 index 00000000000..bb20444da8b --- /dev/null +++ b/queue-5.16/alsa-hda-realtek-use-alc285_fixup_hp_gpio_led-on-another-hp-laptop.patch @@ -0,0 +1,31 @@ +From 08977fe8cfb7d9fe9337470eec4843081cf3a76d Mon Sep 17 00:00:00 2001 +From: Kai-Heng Feng +Date: Fri, 24 Dec 2021 11:50:13 +0800 +Subject: ALSA: hda/realtek: Use ALC285_FIXUP_HP_GPIO_LED on another HP laptop + +From: Kai-Heng Feng + +commit 08977fe8cfb7d9fe9337470eec4843081cf3a76d upstream. + +The audio mute and mic mute LEDs don't work, so use the quirk to make +them work. + +Signed-off-by: Kai-Heng Feng +Cc: +Link: https://lore.kernel.org/r/20211224035015.310068-1-kai.heng.feng@canonical.com +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 +@@ -8730,6 +8730,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x103c, 0x8896, "HP EliteBook 855 G8 Notebook PC", ALC285_FIXUP_HP_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x8898, "HP EliteBook 845 G8 Notebook PC", ALC285_FIXUP_HP_LIMIT_INT_MIC_BOOST), + SND_PCI_QUIRK(0x103c, 0x88d0, "HP Pavilion 15-eh1xxx (mainboard 88D0)", ALC287_FIXUP_HP_GPIO_LED), ++ SND_PCI_QUIRK(0x103c, 0x89c3, "HP", ALC285_FIXUP_HP_GPIO_LED), + SND_PCI_QUIRK(0x103c, 0x89ca, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF), + SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC), + SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300), diff --git a/queue-5.16/alsa-hda-tegra-fix-tegra194-hda-reset-failure.patch b/queue-5.16/alsa-hda-tegra-fix-tegra194-hda-reset-failure.patch new file mode 100644 index 00000000000..8b8f5cdfc71 --- /dev/null +++ b/queue-5.16/alsa-hda-tegra-fix-tegra194-hda-reset-failure.patch @@ -0,0 +1,123 @@ +From d278dc9151a034674b31ffeda24cdfb0073570f3 Mon Sep 17 00:00:00 2001 +From: Sameer Pujar +Date: Thu, 23 Dec 2021 17:23:49 +0530 +Subject: ALSA: hda/tegra: Fix Tegra194 HDA reset failure + +From: Sameer Pujar + +commit d278dc9151a034674b31ffeda24cdfb0073570f3 upstream. + +HDA regression is recently reported on Tegra194 based platforms. +This happens because "hda2codec_2x" reset does not really exist +in Tegra194 and it causes probe failure. All the HDA based audio +tests fail at the moment. This underlying issue is exposed by +commit c045ceb5a145 ("reset: tegra-bpmp: Handle errors in BPMP +response") which now checks return code of BPMP command response. +Fix this issue by skipping unavailable reset on Tegra194. + +Cc: stable@vger.kernel.org +Signed-off-by: Sameer Pujar +Reviewed-by: Dmitry Osipenko +Link: https://lore.kernel.org/r/1640260431-11613-2-git-send-email-spujar@nvidia.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/hda_tegra.c | 43 ++++++++++++++++++++++++++++++++++--------- + 1 file changed, 34 insertions(+), 9 deletions(-) + +--- a/sound/pci/hda/hda_tegra.c ++++ b/sound/pci/hda/hda_tegra.c +@@ -68,14 +68,20 @@ + */ + #define TEGRA194_NUM_SDO_LINES 4 + ++struct hda_tegra_soc { ++ bool has_hda2codec_2x_reset; ++}; ++ + struct hda_tegra { + struct azx chip; + struct device *dev; +- struct reset_control *reset; ++ struct reset_control_bulk_data resets[3]; + struct clk_bulk_data clocks[3]; ++ unsigned int nresets; + unsigned int nclocks; + void __iomem *regs; + struct work_struct probe_work; ++ const struct hda_tegra_soc *soc; + }; + + #ifdef CONFIG_PM +@@ -170,7 +176,7 @@ static int __maybe_unused hda_tegra_runt + int rc; + + if (!chip->running) { +- rc = reset_control_assert(hda->reset); ++ rc = reset_control_bulk_assert(hda->nresets, hda->resets); + if (rc) + return rc; + } +@@ -187,7 +193,7 @@ static int __maybe_unused hda_tegra_runt + } else { + usleep_range(10, 100); + +- rc = reset_control_deassert(hda->reset); ++ rc = reset_control_bulk_deassert(hda->nresets, hda->resets); + if (rc) + return rc; + } +@@ -427,9 +433,17 @@ static int hda_tegra_create(struct snd_c + return 0; + } + ++static const struct hda_tegra_soc tegra30_data = { ++ .has_hda2codec_2x_reset = true, ++}; ++ ++static const struct hda_tegra_soc tegra194_data = { ++ .has_hda2codec_2x_reset = false, ++}; ++ + static const struct of_device_id hda_tegra_match[] = { +- { .compatible = "nvidia,tegra30-hda" }, +- { .compatible = "nvidia,tegra194-hda" }, ++ { .compatible = "nvidia,tegra30-hda", .data = &tegra30_data }, ++ { .compatible = "nvidia,tegra194-hda", .data = &tegra194_data }, + {}, + }; + MODULE_DEVICE_TABLE(of, hda_tegra_match); +@@ -449,6 +463,8 @@ static int hda_tegra_probe(struct platfo + hda->dev = &pdev->dev; + chip = &hda->chip; + ++ hda->soc = of_device_get_match_data(&pdev->dev); ++ + err = snd_card_new(&pdev->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1, + THIS_MODULE, 0, &card); + if (err < 0) { +@@ -456,11 +472,20 @@ static int hda_tegra_probe(struct platfo + return err; + } + +- hda->reset = devm_reset_control_array_get_exclusive(&pdev->dev); +- if (IS_ERR(hda->reset)) { +- err = PTR_ERR(hda->reset); ++ hda->resets[hda->nresets++].id = "hda"; ++ hda->resets[hda->nresets++].id = "hda2hdmi"; ++ /* ++ * "hda2codec_2x" reset is not present on Tegra194. Though DT would ++ * be updated to reflect this, but to have backward compatibility ++ * below is necessary. ++ */ ++ if (hda->soc->has_hda2codec_2x_reset) ++ hda->resets[hda->nresets++].id = "hda2codec_2x"; ++ ++ err = devm_reset_control_bulk_get_exclusive(&pdev->dev, hda->nresets, ++ hda->resets); ++ if (err) + goto out_free; +- } + + hda->clocks[hda->nclocks++].id = "hda"; + hda->clocks[hda->nclocks++].id = "hda2hdmi"; diff --git a/queue-5.16/series b/queue-5.16/series index 6881ac6b72e..d90b3019c7c 100644 --- a/queue-5.16/series +++ b/queue-5.16/series @@ -19,3 +19,8 @@ firmware-qemu_fw_cfg-fix-sysfs-information-leak.patch firmware-qemu_fw_cfg-fix-null-pointer-deref-on-duplicate-entries.patch firmware-qemu_fw_cfg-fix-kobject-leak-in-probe-error-path.patch perf-annotate-avoid-tui-crash-when-navigating-in-the-annotation-of-recursive-functions.patch +alsa-hda-realtek-add-speaker-fixup-for-some-yoga-15itl5-devices.patch +alsa-hda-realtek-use-alc285_fixup_hp_gpio_led-on-another-hp-laptop.patch +alsa-hda-realtek-fix-silent-output-on-gigabyte-x570-aorus-master-after-reboot-from-windows.patch +alsa-hda-alc287-add-lenovo-ideapad-slim-9i-14itl5-speaker-quirk.patch +alsa-hda-tegra-fix-tegra194-hda-reset-failure.patch