]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 20 Mar 2021 10:53:15 +0000 (11:53 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 20 Mar 2021 10:53:15 +0000 (11:53 +0100)
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

queue-4.19/alsa-hda-generic-fix-the-micmute-led-init-state.patch [new file with mode: 0644]
queue-4.19/alsa-hda-realtek-apply-headset-mic-quirks-for-xiaomi-redmibook-air.patch [new file with mode: 0644]
queue-4.19/asoc-ak4458-add-module_device_table.patch [new file with mode: 0644]
queue-4.19/asoc-ak5558-add-module_device_table.patch [new file with mode: 0644]
queue-4.19/revert-pm-runtime-update-device-status-before-letting-suppliers-suspend.patch [new file with mode: 0644]
queue-4.19/series

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 (file)
index 0000000..f2e8db8
--- /dev/null
@@ -0,0 +1,48 @@
+From 2bf44e0ee95f39cc54ea1b942f0a027e0181ca4e Mon Sep 17 00:00:00 2001
+From: Hui Wang <hui.wang@canonical.com>
+Date: Fri, 12 Mar 2021 12:14:08 +0800
+Subject: ALSA: hda: generic: Fix the micmute led init state
+
+From: Hui Wang <hui.wang@canonical.com>
+
+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: <stable@vger.kernel.org>
+Signed-off-by: Hui Wang <hui.wang@canonical.com>
+Link: https://lore.kernel.org/r/20210312041408.3776-1-hui.wang@canonical.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..6fe145e
--- /dev/null
@@ -0,0 +1,31 @@
+From e1c86210fe27428399643861b81b080eccd79f87 Mon Sep 17 00:00:00 2001
+From: Xiaoliang Yu <yxl_22@outlook.com>
+Date: Sat, 13 Mar 2021 07:54:53 +0800
+Subject: ALSA: hda/realtek: Apply headset-mic quirks for Xiaomi Redmibook Air
+
+From: Xiaoliang Yu <yxl_22@outlook.com>
+
+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 <yxl_22@outlook.com>
+Cc: <stable@vger.kernel.org>
+Link: https://lore.kernel.org/r/TYBP286MB02856DC016849DEA0F9B6A37EE6F9@TYBP286MB0285.JPNP286.PROD.OUTLOOK.COM
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..3724be4
--- /dev/null
@@ -0,0 +1,32 @@
+From 4ec5b96775a88dd9b1c3ba1d23c43c478cab95a2 Mon Sep 17 00:00:00 2001
+From: Shengjiu Wang <shengjiu.wang@nxp.com>
+Date: Wed, 24 Feb 2021 14:57:51 +0800
+Subject: ASoC: ak4458: Add MODULE_DEVICE_TABLE
+
+From: Shengjiu Wang <shengjiu.wang@nxp.com>
+
+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: <stable@vger.kernel.org>
+Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
+Link: https://lore.kernel.org/r/1614149872-25510-1-git-send-email-shengjiu.wang@nxp.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..a29a554
--- /dev/null
@@ -0,0 +1,32 @@
+From 80cffd2468ddb850e678f17841fc356930b2304a Mon Sep 17 00:00:00 2001
+From: Shengjiu Wang <shengjiu.wang@nxp.com>
+Date: Wed, 24 Feb 2021 14:57:52 +0800
+Subject: ASoC: ak5558: Add MODULE_DEVICE_TABLE
+
+From: Shengjiu Wang <shengjiu.wang@nxp.com>
+
+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: <stable@vger.kernel.org>
+Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
+Link: https://lore.kernel.org/r/1614149872-25510-2-git-send-email-shengjiu.wang@nxp.com
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..4c70e3c
--- /dev/null
@@ -0,0 +1,113 @@
+From 0cab893f409c53634d0d818fa414641cbcdb0dab Mon Sep 17 00:00:00 2001
+From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
+Date: Fri, 19 Mar 2021 15:47:25 +0100
+Subject: Revert "PM: runtime: Update device status before letting suppliers suspend"
+
+From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+
+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 <adrian.hunter@intel.com>
+Cc: 4.10+ <stable@vger.kernel.org> # 4.10+
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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);
+       }
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f93a5afd751c7745ff518ac91ae6bf4e15c6b234 100644 (file)
@@ -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