blob: 3ad615782b7a3c53b41812525d75c53208ed0f0b [file] [log] [blame]
Joel Stanleyd9669fe2016-01-22 16:13:06 +10301From 82addbe4d27c12454572e1200f962cd5ee25523f Mon Sep 17 00:00:00 2001
2From: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
3Date: Mon, 10 Mar 2014 13:02:13 -0300
4Subject: [PATCH 3/5] xhci: do not halt the secondary HCD
5
6We can't halt the secondary HCD, because it's also the primary HCD,
7which will cause problems if we have devices attached to the primary
8HCD, like a keyboard.
9
10Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
11Signed-off-by: Joel Stanley <joel@jms.id.au>
12---
13 drivers/usb/host/xhci.c | 13 ++++++++++++-
14 1 file changed, 12 insertions(+), 1 deletion(-)
15
16diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
17index 2cc689a3b549..aa6d1e0b4bea 100644
18--- a/drivers/usb/host/xhci.c
19+++ b/drivers/usb/host/xhci.c
20@@ -670,7 +670,18 @@ static void xhci_only_stop_hcd(struct usb_hcd *hcd)
21 struct xhci_hcd *xhci = hcd_to_xhci(hcd);
22
23 spin_lock_irq(&xhci->lock);
24- xhci_halt(xhci);
25+ /*
26+ * We can't halt the secondary HCD, because it's also the
27+ * primary HCD, which will cause problems if we have devices
28+ * attached to the primary HCD, like a keyboard.
29+ */
30+ /*xhci_halt(xhci);*/
31+
32+ /* The shared_hcd is going to be deallocated shortly (the USB core only
33+ * calls this function when allocation fails in usb_add_hcd(), or
34+ * usb_remove_hcd() is called). So we need to unset xHCI's pointer.
35+ */
36+ xhci->shared_hcd = NULL;
37 spin_unlock_irq(&xhci->lock);
38 }
39
40--
412.7.0.rc3
42