]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.5-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 18 Apr 2016 01:27:21 +0000 (10:27 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 18 Apr 2016 01:27:21 +0000 (10:27 +0900)
added patches:
alsa-hda-fix-regression-of-monitor_present-flag-in-eld-proc-file.patch
alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t460s.patch
alsa-usb-audio-add-a-quirk-for-plantronics-bt300.patch
alsa-usb-audio-add-a-sample-rate-quirk-for-phoenix-audio-tmx320.patch
alsa-usb-audio-skip-volume-controls-triggers-hangup-on-dell-usb-dock.patch
hid-usbhid-fix-inconsistent-reset-resume-reset-resume-behavior.patch
hid-wacom-fix-bamboo-one-oops.patch

queue-4.5/alsa-hda-fix-regression-of-monitor_present-flag-in-eld-proc-file.patch [new file with mode: 0644]
queue-4.5/alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t460s.patch [new file with mode: 0644]
queue-4.5/alsa-usb-audio-add-a-quirk-for-plantronics-bt300.patch [new file with mode: 0644]
queue-4.5/alsa-usb-audio-add-a-sample-rate-quirk-for-phoenix-audio-tmx320.patch [new file with mode: 0644]
queue-4.5/alsa-usb-audio-skip-volume-controls-triggers-hangup-on-dell-usb-dock.patch [new file with mode: 0644]
queue-4.5/hid-usbhid-fix-inconsistent-reset-resume-reset-resume-behavior.patch [new file with mode: 0644]
queue-4.5/hid-wacom-fix-bamboo-one-oops.patch [new file with mode: 0644]
queue-4.5/series

diff --git a/queue-4.5/alsa-hda-fix-regression-of-monitor_present-flag-in-eld-proc-file.patch b/queue-4.5/alsa-hda-fix-regression-of-monitor_present-flag-in-eld-proc-file.patch
new file mode 100644 (file)
index 0000000..03ab3fd
--- /dev/null
@@ -0,0 +1,44 @@
+From 023d8218ec0dfc30e11d4ec54f640e8f127d1fbe Mon Sep 17 00:00:00 2001
+From: Hyungwon Hwang <hyungwon.hwang7@gmail.com>
+Date: Wed, 13 Apr 2016 09:27:39 +0900
+Subject: ALSA: hda - Fix regression of monitor_present flag in eld proc file
+
+From: Hyungwon Hwang <hyungwon.hwang7@gmail.com>
+
+commit 023d8218ec0dfc30e11d4ec54f640e8f127d1fbe upstream.
+
+The commit [bd48128539ab: ALSA: hda - Fix forgotten HDMI
+monitor_present update] covered the missing update of monitor_present
+flag, but this caused a regression for devices without the i915 eld
+notifier.  Since the old code supposed that pin_eld->monitor_present
+was updated by the caller side, the hdmi_present_sense_via_verbs()
+doesn't update the temporary eld->monitor_present but only
+pin_eld->monitor_present, which is now overridden in update_eld().
+
+The fix is to update pin_eld->monitor_present as well before calling
+update_eld().
+
+Note that this may still leave monitor_present flag in an inconsistent
+state when the driver repolls, but this is at least the old behavior.
+More proper fix will follow in the later patch.
+
+Fixes: bd48128539ab ('ALSA: hda - Fix forgotten HDMI monitor_present update')
+Signed-off-by: Hyungwon Hwang <hyungwon.hwang7@gmail.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_hdmi.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1623,6 +1623,8 @@ static bool hdmi_present_sense_via_verbs
+       mutex_lock(&per_pin->lock);
+       pin_eld->monitor_present = !!(present & AC_PINSENSE_PRESENCE);
++      eld->monitor_present = pin_eld->monitor_present;
++
+       if (pin_eld->monitor_present)
+               eld->eld_valid  = !!(present & AC_PINSENSE_ELDV);
+       else
diff --git a/queue-4.5/alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t460s.patch b/queue-4.5/alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t460s.patch
new file mode 100644 (file)
index 0000000..f2492d7
--- /dev/null
@@ -0,0 +1,64 @@
+From c636b95ec5980345674ad7960a3c67135a84b687 Mon Sep 17 00:00:00 2001
+From: Sven Eckelmann <sven@narfation.org>
+Date: Mon, 11 Apr 2016 16:55:26 +0200
+Subject: ALSA: hda/realtek - Enable the ALC292 dock fixup on the Thinkpad T460s
+
+From: Sven Eckelmann <sven@narfation.org>
+
+commit c636b95ec5980345674ad7960a3c67135a84b687 upstream.
+
+The Lenovo Thinkpad T460s requires the alc_fixup_tpt440_dock as well in
+order to get working sound output on the docking stations headphone jack.
+
+Patch tested on a Thinkpad T460s (20F9CT01WW) using a ThinkPad Ultradock
+on kernel 4.4.6.
+
+Signed-off-by: Sven Eckelmann <sven@narfation.org>
+Tested-by: Simon Wunderlich <sw@simonwunderlich.de>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c |   10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -4760,6 +4760,7 @@ enum {
+       ALC225_FIXUP_DELL1_MIC_NO_PRESENCE,
+       ALC280_FIXUP_HP_HEADSET_MIC,
+       ALC221_FIXUP_HP_FRONT_MIC,
++      ALC292_FIXUP_TPT460,
+ };
+ static const struct hda_fixup alc269_fixups[] = {
+@@ -5409,6 +5410,12 @@ static const struct hda_fixup alc269_fix
+                       { }
+               },
+       },
++      [ALC292_FIXUP_TPT460] = {
++              .type = HDA_FIXUP_FUNC,
++              .v.func = alc_fixup_tpt440_dock,
++              .chained = true,
++              .chain_id = ALC293_FIXUP_LENOVO_SPK_NOISE,
++      },
+ };
+ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
+@@ -5563,7 +5570,7 @@ static const struct snd_pci_quirk alc269
+       SND_PCI_QUIRK(0x17aa, 0x2218, "Thinkpad X1 Carbon 2nd", ALC292_FIXUP_TPT440_DOCK),
+       SND_PCI_QUIRK(0x17aa, 0x2223, "ThinkPad T550", ALC292_FIXUP_TPT440_DOCK),
+       SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK),
+-      SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE),
++      SND_PCI_QUIRK(0x17aa, 0x2233, "Thinkpad", ALC292_FIXUP_TPT460),
+       SND_PCI_QUIRK(0x17aa, 0x30bb, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
+       SND_PCI_QUIRK(0x17aa, 0x30e2, "ThinkCentre AIO", ALC233_FIXUP_LENOVO_LINE2_MIC_HOTKEY),
+       SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
+@@ -5658,6 +5665,7 @@ static const struct hda_model_fixup alc2
+       {.id = ALC283_FIXUP_SENSE_COMBO_JACK, .name = "alc283-sense-combo"},
+       {.id = ALC292_FIXUP_TPT440_DOCK, .name = "tpt440-dock"},
+       {.id = ALC292_FIXUP_TPT440, .name = "tpt440"},
++      {.id = ALC292_FIXUP_TPT460, .name = "tpt460"},
+       {}
+ };
+ #define ALC225_STANDARD_PINS \
diff --git a/queue-4.5/alsa-usb-audio-add-a-quirk-for-plantronics-bt300.patch b/queue-4.5/alsa-usb-audio-add-a-quirk-for-plantronics-bt300.patch
new file mode 100644 (file)
index 0000000..92a97a6
--- /dev/null
@@ -0,0 +1,31 @@
+From b4203ff5464da00b7812e7b480192745b0d66bbf Mon Sep 17 00:00:00 2001
+From: Dennis Kadioglu <denk@post.com>
+Date: Wed, 6 Apr 2016 08:39:01 +0200
+Subject: ALSA: usb-audio: Add a quirk for Plantronics BT300
+
+From: Dennis Kadioglu <denk@post.com>
+
+commit b4203ff5464da00b7812e7b480192745b0d66bbf upstream.
+
+Plantronics BT300 does not support reading the sample rate which leads
+to many lines of "cannot get freq at ep 0x1". This patch adds the USB
+ID of the BT300 to quirks.c and avoids those error messages.
+
+Signed-off-by: Dennis Kadioglu <denk@post.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/quirks.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1135,6 +1135,7 @@ bool snd_usb_get_sample_rate_quirk(struc
+       case USB_ID(0x045E, 0x076F): /* MS Lifecam HD-6000 */
+       case USB_ID(0x045E, 0x0772): /* MS Lifecam Studio */
+       case USB_ID(0x045E, 0x0779): /* MS Lifecam HD-3000 */
++      case USB_ID(0x047F, 0x0415): /* Plantronics BT-300 */
+       case USB_ID(0x047F, 0xAA05): /* Plantronics DA45 */
+       case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
+       case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */
diff --git a/queue-4.5/alsa-usb-audio-add-a-sample-rate-quirk-for-phoenix-audio-tmx320.patch b/queue-4.5/alsa-usb-audio-add-a-sample-rate-quirk-for-phoenix-audio-tmx320.patch
new file mode 100644 (file)
index 0000000..951dcea
--- /dev/null
@@ -0,0 +1,36 @@
+From f03b24a851d32ca85dacab01785b24a7ee717d37 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Mon, 4 Apr 2016 11:47:50 +0200
+Subject: ALSA: usb-audio: Add a sample rate quirk for Phoenix Audio TMX320
+
+From: Takashi Iwai <tiwai@suse.de>
+
+commit f03b24a851d32ca85dacab01785b24a7ee717d37 upstream.
+
+Phoenix Audio TMX320 gives the similar error when the sample rate is
+asked:
+  usb 2-1.3: 2:1: cannot get freq at ep 0x85
+  usb 2-1.3: 1:1: cannot get freq at ep 0x2
+  ....
+
+Add the corresponding USB-device ID (1de7:0014) to
+snd_usb_get_sample_rate_quirk() list.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=110221
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/quirks.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/usb/quirks.c
++++ b/sound/usb/quirks.c
+@@ -1138,6 +1138,7 @@ bool snd_usb_get_sample_rate_quirk(struc
+       case USB_ID(0x047F, 0xAA05): /* Plantronics DA45 */
+       case USB_ID(0x04D8, 0xFEEA): /* Benchmark DAC1 Pre */
+       case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */
++      case USB_ID(0x1de7, 0x0014): /* Phoenix Audio TMX320 */
+       case USB_ID(0x21B4, 0x0081): /* AudioQuest DragonFly */
+               return true;
+       }
diff --git a/queue-4.5/alsa-usb-audio-skip-volume-controls-triggers-hangup-on-dell-usb-dock.patch b/queue-4.5/alsa-usb-audio-skip-volume-controls-triggers-hangup-on-dell-usb-dock.patch
new file mode 100644 (file)
index 0000000..d55b380
--- /dev/null
@@ -0,0 +1,57 @@
+From adcdd0d5a1cb779f6d455ae70882c19c527627a8 Mon Sep 17 00:00:00 2001
+From: Kailang Yang <kailang@realtek.com>
+Date: Tue, 12 Apr 2016 10:55:03 +0800
+Subject: ALSA: usb-audio: Skip volume controls triggers hangup on Dell USB Dock
+
+From: Kailang Yang <kailang@realtek.com>
+
+commit adcdd0d5a1cb779f6d455ae70882c19c527627a8 upstream.
+
+This is Dell usb dock audio workaround.
+It was fixed the master volume keep lower.
+
+[Some background: the patch essentially skips the controls of a couple
+ of FU volumes.  Although the firmware exposes the dB and the value
+ information via the usb descriptor, changing the values (we set the
+ min volume as default) screws up the device.  Although this has been
+ fixed in the newer firmware, the devices are shipped with the old
+ firmware, thus we need the workaround in the driver side.  -- tiwai]
+
+Signed-off-by: Kailang Yang <kailang@realtek.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/usb/mixer_maps.c |   14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+--- a/sound/usb/mixer_maps.c
++++ b/sound/usb/mixer_maps.c
+@@ -349,6 +349,16 @@ static struct usbmix_name_map bose_compa
+ };
+ /*
++ * Dell usb dock with ALC4020 codec had a firmware problem where it got
++ * screwed up when zero volume is passed; just skip it as a workaround
++ */
++static const struct usbmix_name_map dell_alc4020_map[] = {
++      { 16, NULL },
++      { 19, NULL },
++      { 0 }
++};
++
++/*
+  * Control map entries
+  */
+@@ -431,6 +441,10 @@ static struct usbmix_ctl_map usbmix_ctl_
+               .map = aureon_51_2_map,
+       },
+       {
++              .id = USB_ID(0x0bda, 0x4014),
++              .map = dell_alc4020_map,
++      },
++      {
+               .id = USB_ID(0x0dba, 0x1000),
+               .map = mbox1_map,
+       },
diff --git a/queue-4.5/hid-usbhid-fix-inconsistent-reset-resume-reset-resume-behavior.patch b/queue-4.5/hid-usbhid-fix-inconsistent-reset-resume-reset-resume-behavior.patch
new file mode 100644 (file)
index 0000000..63c3e66
--- /dev/null
@@ -0,0 +1,174 @@
+From 972e6a993f278b416a8ee3ec65475724fc36feb2 Mon Sep 17 00:00:00 2001
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Wed, 23 Mar 2016 12:17:09 -0400
+Subject: HID: usbhid: fix inconsistent reset/resume/reset-resume behavior
+
+From: Alan Stern <stern@rowland.harvard.edu>
+
+commit 972e6a993f278b416a8ee3ec65475724fc36feb2 upstream.
+
+The usbhid driver has inconsistently duplicated code in its post-reset,
+resume, and reset-resume pathways.
+
+       reset-resume doesn't check HID_STARTED before trying to
+       restart the I/O queues.
+
+       resume fails to clear the HID_SUSPENDED flag if HID_STARTED
+       isn't set.
+
+       resume calls usbhid_restart_queues() with usbhid->lock held
+       and the others call it without holding the lock.
+
+The first item in particular causes a problem following a reset-resume
+if the driver hasn't started up its I/O.  URB submission fails because
+usbhid->urbin is NULL, and this triggers an unending reset-retry loop.
+
+This patch fixes the problem by creating a new subroutine,
+hid_restart_io(), to carry out all the common activities.  It also
+adds some checks that were missing in the original code:
+
+       After a reset, there's no need to clear any halted endpoints.
+
+       After a resume, if a reset is pending there's no need to
+       restart any I/O until the reset is finished.
+
+       After a resume, if the interrupt-IN endpoint is halted there's
+       no need to submit the input URB until the halt has been
+       cleared.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Reported-by: Daniel Fraga <fragabr@gmail.com>
+Tested-by: Daniel Fraga <fragabr@gmail.com>
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hid/usbhid/hid-core.c |   73 +++++++++++++++++++++---------------------
+ 1 file changed, 37 insertions(+), 36 deletions(-)
+
+--- a/drivers/hid/usbhid/hid-core.c
++++ b/drivers/hid/usbhid/hid-core.c
+@@ -951,14 +951,6 @@ static int usbhid_output_report(struct h
+       return ret;
+ }
+-static void usbhid_restart_queues(struct usbhid_device *usbhid)
+-{
+-      if (usbhid->urbout && !test_bit(HID_OUT_RUNNING, &usbhid->iofl))
+-              usbhid_restart_out_queue(usbhid);
+-      if (!test_bit(HID_CTRL_RUNNING, &usbhid->iofl))
+-              usbhid_restart_ctrl_queue(usbhid);
+-}
+-
+ static void hid_free_buffers(struct usb_device *dev, struct hid_device *hid)
+ {
+       struct usbhid_device *usbhid = hid->driver_data;
+@@ -1404,6 +1396,37 @@ static void hid_cease_io(struct usbhid_d
+       usb_kill_urb(usbhid->urbout);
+ }
++static void hid_restart_io(struct hid_device *hid)
++{
++      struct usbhid_device *usbhid = hid->driver_data;
++      int clear_halt = test_bit(HID_CLEAR_HALT, &usbhid->iofl);
++      int reset_pending = test_bit(HID_RESET_PENDING, &usbhid->iofl);
++
++      spin_lock_irq(&usbhid->lock);
++      clear_bit(HID_SUSPENDED, &usbhid->iofl);
++      usbhid_mark_busy(usbhid);
++
++      if (clear_halt || reset_pending)
++              schedule_work(&usbhid->reset_work);
++      usbhid->retry_delay = 0;
++      spin_unlock_irq(&usbhid->lock);
++
++      if (reset_pending || !test_bit(HID_STARTED, &usbhid->iofl))
++              return;
++
++      if (!clear_halt) {
++              if (hid_start_in(hid) < 0)
++                      hid_io_error(hid);
++      }
++
++      spin_lock_irq(&usbhid->lock);
++      if (usbhid->urbout && !test_bit(HID_OUT_RUNNING, &usbhid->iofl))
++              usbhid_restart_out_queue(usbhid);
++      if (!test_bit(HID_CTRL_RUNNING, &usbhid->iofl))
++              usbhid_restart_ctrl_queue(usbhid);
++      spin_unlock_irq(&usbhid->lock);
++}
++
+ /* Treat USB reset pretty much the same as suspend/resume */
+ static int hid_pre_reset(struct usb_interface *intf)
+ {
+@@ -1453,14 +1476,14 @@ static int hid_post_reset(struct usb_int
+               return 1;
+       }
++      /* No need to do another reset or clear a halted endpoint */
+       spin_lock_irq(&usbhid->lock);
+       clear_bit(HID_RESET_PENDING, &usbhid->iofl);
++      clear_bit(HID_CLEAR_HALT, &usbhid->iofl);
+       spin_unlock_irq(&usbhid->lock);
+       hid_set_idle(dev, intf->cur_altsetting->desc.bInterfaceNumber, 0, 0);
+-      status = hid_start_in(hid);
+-      if (status < 0)
+-              hid_io_error(hid);
+-      usbhid_restart_queues(usbhid);
++
++      hid_restart_io(hid);
+       return 0;
+ }
+@@ -1483,25 +1506,9 @@ void usbhid_put_power(struct hid_device
+ #ifdef CONFIG_PM
+ static int hid_resume_common(struct hid_device *hid, bool driver_suspended)
+ {
+-      struct usbhid_device *usbhid = hid->driver_data;
+-      int status;
+-
+-      spin_lock_irq(&usbhid->lock);
+-      clear_bit(HID_SUSPENDED, &usbhid->iofl);
+-      usbhid_mark_busy(usbhid);
+-
+-      if (test_bit(HID_CLEAR_HALT, &usbhid->iofl) ||
+-                      test_bit(HID_RESET_PENDING, &usbhid->iofl))
+-              schedule_work(&usbhid->reset_work);
+-      usbhid->retry_delay = 0;
+-
+-      usbhid_restart_queues(usbhid);
+-      spin_unlock_irq(&usbhid->lock);
+-
+-      status = hid_start_in(hid);
+-      if (status < 0)
+-              hid_io_error(hid);
++      int status = 0;
++      hid_restart_io(hid);
+       if (driver_suspended && hid->driver && hid->driver->resume)
+               status = hid->driver->resume(hid);
+       return status;
+@@ -1570,12 +1577,8 @@ static int hid_suspend(struct usb_interf
+ static int hid_resume(struct usb_interface *intf)
+ {
+       struct hid_device *hid = usb_get_intfdata (intf);
+-      struct usbhid_device *usbhid = hid->driver_data;
+       int status;
+-      if (!test_bit(HID_STARTED, &usbhid->iofl))
+-              return 0;
+-
+       status = hid_resume_common(hid, true);
+       dev_dbg(&intf->dev, "resume status %d\n", status);
+       return 0;
+@@ -1584,10 +1587,8 @@ static int hid_resume(struct usb_interfa
+ static int hid_reset_resume(struct usb_interface *intf)
+ {
+       struct hid_device *hid = usb_get_intfdata(intf);
+-      struct usbhid_device *usbhid = hid->driver_data;
+       int status;
+-      clear_bit(HID_SUSPENDED, &usbhid->iofl);
+       status = hid_post_reset(intf);
+       if (status >= 0 && hid->driver && hid->driver->reset_resume) {
+               int ret = hid->driver->reset_resume(hid);
diff --git a/queue-4.5/hid-wacom-fix-bamboo-one-oops.patch b/queue-4.5/hid-wacom-fix-bamboo-one-oops.patch
new file mode 100644 (file)
index 0000000..442d43d
--- /dev/null
@@ -0,0 +1,46 @@
+From 580549ef6b3e3fb3b958de490ca99f43a089a2cf Mon Sep 17 00:00:00 2001
+From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Date: Fri, 25 Mar 2016 15:26:55 +0100
+Subject: HID: wacom: fix Bamboo ONE oops
+
+From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+
+commit 580549ef6b3e3fb3b958de490ca99f43a089a2cf upstream.
+
+Looks like recent changes in the Wacom driver made the Bamboo ONE crashes.
+The tablet behaves as if it was a regular Bamboo device with pen, touch
+and pad, but there is no physical pad connected to it.
+The weird part is that the pad is still sending events and given that
+there is no input node connected to it, we get  anull pointer exception.
+
+Link: https://bugzilla.redhat.com/show_bug.cgi?id=1317116
+
+Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
+Acked-by: Ping Cheng <pingc@wacom.com>
+Signed-off-by: Jiri Kosina <jkosina@suse.cz>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/hid/wacom_wac.c |   11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+--- a/drivers/hid/wacom_wac.c
++++ b/drivers/hid/wacom_wac.c
+@@ -2409,6 +2409,17 @@ void wacom_setup_device_quirks(struct wa
+       }
+       /*
++       * Hack for the Bamboo One:
++       * the device presents a PAD/Touch interface as most Bamboos and even
++       * sends ghosts PAD data on it. However, later, we must disable this
++       * ghost interface, and we can not detect it unless we set it here
++       * to WACOM_DEVICETYPE_PAD or WACOM_DEVICETYPE_TOUCH.
++       */
++      if (features->type == BAMBOO_PEN &&
++          features->pktlen == WACOM_PKGLEN_BBTOUCH3)
++              features->device_type |= WACOM_DEVICETYPE_PAD;
++
++      /*
+        * Raw Wacom-mode pen and touch events both come from interface
+        * 0, whose HID descriptor has an application usage of 0xFF0D
+        * (i.e., WACOM_VENDORDEFINED_PEN). We route pen packets back
index 84a712ccc50117541df4ceac46f10a2a1e7190d0..379016e38b462c7532e44528eecd6dd976abf808 100644 (file)
@@ -114,3 +114,10 @@ btrfs-fix-file-data-loss-caused-by-fsync-after-rename-and-new-inode.patch
 arm64-replace-read_lock-to-rcu-lock-in-call_step_hook.patch
 mmc-sdhci-fix-regression-setting-power-on-trats2-board.patch
 mmc-sdhci-pci-add-support-and-pci-ids-for-more-broxton-host-controllers.patch
+alsa-hda-fix-regression-of-monitor_present-flag-in-eld-proc-file.patch
+alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t460s.patch
+alsa-usb-audio-add-a-sample-rate-quirk-for-phoenix-audio-tmx320.patch
+alsa-usb-audio-add-a-quirk-for-plantronics-bt300.patch
+alsa-usb-audio-skip-volume-controls-triggers-hangup-on-dell-usb-dock.patch
+hid-wacom-fix-bamboo-one-oops.patch
+hid-usbhid-fix-inconsistent-reset-resume-reset-resume-behavior.patch