From: Greg Kroah-Hartman Date: Sat, 20 Mar 2021 10:53:15 +0000 (+0100) Subject: 4.19-stable patches X-Git-Tag: v4.4.263~94 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=323249bd876d7747b1effbd01d697bfda2a05ccb;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: alsa-hda-generic-fix-the-micmute-led-init-state.patch alsa-hda-realtek-apply-headset-mic-quirks-for-xiaomi-redmibook-air.patch asoc-ak4458-add-module_device_table.patch asoc-ak5558-add-module_device_table.patch revert-pm-runtime-update-device-status-before-letting-suppliers-suspend.patch --- diff --git a/queue-4.19/alsa-hda-generic-fix-the-micmute-led-init-state.patch b/queue-4.19/alsa-hda-generic-fix-the-micmute-led-init-state.patch new file mode 100644 index 00000000000..f2e8db8e668 --- /dev/null +++ b/queue-4.19/alsa-hda-generic-fix-the-micmute-led-init-state.patch @@ -0,0 +1,48 @@ +From 2bf44e0ee95f39cc54ea1b942f0a027e0181ca4e Mon Sep 17 00:00:00 2001 +From: Hui Wang +Date: Fri, 12 Mar 2021 12:14:08 +0800 +Subject: ALSA: hda: generic: Fix the micmute led init state + +From: Hui Wang + +commit 2bf44e0ee95f39cc54ea1b942f0a027e0181ca4e upstream. + +Recently we found the micmute led init state is not correct after +freshly installing the ubuntu linux on a Lenovo AIO machine. The +internal mic is not muted, but the micmute led is on and led mode is +'follow mute'. If we mute internal mic, the led is keeping on, then +unmute the internal mic, the led is off. And from then on, the +micmute led will work correctly. + +So the micmute led init state is not correct. The led is controlled +by codec gpio (ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY), in the +patch_realtek, the gpio data is set to 0x4 initially and the led is +on with this data. In the hda_generic, the led_value is set to +0 initially, suppose users set the 'capture switch' to on from +user space and the micmute led should change to be off with this +operation, but the check "if (val == spec->micmute_led.led_value)" in +the call_micmute_led_update() will skip the led setting. + +To guarantee the led state will be set by the 1st time of changing +"Capture Switch", set -1 to the init led_value. + +Cc: +Signed-off-by: Hui Wang +Link: https://lore.kernel.org/r/20210312041408.3776-1-hui.wang@canonical.com +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman +--- + sound/pci/hda/hda_generic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/pci/hda/hda_generic.c ++++ b/sound/pci/hda/hda_generic.c +@@ -4029,7 +4029,7 @@ int snd_hda_gen_add_micmute_led(struct h + + spec->micmute_led.led_mode = MICMUTE_LED_FOLLOW_MUTE; + spec->micmute_led.capture = 0; +- spec->micmute_led.led_value = 0; ++ spec->micmute_led.led_value = -1; + spec->micmute_led.old_hook = spec->cap_sync_hook; + spec->micmute_led.update = hook; + spec->cap_sync_hook = update_micmute_led; diff --git a/queue-4.19/alsa-hda-realtek-apply-headset-mic-quirks-for-xiaomi-redmibook-air.patch b/queue-4.19/alsa-hda-realtek-apply-headset-mic-quirks-for-xiaomi-redmibook-air.patch new file mode 100644 index 00000000000..6fe145e5fd8 --- /dev/null +++ b/queue-4.19/alsa-hda-realtek-apply-headset-mic-quirks-for-xiaomi-redmibook-air.patch @@ -0,0 +1,31 @@ +From e1c86210fe27428399643861b81b080eccd79f87 Mon Sep 17 00:00:00 2001 +From: Xiaoliang Yu +Date: Sat, 13 Mar 2021 07:54:53 +0800 +Subject: ALSA: hda/realtek: Apply headset-mic quirks for Xiaomi Redmibook Air + +From: Xiaoliang Yu + +commit e1c86210fe27428399643861b81b080eccd79f87 upstream. + +There is another fix for headset-mic problem on Redmibook (1d72:1602), +it also works on Redmibook Air (1d72:1947), which has the same issue. + +Signed-off-by: Xiaoliang Yu +Cc: +Link: https://lore.kernel.org/r/TYBP286MB02856DC016849DEA0F9B6A37EE6F9@TYBP286MB0285.JPNP286.PROD.OUTLOOK.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 +@@ -7265,6 +7265,7 @@ static const struct snd_pci_quirk alc269 + SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MBXP", ALC256_FIXUP_HUAWEI_MBXP_PINS), + SND_PCI_QUIRK(0x1b7d, 0xa831, "Ordissimo EVE2 ", ALC269VB_FIXUP_ORDISSIMO_EVE2), /* Also known as Malata PC-B1303 */ + SND_PCI_QUIRK(0x1d72, 0x1901, "RedmiBook 14", ALC256_FIXUP_ASUS_HEADSET_MIC), ++ SND_PCI_QUIRK(0x1d72, 0x1947, "RedmiBook Air", ALC255_FIXUP_XIAOMI_HEADSET_MIC), + SND_PCI_QUIRK(0x10ec, 0x118c, "Medion EE4254 MD62100", ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE), + + #if 0 diff --git a/queue-4.19/asoc-ak4458-add-module_device_table.patch b/queue-4.19/asoc-ak4458-add-module_device_table.patch new file mode 100644 index 00000000000..3724be435b4 --- /dev/null +++ b/queue-4.19/asoc-ak4458-add-module_device_table.patch @@ -0,0 +1,32 @@ +From 4ec5b96775a88dd9b1c3ba1d23c43c478cab95a2 Mon Sep 17 00:00:00 2001 +From: Shengjiu Wang +Date: Wed, 24 Feb 2021 14:57:51 +0800 +Subject: ASoC: ak4458: Add MODULE_DEVICE_TABLE + +From: Shengjiu Wang + +commit 4ec5b96775a88dd9b1c3ba1d23c43c478cab95a2 upstream. + +Add missed MODULE_DEVICE_TABLE for the driver can be loaded +automatically at boot. + +Fixes: 08660086eff9 ("ASoC: ak4458: Add support for AK4458 DAC driver") +Cc: +Signed-off-by: Shengjiu Wang +Link: https://lore.kernel.org/r/1614149872-25510-1-git-send-email-shengjiu.wang@nxp.com +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/codecs/ak4458.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/soc/codecs/ak4458.c ++++ b/sound/soc/codecs/ak4458.c +@@ -642,6 +642,7 @@ static const struct of_device_id ak4458_ + { .compatible = "asahi-kasei,ak4458", }, + { }, + }; ++MODULE_DEVICE_TABLE(of, ak4458_of_match); + + static struct i2c_driver ak4458_i2c_driver = { + .driver = { diff --git a/queue-4.19/asoc-ak5558-add-module_device_table.patch b/queue-4.19/asoc-ak5558-add-module_device_table.patch new file mode 100644 index 00000000000..a29a5540e82 --- /dev/null +++ b/queue-4.19/asoc-ak5558-add-module_device_table.patch @@ -0,0 +1,32 @@ +From 80cffd2468ddb850e678f17841fc356930b2304a Mon Sep 17 00:00:00 2001 +From: Shengjiu Wang +Date: Wed, 24 Feb 2021 14:57:52 +0800 +Subject: ASoC: ak5558: Add MODULE_DEVICE_TABLE + +From: Shengjiu Wang + +commit 80cffd2468ddb850e678f17841fc356930b2304a upstream. + +Add missed MODULE_DEVICE_TABLE for the driver can be loaded +automatically at boot. + +Fixes: 920884777480 ("ASoC: ak5558: Add support for AK5558 ADC driver") +Cc: +Signed-off-by: Shengjiu Wang +Link: https://lore.kernel.org/r/1614149872-25510-2-git-send-email-shengjiu.wang@nxp.com +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/codecs/ak5558.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/soc/codecs/ak5558.c ++++ b/sound/soc/codecs/ak5558.c +@@ -396,6 +396,7 @@ static const struct of_device_id ak5558_ + { .compatible = "asahi-kasei,ak5558"}, + { } + }; ++MODULE_DEVICE_TABLE(of, ak5558_i2c_dt_ids); + + static struct i2c_driver ak5558_i2c_driver = { + .driver = { diff --git a/queue-4.19/revert-pm-runtime-update-device-status-before-letting-suppliers-suspend.patch b/queue-4.19/revert-pm-runtime-update-device-status-before-letting-suppliers-suspend.patch new file mode 100644 index 00000000000..4c70e3c147e --- /dev/null +++ b/queue-4.19/revert-pm-runtime-update-device-status-before-letting-suppliers-suspend.patch @@ -0,0 +1,113 @@ +From 0cab893f409c53634d0d818fa414641cbcdb0dab Mon Sep 17 00:00:00 2001 +From: "Rafael J. Wysocki" +Date: Fri, 19 Mar 2021 15:47:25 +0100 +Subject: Revert "PM: runtime: Update device status before letting suppliers suspend" + +From: Rafael J. Wysocki + +commit 0cab893f409c53634d0d818fa414641cbcdb0dab upstream. + +Revert commit 44cc89f76464 ("PM: runtime: Update device status +before letting suppliers suspend") that introduced a race condition +into __rpm_callback() which allowed a concurrent rpm_resume() to +run and resume the device prematurely after its status had been +changed to RPM_SUSPENDED by __rpm_callback(). + +Fixes: 44cc89f76464 ("PM: runtime: Update device status before letting suppliers suspend") +Link: https://lore.kernel.org/linux-pm/24dfb6fc-5d54-6ee2-9195-26428b7ecf8a@intel.com/ +Reported-by: Adrian Hunter +Cc: 4.10+ # 4.10+ +Signed-off-by: Rafael J. Wysocki +Reviewed-by: Ulf Hansson +Signed-off-by: Greg Kroah-Hartman +--- + drivers/base/power/runtime.c | 62 +++++++++++++++++-------------------------- + 1 file changed, 25 insertions(+), 37 deletions(-) + +--- a/drivers/base/power/runtime.c ++++ b/drivers/base/power/runtime.c +@@ -304,22 +304,22 @@ static void rpm_put_suppliers(struct dev + static int __rpm_callback(int (*cb)(struct device *), struct device *dev) + __releases(&dev->power.lock) __acquires(&dev->power.lock) + { +- bool use_links = dev->power.links_count > 0; +- bool get = false; + int retval, idx; +- bool put; ++ bool use_links = dev->power.links_count > 0; + + if (dev->power.irq_safe) { + spin_unlock(&dev->power.lock); +- } else if (!use_links) { +- spin_unlock_irq(&dev->power.lock); + } else { +- get = dev->power.runtime_status == RPM_RESUMING; +- + spin_unlock_irq(&dev->power.lock); + +- /* Resume suppliers if necessary. */ +- if (get) { ++ /* ++ * Resume suppliers if necessary. ++ * ++ * The device's runtime PM status cannot change until this ++ * routine returns, so it is safe to read the status outside of ++ * the lock. ++ */ ++ if (use_links && dev->power.runtime_status == RPM_RESUMING) { + idx = device_links_read_lock(); + + retval = rpm_get_suppliers(dev); +@@ -334,36 +334,24 @@ static int __rpm_callback(int (*cb)(stru + + if (dev->power.irq_safe) { + spin_lock(&dev->power.lock); +- return retval; +- } +- +- spin_lock_irq(&dev->power.lock); +- +- if (!use_links) +- return retval; +- +- /* +- * If the device is suspending and the callback has returned success, +- * drop the usage counters of the suppliers that have been reference +- * counted on its resume. +- * +- * Do that if the resume fails too. +- */ +- put = dev->power.runtime_status == RPM_SUSPENDING && !retval; +- if (put) +- __update_runtime_status(dev, RPM_SUSPENDED); +- else +- put = get && retval; +- +- if (put) { +- spin_unlock_irq(&dev->power.lock); +- +- idx = device_links_read_lock(); ++ } else { ++ /* ++ * If the device is suspending and the callback has returned ++ * success, drop the usage counters of the suppliers that have ++ * been reference counted on its resume. ++ * ++ * Do that if resume fails too. ++ */ ++ if (use_links ++ && ((dev->power.runtime_status == RPM_SUSPENDING && !retval) ++ || (dev->power.runtime_status == RPM_RESUMING && retval))) { ++ idx = device_links_read_lock(); + +-fail: +- rpm_put_suppliers(dev); ++ fail: ++ rpm_put_suppliers(dev); + +- device_links_read_unlock(idx); ++ device_links_read_unlock(idx); ++ } + + spin_lock_irq(&dev->power.lock); + } diff --git a/queue-4.19/series b/queue-4.19/series index e69de29bb2d..f93a5afd751 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -0,0 +1,5 @@ +asoc-ak4458-add-module_device_table.patch +asoc-ak5558-add-module_device_table.patch +alsa-hda-generic-fix-the-micmute-led-init-state.patch +alsa-hda-realtek-apply-headset-mic-quirks-for-xiaomi-redmibook-air.patch +revert-pm-runtime-update-device-status-before-letting-suppliers-suspend.patch