blob: 3c6657aede0dc87caaec6bcd847415d38427a534 [file] [log] [blame]
Joel Stanley11548952016-03-03 11:41:59 +10301From ca2c088493b9c02f33934d6c6dfb327b6dac3bd0 Mon Sep 17 00:00:00 2001
Joel Stanleyd9669fe2016-01-22 16:13:06 +10302From: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
3Date: Mon, 10 Mar 2014 13:02:13 -0300
Joel Stanley11548952016-03-03 11:41:59 +10304Subject: [PATCH 3/7] xhci: do not halt the secondary HCD
Joel Stanleyd9669fe2016-01-22 16:13:06 +10305
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
Joel Stanley11548952016-03-03 11:41:59 +103017index cef80e930db9..90f48eb32d93 100644
Joel Stanleyd9669fe2016-01-22 16:13:06 +103018--- 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--
Joel Stanley16658402016-02-22 13:39:04 +1030412.7.0
Joel Stanleyd9669fe2016-01-22 16:13:06 +103042