blob: 6e1430e75d6697589e7301e357e432e199d01847 [file] [log] [blame]
Joel Stanley12779292016-06-25 23:13:56 +09301From 855a1108e1dc8f18121e16fce490c590c4a51bf8 Mon Sep 17 00:00:00 2001
Joel Stanley34fa5c62016-05-11 13:35:01 +09302From: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
3Date: Mon, 10 Mar 2014 13:02:13 -0300
4Subject: [PATCH 3/7] 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 0e66476d4866..ce7b10506bac 100644
18--- a/drivers/usb/host/xhci.c
19+++ b/drivers/usb/host/xhci.c
20@@ -671,7 +671,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--
Joel Stanley12779292016-06-25 23:13:56 +0930412.8.1
Joel Stanley34fa5c62016-05-11 13:35:01 +093042