]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 2 May 2015 13:24:27 +0000 (15:24 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 2 May 2015 13:24:27 +0000 (15:24 +0200)
added patches:
alsa-emu10k1-don-t-deadlock-in-proc-functions.patch
alsa-hda-add-dock-support-for-thinkpad-x250-17aa-2226.patch
alsa-hda-fix-num_steps-0-error-on-alc256.patch
alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t450.patch
alsa-hda-realtek-fix-headphone-mic-doesn-t-recording-for-alc256.patch
clk-at91-usb-propagate-rate-modification-to-the-parent-clk.patch
usb-core-hub-use-new-usb_resume_timeout.patch
usb-host-ehci-use-new-usb_resume_timeout.patch
usb-host-fotg210-use-new-usb_resume_timeout.patch
usb-host-fusbh200-use-new-usb_resume_timeout.patch
usb-host-isp116x-use-new-usb_resume_timeout.patch
usb-host-oxu210hp-use-new-usb_resume_timeout.patch
usb-host-r8a66597-use-new-usb_resume_timeout.patch
usb-host-sl811-use-new-usb_resume_timeout.patch
usb-host-uhci-use-new-usb_resume_timeout.patch
usb-host-xhci-use-new-usb_resume_timeout.patch
usb-musb-use-new-usb_resume_timeout.patch

18 files changed:
queue-3.19/alsa-emu10k1-don-t-deadlock-in-proc-functions.patch [new file with mode: 0644]
queue-3.19/alsa-hda-add-dock-support-for-thinkpad-x250-17aa-2226.patch [new file with mode: 0644]
queue-3.19/alsa-hda-fix-num_steps-0-error-on-alc256.patch [new file with mode: 0644]
queue-3.19/alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t450.patch [new file with mode: 0644]
queue-3.19/alsa-hda-realtek-fix-headphone-mic-doesn-t-recording-for-alc256.patch [new file with mode: 0644]
queue-3.19/clk-at91-usb-propagate-rate-modification-to-the-parent-clk.patch [new file with mode: 0644]
queue-3.19/series
queue-3.19/usb-core-hub-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-host-ehci-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-host-fotg210-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-host-fusbh200-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-host-isp116x-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-host-oxu210hp-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-host-r8a66597-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-host-sl811-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-host-uhci-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-host-xhci-use-new-usb_resume_timeout.patch [new file with mode: 0644]
queue-3.19/usb-musb-use-new-usb_resume_timeout.patch [new file with mode: 0644]

diff --git a/queue-3.19/alsa-emu10k1-don-t-deadlock-in-proc-functions.patch b/queue-3.19/alsa-emu10k1-don-t-deadlock-in-proc-functions.patch
new file mode 100644 (file)
index 0000000..263b701
--- /dev/null
@@ -0,0 +1,75 @@
+From 91bf0c2dcb935a87e5c0795f5047456b965fd143 Mon Sep 17 00:00:00 2001
+From: Michael Gernoth <michael@gernoth.net>
+Date: Thu, 9 Apr 2015 23:42:15 +0200
+Subject: ALSA: emu10k1: don't deadlock in proc-functions
+
+From: Michael Gernoth <michael@gernoth.net>
+
+commit 91bf0c2dcb935a87e5c0795f5047456b965fd143 upstream.
+
+The functions snd_emu10k1_proc_spdif_read and snd_emu1010_fpga_read
+acquire the emu_lock before accessing the FPGA. The function used
+to access the FPGA (snd_emu1010_fpga_read) also tries to take
+the emu_lock which causes a deadlock.
+Remove the outer locking in the proc-functions (guarding only the
+already safe fpga read) to prevent this deadlock.
+
+[removed superfluous flags variables too -- tiwai]
+
+Signed-off-by: Michael Gernoth <michael@gernoth.net>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/emu10k1/emuproc.c |   12 ------------
+ 1 file changed, 12 deletions(-)
+
+--- a/sound/pci/emu10k1/emuproc.c
++++ b/sound/pci/emu10k1/emuproc.c
+@@ -241,31 +241,22 @@ static void snd_emu10k1_proc_spdif_read(
+       struct snd_emu10k1 *emu = entry->private_data;
+       u32 value;
+       u32 value2;
+-      unsigned long flags;
+       u32 rate;
+       if (emu->card_capabilities->emu_model) {
+-              spin_lock_irqsave(&emu->emu_lock, flags);
+               snd_emu1010_fpga_read(emu, 0x38, &value);
+-              spin_unlock_irqrestore(&emu->emu_lock, flags);
+               if ((value & 0x1) == 0) {
+-                      spin_lock_irqsave(&emu->emu_lock, flags);
+                       snd_emu1010_fpga_read(emu, 0x2a, &value);
+                       snd_emu1010_fpga_read(emu, 0x2b, &value2);
+-                      spin_unlock_irqrestore(&emu->emu_lock, flags);
+                       rate = 0x1770000 / (((value << 5) | value2)+1); 
+                       snd_iprintf(buffer, "ADAT Locked : %u\n", rate);
+               } else {
+                       snd_iprintf(buffer, "ADAT Unlocked\n");
+               }
+-              spin_lock_irqsave(&emu->emu_lock, flags);
+               snd_emu1010_fpga_read(emu, 0x20, &value);
+-              spin_unlock_irqrestore(&emu->emu_lock, flags);
+               if ((value & 0x4) == 0) {
+-                      spin_lock_irqsave(&emu->emu_lock, flags);
+                       snd_emu1010_fpga_read(emu, 0x28, &value);
+                       snd_emu1010_fpga_read(emu, 0x29, &value2);
+-                      spin_unlock_irqrestore(&emu->emu_lock, flags);
+                       rate = 0x1770000 / (((value << 5) | value2)+1); 
+                       snd_iprintf(buffer, "SPDIF Locked : %d\n", rate);
+               } else {
+@@ -410,14 +401,11 @@ static void snd_emu_proc_emu1010_reg_rea
+ {
+       struct snd_emu10k1 *emu = entry->private_data;
+       u32 value;
+-      unsigned long flags;
+       int i;
+       snd_iprintf(buffer, "EMU1010 Registers:\n\n");
+       for(i = 0; i < 0x40; i+=1) {
+-              spin_lock_irqsave(&emu->emu_lock, flags);
+               snd_emu1010_fpga_read(emu, i, &value);
+-              spin_unlock_irqrestore(&emu->emu_lock, flags);
+               snd_iprintf(buffer, "%02X: %08X, %02X\n", i, value, (value >> 8) & 0x7f);
+       }
+ }
diff --git a/queue-3.19/alsa-hda-add-dock-support-for-thinkpad-x250-17aa-2226.patch b/queue-3.19/alsa-hda-add-dock-support-for-thinkpad-x250-17aa-2226.patch
new file mode 100644 (file)
index 0000000..9a26b59
--- /dev/null
@@ -0,0 +1,29 @@
+From c0278669fb61596cc1a10ab8686d27c37269c37b Mon Sep 17 00:00:00 2001
+From: Yves-Alexis Perez <corsac@debian.org>
+Date: Sat, 11 Apr 2015 09:31:35 +0200
+Subject: ALSA: hda - Add dock support for ThinkPad X250 (17aa:2226)
+
+From: Yves-Alexis Perez <corsac@debian.org>
+
+commit c0278669fb61596cc1a10ab8686d27c37269c37b upstream.
+
+This model uses the same dock port as the previous generation.
+
+Signed-off-by: Yves-Alexis Perez <corsac@debian.org>
+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
+@@ -4946,6 +4946,7 @@ static const struct snd_pci_quirk alc269
+       SND_PCI_QUIRK(0x17aa, 0x2212, "Thinkpad T440", ALC292_FIXUP_TPT440_DOCK),
+       SND_PCI_QUIRK(0x17aa, 0x2214, "Thinkpad X240", ALC292_FIXUP_TPT440_DOCK),
+       SND_PCI_QUIRK(0x17aa, 0x2215, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
++      SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK),
+       SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC),
+       SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP),
+       SND_PCI_QUIRK(0x17aa, 0x5013, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
diff --git a/queue-3.19/alsa-hda-fix-num_steps-0-error-on-alc256.patch b/queue-3.19/alsa-hda-fix-num_steps-0-error-on-alc256.patch
new file mode 100644 (file)
index 0000000..870b66f
--- /dev/null
@@ -0,0 +1,48 @@
+From 7d1b6e29327428993ba568bdd8c66734070f45e0 Mon Sep 17 00:00:00 2001
+From: David Henningsson <david.henningsson@canonical.com>
+Date: Tue, 21 Apr 2015 10:48:46 +0200
+Subject: ALSA: hda - fix "num_steps = 0" error on ALC256
+
+From: David Henningsson <david.henningsson@canonical.com>
+
+commit 7d1b6e29327428993ba568bdd8c66734070f45e0 upstream.
+
+The ALC256 does not have a mixer nid at 0x0b, and there's no
+loopback path (the output pins are directly connected to the DACs).
+
+This commit fixes an "num_steps = 0 for NID=0xb (ctl = Beep Playback Volume)"
+error (and as a result, problems with amixer/alsamixer).
+
+If there's pcbeep functionality, it certainly isn't controlled by setting an
+amp on 0x0b, so disable beep functionality (at least for now).
+
+BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1446517
+Signed-off-by: David Henningsson <david.henningsson@canonical.com>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ sound/pci/hda/patch_realtek.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -5454,6 +5454,7 @@ static int patch_alc269(struct hda_codec
+               break;
+       case 0x10ec0256:
+               spec->codec_variant = ALC269_TYPE_ALC256;
++              spec->gen.mixer_nid = 0; /* ALC256 does not have any loopback mixer path */
+               break;
+       }
+@@ -5467,8 +5468,8 @@ static int patch_alc269(struct hda_codec
+       if (err < 0)
+               goto error;
+-      if (!spec->gen.no_analog && spec->gen.beep_nid)
+-              set_beep_amp(spec, 0x0b, 0x04, HDA_INPUT);
++      if (!spec->gen.no_analog && spec->gen.beep_nid && spec->gen.mixer_nid)
++              set_beep_amp(spec, spec->gen.mixer_nid, 0x04, HDA_INPUT);
+       codec->patch_ops = alc_patch_ops;
+ #ifdef CONFIG_PM
diff --git a/queue-3.19/alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t450.patch b/queue-3.19/alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t450.patch
new file mode 100644 (file)
index 0000000..fad6825
--- /dev/null
@@ -0,0 +1,33 @@
+From f2aa111041ce36b94e651d882458dea502e76721 Mon Sep 17 00:00:00 2001
+From: Jo-Philipp Wich <jow@openwrt.org>
+Date: Mon, 13 Apr 2015 12:47:26 +0200
+Subject: ALSA: hda/realtek - Enable the ALC292 dock fixup on the Thinkpad T450
+
+From: Jo-Philipp Wich <jow@openwrt.org>
+
+commit f2aa111041ce36b94e651d882458dea502e76721 upstream.
+
+The Lenovo Thinkpad T450 requires the ALC292_FIXUP_TPT440_DOCK as well in
+order to get working sound output on the docking stations headphone jack.
+
+Patch tested on a Thinkpad T450 (20BVCTO1WW) using kernel 4.0-rc7 in
+conjunction with a ThinkPad Ultradock.
+
+Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
+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
+@@ -4953,6 +4953,7 @@ static const struct snd_pci_quirk alc269
+       SND_PCI_QUIRK(0x17aa, 0x501a, "Thinkpad", ALC283_FIXUP_INT_MIC),
+       SND_PCI_QUIRK(0x17aa, 0x501e, "Thinkpad L440", ALC292_FIXUP_TPT440_DOCK),
+       SND_PCI_QUIRK(0x17aa, 0x5026, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
++      SND_PCI_QUIRK(0x17aa, 0x5034, "Thinkpad T450", ALC292_FIXUP_TPT440_DOCK),
+       SND_PCI_QUIRK(0x17aa, 0x5036, "Thinkpad T450s", ALC292_FIXUP_TPT440_DOCK),
+       SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
+       SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
diff --git a/queue-3.19/alsa-hda-realtek-fix-headphone-mic-doesn-t-recording-for-alc256.patch b/queue-3.19/alsa-hda-realtek-fix-headphone-mic-doesn-t-recording-for-alc256.patch
new file mode 100644 (file)
index 0000000..2d903b5
--- /dev/null
@@ -0,0 +1,30 @@
+From d32b66668c702aed0e330dc5ca186afbadcdacf8 Mon Sep 17 00:00:00 2001
+From: Kailang Yang <kailang@realtek.com>
+Date: Thu, 23 Apr 2015 15:10:53 +0800
+Subject: ALSA: hda/realtek - Fix Headphone Mic doesn't recording for ALC256
+
+From: Kailang Yang <kailang@realtek.com>
+
+commit d32b66668c702aed0e330dc5ca186afbadcdacf8 upstream.
+
+Switch default pcbeep path to Line in path.
+
+Signed-off-by: Kailang Yang <kailang@realtek.com>
+Tested-by: Hui Wang <hui.wang@canonical.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
+@@ -5455,6 +5455,7 @@ static int patch_alc269(struct hda_codec
+       case 0x10ec0256:
+               spec->codec_variant = ALC269_TYPE_ALC256;
+               spec->gen.mixer_nid = 0; /* ALC256 does not have any loopback mixer path */
++              alc_update_coef_idx(codec, 0x36, 1 << 13, 1 << 5); /* Switch pcbeep path to Line in path*/
+               break;
+       }
diff --git a/queue-3.19/clk-at91-usb-propagate-rate-modification-to-the-parent-clk.patch b/queue-3.19/clk-at91-usb-propagate-rate-modification-to-the-parent-clk.patch
new file mode 100644 (file)
index 0000000..00800ed
--- /dev/null
@@ -0,0 +1,137 @@
+From 4591243102faa8de92da320edea47219901461e9 Mon Sep 17 00:00:00 2001
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+Date: Sun, 29 Mar 2015 03:45:33 +0200
+Subject: clk: at91: usb: propagate rate modification to the parent clk
+
+From: Boris Brezillon <boris.brezillon@free-electrons.com>
+
+commit 4591243102faa8de92da320edea47219901461e9 upstream.
+
+The at91sam9n12 and at91sam9x5 usb clocks do not propagate rate
+modification requests to their parents.
+This causes a bug when the PLLB is left uninitialized by the bootloader
+(PLL multiplier set to 0, or in other words, PLL rate = 0 Hz).
+
+Implement the determinate_rate method and propagate the change rate
+request to the parent clk.
+
+Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
+Reported-by: Bo Shen <voice.shen@atmel.com>
+Tested-by: Bo Shen <voice.shen@atmel.com>
+Signed-off-by: Michael Turquette <mturquette@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/clk/at91/clk-usb.c |   72 +++++++++++++++++++++++++++++++++------------
+ 1 file changed, 53 insertions(+), 19 deletions(-)
+
+--- a/drivers/clk/at91/clk-usb.c
++++ b/drivers/clk/at91/clk-usb.c
+@@ -56,22 +56,55 @@ static unsigned long at91sam9x5_clk_usb_
+       return DIV_ROUND_CLOSEST(parent_rate, (usbdiv + 1));
+ }
+-static long at91sam9x5_clk_usb_round_rate(struct clk_hw *hw, unsigned long rate,
+-                                        unsigned long *parent_rate)
+-{
+-      unsigned long div;
+-
+-      if (!rate)
+-              return -EINVAL;
+-
+-      if (rate >= *parent_rate)
+-              return *parent_rate;
+-
+-      div = DIV_ROUND_CLOSEST(*parent_rate, rate);
+-      if (div > SAM9X5_USB_MAX_DIV + 1)
+-              div = SAM9X5_USB_MAX_DIV + 1;
++static long at91sam9x5_clk_usb_determine_rate(struct clk_hw *hw,
++                                            unsigned long rate,
++                                            unsigned long min_rate,
++                                            unsigned long max_rate,
++                                            unsigned long *best_parent_rate,
++                                            struct clk_hw **best_parent_hw)
++{
++      struct clk *parent = NULL;
++      long best_rate = -EINVAL;
++      unsigned long tmp_rate;
++      int best_diff = -1;
++      int tmp_diff;
++      int i;
++
++      for (i = 0; i < __clk_get_num_parents(hw->clk); i++) {
++              int div;
++
++              parent = clk_get_parent_by_index(hw->clk, i);
++              if (!parent)
++                      continue;
++
++              for (div = 1; div < SAM9X5_USB_MAX_DIV + 2; div++) {
++                      unsigned long tmp_parent_rate;
++
++                      tmp_parent_rate = rate * div;
++                      tmp_parent_rate = __clk_round_rate(parent,
++                                                         tmp_parent_rate);
++                      tmp_rate = DIV_ROUND_CLOSEST(tmp_parent_rate, div);
++                      if (tmp_rate < rate)
++                              tmp_diff = rate - tmp_rate;
++                      else
++                              tmp_diff = tmp_rate - rate;
++
++                      if (best_diff < 0 || best_diff > tmp_diff) {
++                              best_rate = tmp_rate;
++                              best_diff = tmp_diff;
++                              *best_parent_rate = tmp_parent_rate;
++                              *best_parent_hw = __clk_get_hw(parent);
++                      }
++
++                      if (!best_diff || tmp_rate < rate)
++                              break;
++              }
++
++              if (!best_diff)
++                      break;
++      }
+-      return DIV_ROUND_CLOSEST(*parent_rate, div);
++      return best_rate;
+ }
+ static int at91sam9x5_clk_usb_set_parent(struct clk_hw *hw, u8 index)
+@@ -121,7 +154,7 @@ static int at91sam9x5_clk_usb_set_rate(s
+ static const struct clk_ops at91sam9x5_usb_ops = {
+       .recalc_rate = at91sam9x5_clk_usb_recalc_rate,
+-      .round_rate = at91sam9x5_clk_usb_round_rate,
++      .determine_rate = at91sam9x5_clk_usb_determine_rate,
+       .get_parent = at91sam9x5_clk_usb_get_parent,
+       .set_parent = at91sam9x5_clk_usb_set_parent,
+       .set_rate = at91sam9x5_clk_usb_set_rate,
+@@ -159,7 +192,7 @@ static const struct clk_ops at91sam9n12_
+       .disable = at91sam9n12_clk_usb_disable,
+       .is_enabled = at91sam9n12_clk_usb_is_enabled,
+       .recalc_rate = at91sam9x5_clk_usb_recalc_rate,
+-      .round_rate = at91sam9x5_clk_usb_round_rate,
++      .determine_rate = at91sam9x5_clk_usb_determine_rate,
+       .set_rate = at91sam9x5_clk_usb_set_rate,
+ };
+@@ -179,7 +212,8 @@ at91sam9x5_clk_register_usb(struct at91_
+       init.ops = &at91sam9x5_usb_ops;
+       init.parent_names = parent_names;
+       init.num_parents = num_parents;
+-      init.flags = CLK_SET_RATE_GATE | CLK_SET_PARENT_GATE;
++      init.flags = CLK_SET_RATE_GATE | CLK_SET_PARENT_GATE |
++                   CLK_SET_RATE_PARENT;
+       usb->hw.init = &init;
+       usb->pmc = pmc;
+@@ -207,7 +241,7 @@ at91sam9n12_clk_register_usb(struct at91
+       init.ops = &at91sam9n12_usb_ops;
+       init.parent_names = &parent_name;
+       init.num_parents = 1;
+-      init.flags = CLK_SET_RATE_GATE;
++      init.flags = CLK_SET_RATE_GATE | CLK_SET_RATE_PARENT;
+       usb->hw.init = &init;
+       usb->pmc = pmc;
index 7097d6ae40dc1588ff4bd80a3cc03ee74f3027bb..23380d8de81a90fbe50e853e969719d64e8eaee7 100644 (file)
@@ -65,3 +65,20 @@ arm-dts-fix-mmc-node-updates-for-exynos5250-spring.patch
 usb-musb-core-fix-tx-rx-endpoint-order.patch
 usb-phy-find-the-right-match-in-devm_usb_phy_match.patch
 usb-define-a-generic-usb_resume_timeout-macro.patch
+usb-musb-use-new-usb_resume_timeout.patch
+usb-host-oxu210hp-use-new-usb_resume_timeout.patch
+usb-host-fusbh200-use-new-usb_resume_timeout.patch
+usb-host-uhci-use-new-usb_resume_timeout.patch
+usb-host-fotg210-use-new-usb_resume_timeout.patch
+usb-host-r8a66597-use-new-usb_resume_timeout.patch
+usb-host-isp116x-use-new-usb_resume_timeout.patch
+usb-host-xhci-use-new-usb_resume_timeout.patch
+usb-host-ehci-use-new-usb_resume_timeout.patch
+usb-host-sl811-use-new-usb_resume_timeout.patch
+usb-core-hub-use-new-usb_resume_timeout.patch
+clk-at91-usb-propagate-rate-modification-to-the-parent-clk.patch
+alsa-hda-add-dock-support-for-thinkpad-x250-17aa-2226.patch
+alsa-emu10k1-don-t-deadlock-in-proc-functions.patch
+alsa-hda-realtek-enable-the-alc292-dock-fixup-on-the-thinkpad-t450.patch
+alsa-hda-fix-num_steps-0-error-on-alc256.patch
+alsa-hda-realtek-fix-headphone-mic-doesn-t-recording-for-alc256.patch
diff --git a/queue-3.19/usb-core-hub-use-new-usb_resume_timeout.patch b/queue-3.19/usb-core-hub-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..9cffce5
--- /dev/null
@@ -0,0 +1,34 @@
+From bbc78c07a51f6fd29c227b1220a9016e585358ba Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 15:38:33 -0600
+Subject: usb: core: hub: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit bbc78c07a51f6fd29c227b1220a9016e585358ba upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/core/hub.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -3397,10 +3397,10 @@ int usb_port_resume(struct usb_device *u
+       if (status) {
+               dev_dbg(&port_dev->dev, "can't resume, status %d\n", status);
+       } else {
+-              /* drive resume for at least 20 msec */
++              /* drive resume for USB_RESUME_TIMEOUT msec */
+               dev_dbg(&udev->dev, "usb %sresume\n",
+                               (PMSG_IS_AUTO(msg) ? "auto-" : ""));
+-              msleep(25);
++              msleep(USB_RESUME_TIMEOUT);
+               /* Virtual root hubs can trigger on GET_PORT_STATUS to
+                * stop resume signaling.  Then finish the resume
diff --git a/queue-3.19/usb-host-ehci-use-new-usb_resume_timeout.patch b/queue-3.19/usb-host-ehci-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..7aecb87
--- /dev/null
@@ -0,0 +1,67 @@
+From ea16328f80ca8d74434352157f37ef60e2f55ce2 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 14:42:25 -0600
+Subject: usb: host: ehci: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit ea16328f80ca8d74434352157f37ef60e2f55ce2 upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/ehci-hcd.c |   10 +++++-----
+ drivers/usb/host/ehci-hub.c |    9 ++++++---
+ 2 files changed, 11 insertions(+), 8 deletions(-)
+
+--- a/drivers/usb/host/ehci-hcd.c
++++ b/drivers/usb/host/ehci-hcd.c
+@@ -792,12 +792,12 @@ static irqreturn_t ehci_irq (struct usb_
+                                       ehci->reset_done[i] == 0))
+                               continue;
+-                      /* start 20 msec resume signaling from this port,
+-                       * and make hub_wq collect PORT_STAT_C_SUSPEND to
+-                       * stop that signaling.  Use 5 ms extra for safety,
+-                       * like usb_port_resume() does.
++                      /* start USB_RESUME_TIMEOUT msec resume signaling from
++                       * this port, and make hub_wq collect
++                       * PORT_STAT_C_SUSPEND to stop that signaling.
+                        */
+-                      ehci->reset_done[i] = jiffies + msecs_to_jiffies(25);
++                      ehci->reset_done[i] = jiffies +
++                              msecs_to_jiffies(USB_RESUME_TIMEOUT);
+                       set_bit(i, &ehci->resuming_ports);
+                       ehci_dbg (ehci, "port %d remote wakeup\n", i + 1);
+                       usb_hcd_start_port_resume(&hcd->self, i);
+--- a/drivers/usb/host/ehci-hub.c
++++ b/drivers/usb/host/ehci-hub.c
+@@ -471,10 +471,13 @@ static int ehci_bus_resume (struct usb_h
+               ehci_writel(ehci, temp, &ehci->regs->port_status [i]);
+       }
+-      /* msleep for 20ms only if code is trying to resume port */
++      /*
++       * msleep for USB_RESUME_TIMEOUT ms only if code is trying to resume
++       * port
++       */
+       if (resume_needed) {
+               spin_unlock_irq(&ehci->lock);
+-              msleep(20);
++              msleep(USB_RESUME_TIMEOUT);
+               spin_lock_irq(&ehci->lock);
+               if (ehci->shutdown)
+                       goto shutdown;
+@@ -942,7 +945,7 @@ int ehci_hub_control(
+                       temp &= ~PORT_WAKE_BITS;
+                       ehci_writel(ehci, temp | PORT_RESUME, status_reg);
+                       ehci->reset_done[wIndex] = jiffies
+-                                      + msecs_to_jiffies(20);
++                                      + msecs_to_jiffies(USB_RESUME_TIMEOUT);
+                       set_bit(wIndex, &ehci->resuming_ports);
+                       usb_hcd_start_port_resume(&hcd->self, wIndex);
+                       break;
diff --git a/queue-3.19/usb-host-fotg210-use-new-usb_resume_timeout.patch b/queue-3.19/usb-host-fotg210-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..1d9eed4
--- /dev/null
@@ -0,0 +1,30 @@
+From 7e136bb71a08e8b8be3bc492f041d9b0bea3856d Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 14:54:38 -0600
+Subject: usb: host: fotg210: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit 7e136bb71a08e8b8be3bc492f041d9b0bea3856d upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/fotg210-hcd.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/host/fotg210-hcd.c
++++ b/drivers/usb/host/fotg210-hcd.c
+@@ -1595,7 +1595,7 @@ static int fotg210_hub_control(
+                       /* resume signaling for 20 msec */
+                       fotg210_writel(fotg210, temp | PORT_RESUME, status_reg);
+                       fotg210->reset_done[wIndex] = jiffies
+-                                      + msecs_to_jiffies(20);
++                                      + msecs_to_jiffies(USB_RESUME_TIMEOUT);
+                       break;
+               case USB_PORT_FEAT_C_SUSPEND:
+                       clear_bit(wIndex, &fotg210->port_c_suspend);
diff --git a/queue-3.19/usb-host-fusbh200-use-new-usb_resume_timeout.patch b/queue-3.19/usb-host-fusbh200-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..73ae07d
--- /dev/null
@@ -0,0 +1,33 @@
+From 595227db1f2d98bfc33f02a55842f268e12b247d Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 14:55:34 -0600
+Subject: usb: host: fusbh200: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit 595227db1f2d98bfc33f02a55842f268e12b247d upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/fusbh200-hcd.c |    3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+--- a/drivers/usb/host/fusbh200-hcd.c
++++ b/drivers/usb/host/fusbh200-hcd.c
+@@ -1550,10 +1550,9 @@ static int fusbh200_hub_control (
+                       if ((temp & PORT_PE) == 0)
+                               goto error;
+-                      /* resume signaling for 20 msec */
+                       fusbh200_writel(fusbh200, temp | PORT_RESUME, status_reg);
+                       fusbh200->reset_done[wIndex] = jiffies
+-                                      + msecs_to_jiffies(20);
++                                      + msecs_to_jiffies(USB_RESUME_TIMEOUT);
+                       break;
+               case USB_PORT_FEAT_C_SUSPEND:
+                       clear_bit(wIndex, &fusbh200->port_c_suspend);
diff --git a/queue-3.19/usb-host-isp116x-use-new-usb_resume_timeout.patch b/queue-3.19/usb-host-isp116x-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..4001313
--- /dev/null
@@ -0,0 +1,30 @@
+From 8c0ae6574ccfd3d619876a65829aad74c9d22ba5 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 14:50:10 -0600
+Subject: usb: host: isp116x: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit 8c0ae6574ccfd3d619876a65829aad74c9d22ba5 upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/isp116x-hcd.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/host/isp116x-hcd.c
++++ b/drivers/usb/host/isp116x-hcd.c
+@@ -1487,7 +1487,7 @@ static int isp116x_bus_resume(struct usb
+       spin_unlock_irq(&isp116x->lock);
+       hcd->state = HC_STATE_RESUMING;
+-      msleep(20);
++      msleep(USB_RESUME_TIMEOUT);
+       /* Go operational */
+       spin_lock_irq(&isp116x->lock);
diff --git a/queue-3.19/usb-host-oxu210hp-use-new-usb_resume_timeout.patch b/queue-3.19/usb-host-oxu210hp-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..4f458df
--- /dev/null
@@ -0,0 +1,37 @@
+From 84c0d178eb9f3a3ae4d63dc97a440266cf17f7f5 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 14:57:54 -0600
+Subject: usb: host: oxu210hp: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit 84c0d178eb9f3a3ae4d63dc97a440266cf17f7f5 upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/oxu210hp-hcd.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/host/oxu210hp-hcd.c
++++ b/drivers/usb/host/oxu210hp-hcd.c
+@@ -2500,11 +2500,12 @@ static irqreturn_t oxu210_hcd_irq(struct
+                                       || oxu->reset_done[i] != 0)
+                               continue;
+-                      /* start 20 msec resume signaling from this port,
+-                       * and make hub_wq collect PORT_STAT_C_SUSPEND to
++                      /* start USB_RESUME_TIMEOUT resume signaling from this
++                       * port, and make hub_wq collect PORT_STAT_C_SUSPEND to
+                        * stop that signaling.
+                        */
+-                      oxu->reset_done[i] = jiffies + msecs_to_jiffies(20);
++                      oxu->reset_done[i] = jiffies +
++                              msecs_to_jiffies(USB_RESUME_TIMEOUT);
+                       oxu_dbg(oxu, "port %d remote wakeup\n", i + 1);
+                       mod_timer(&hcd->rh_timer, oxu->reset_done[i]);
+               }
diff --git a/queue-3.19/usb-host-r8a66597-use-new-usb_resume_timeout.patch b/queue-3.19/usb-host-r8a66597-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..f16b924
--- /dev/null
@@ -0,0 +1,35 @@
+From 7a606ac29752a3e571b83f9b3fceb1eaa1d37781 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 14:58:53 -0600
+Subject: usb: host: r8a66597: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit 7a606ac29752a3e571b83f9b3fceb1eaa1d37781 upstream.
+
+While this driver was already using a 50ms resume
+timeout, let's make sure everybody uses the same
+macro so it's easy to fix later should anything
+go wrong.
+
+It also gives a more "stable" expectation to Linux
+users.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/r8a66597-hcd.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/host/r8a66597-hcd.c
++++ b/drivers/usb/host/r8a66597-hcd.c
+@@ -2300,7 +2300,7 @@ static int r8a66597_bus_resume(struct us
+               rh->port &= ~USB_PORT_STAT_SUSPEND;
+               rh->port |= USB_PORT_STAT_C_SUSPEND << 16;
+               r8a66597_mdfy(r8a66597, RESUME, RESUME | UACT, dvstctr_reg);
+-              msleep(50);
++              msleep(USB_RESUME_TIMEOUT);
+               r8a66597_mdfy(r8a66597, UACT, RESUME | UACT, dvstctr_reg);
+       }
diff --git a/queue-3.19/usb-host-sl811-use-new-usb_resume_timeout.patch b/queue-3.19/usb-host-sl811-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..7402fa5
--- /dev/null
@@ -0,0 +1,30 @@
+From 08debfb13b199716da6153940c31968c556b195d Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 15:00:38 -0600
+Subject: usb: host: sl811: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit 08debfb13b199716da6153940c31968c556b195d upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/sl811-hcd.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/host/sl811-hcd.c
++++ b/drivers/usb/host/sl811-hcd.c
+@@ -1259,7 +1259,7 @@ sl811h_hub_control(
+                       sl811_write(sl811, SL11H_CTLREG1, sl811->ctrl1);
+                       mod_timer(&sl811->timer, jiffies
+-                                      + msecs_to_jiffies(20));
++                                      + msecs_to_jiffies(USB_RESUME_TIMEOUT));
+                       break;
+               case USB_PORT_FEAT_POWER:
+                       port_power(sl811, 0);
diff --git a/queue-3.19/usb-host-uhci-use-new-usb_resume_timeout.patch b/queue-3.19/usb-host-uhci-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..d670930
--- /dev/null
@@ -0,0 +1,40 @@
+From b8fb6f79f76f478acbbffccc966daa878f172a0a Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 14:44:17 -0600
+Subject: usb: host: uhci: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit b8fb6f79f76f478acbbffccc966daa878f172a0a upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/uhci-hub.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/host/uhci-hub.c
++++ b/drivers/usb/host/uhci-hub.c
+@@ -165,7 +165,7 @@ static void uhci_check_ports(struct uhci
+                               /* Port received a wakeup request */
+                               set_bit(port, &uhci->resuming_ports);
+                               uhci->ports_timeout = jiffies +
+-                                              msecs_to_jiffies(25);
++                                      msecs_to_jiffies(USB_RESUME_TIMEOUT);
+                               usb_hcd_start_port_resume(
+                                               &uhci_to_hcd(uhci)->self, port);
+@@ -337,7 +337,8 @@ static int uhci_hub_control(struct usb_h
+                       uhci_finish_suspend(uhci, port, port_addr);
+                       /* USB v2.0 7.1.7.5 */
+-                      uhci->ports_timeout = jiffies + msecs_to_jiffies(50);
++                      uhci->ports_timeout = jiffies +
++                              msecs_to_jiffies(USB_RESUME_TIMEOUT);
+                       break;
+               case USB_PORT_FEAT_POWER:
+                       /* UHCI has no power switching */
diff --git a/queue-3.19/usb-host-xhci-use-new-usb_resume_timeout.patch b/queue-3.19/usb-host-xhci-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..21650dd
--- /dev/null
@@ -0,0 +1,31 @@
+From b9e451885deb6262dbaf5cd14aa77d192d9ac759 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 14:39:13 -0600
+Subject: usb: host: xhci: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit b9e451885deb6262dbaf5cd14aa77d192d9ac759 upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/host/xhci-ring.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/host/xhci-ring.c
++++ b/drivers/usb/host/xhci-ring.c
+@@ -1574,7 +1574,7 @@ static void handle_port_status(struct xh
+               } else {
+                       xhci_dbg(xhci, "resume HS port %d\n", port_id);
+                       bus_state->resume_done[faked_port_index] = jiffies +
+-                              msecs_to_jiffies(20);
++                              msecs_to_jiffies(USB_RESUME_TIMEOUT);
+                       set_bit(faked_port_index, &bus_state->resuming_ports);
+                       mod_timer(&hcd->rh_timer,
+                                 bus_state->resume_done[faked_port_index]);
diff --git a/queue-3.19/usb-musb-use-new-usb_resume_timeout.patch b/queue-3.19/usb-musb-use-new-usb_resume_timeout.patch
new file mode 100644 (file)
index 0000000..4085c26
--- /dev/null
@@ -0,0 +1,62 @@
+From 309be239369609929d5d3833ee043f7c5afc95d1 Mon Sep 17 00:00:00 2001
+From: Felipe Balbi <balbi@ti.com>
+Date: Fri, 13 Feb 2015 14:46:27 -0600
+Subject: usb: musb: use new USB_RESUME_TIMEOUT
+
+From: Felipe Balbi <balbi@ti.com>
+
+commit 309be239369609929d5d3833ee043f7c5afc95d1 upstream.
+
+Make sure we're using the new macro, so our
+resume signaling will always pass certification.
+
+Based on original work by Bin Liu <Bin Liu <b-liu@ti.com>>
+
+Cc: Bin Liu <b-liu@ti.com>
+Signed-off-by: Felipe Balbi <balbi@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/usb/musb/musb_core.c    |    5 +++--
+ drivers/usb/musb/musb_virthub.c |    2 +-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -99,6 +99,7 @@
+ #include <linux/platform_device.h>
+ #include <linux/io.h>
+ #include <linux/dma-mapping.h>
++#include <linux/usb.h>
+ #include "musb_core.h"
+@@ -562,7 +563,7 @@ static irqreturn_t musb_stage0_irq(struc
+                                               (USB_PORT_STAT_C_SUSPEND << 16)
+                                               | MUSB_PORT_STAT_RESUME;
+                               musb->rh_timer = jiffies
+-                                               + msecs_to_jiffies(20);
++                                      + msecs_to_jiffies(USB_RESUME_TIMEOUT);
+                               musb->need_finish_resume = 1;
+                               musb->xceiv->otg->state = OTG_STATE_A_HOST;
+@@ -2468,7 +2469,7 @@ static int musb_resume(struct device *de
+       if (musb->need_finish_resume) {
+               musb->need_finish_resume = 0;
+               schedule_delayed_work(&musb->finish_resume_work,
+-                                    msecs_to_jiffies(20));
++                                    msecs_to_jiffies(USB_RESUME_TIMEOUT));
+       }
+       /*
+--- a/drivers/usb/musb/musb_virthub.c
++++ b/drivers/usb/musb/musb_virthub.c
+@@ -137,7 +137,7 @@ void musb_port_suspend(struct musb *musb
+               /* later, GetPortStatus will stop RESUME signaling */
+               musb->port1_status |= MUSB_PORT_STAT_RESUME;
+               schedule_delayed_work(&musb->finish_resume_work,
+-                                    msecs_to_jiffies(20));
++                                    msecs_to_jiffies(USB_RESUME_TIMEOUT));
+       }
+ }