| From ca2c088493b9c02f33934d6c6dfb327b6dac3bd0 Mon Sep 17 00:00:00 2001 |
| From: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com> |
| Date: Mon, 10 Mar 2014 13:02:13 -0300 |
| Subject: [PATCH 3/7] xhci: do not halt the secondary HCD |
| |
| We can't halt the secondary HCD, because it's also the primary HCD, |
| which will cause problems if we have devices attached to the primary |
| HCD, like a keyboard. |
| |
| Signed-off-by: Jeremy Kerr <jk@ozlabs.org> |
| Signed-off-by: Joel Stanley <joel@jms.id.au> |
| --- |
| drivers/usb/host/xhci.c | 13 ++++++++++++- |
| 1 file changed, 12 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c |
| index cef80e930db9..90f48eb32d93 100644 |
| --- a/drivers/usb/host/xhci.c |
| +++ b/drivers/usb/host/xhci.c |
| @@ -670,7 +670,18 @@ static void xhci_only_stop_hcd(struct usb_hcd *hcd) |
| struct xhci_hcd *xhci = hcd_to_xhci(hcd); |
| |
| spin_lock_irq(&xhci->lock); |
| - xhci_halt(xhci); |
| + /* |
| + * We can't halt the secondary HCD, because it's also the |
| + * primary HCD, which will cause problems if we have devices |
| + * attached to the primary HCD, like a keyboard. |
| + */ |
| + /*xhci_halt(xhci);*/ |
| + |
| + /* The shared_hcd is going to be deallocated shortly (the USB core only |
| + * calls this function when allocation fails in usb_add_hcd(), or |
| + * usb_remove_hcd() is called). So we need to unset xHCI's pointer. |
| + */ |
| + xhci->shared_hcd = NULL; |
| spin_unlock_irq(&xhci->lock); |
| } |
| |
| -- |
| 2.7.0 |
| |