diff options
Diffstat (limited to 'drivers/usb/host/xhci.c')
| -rw-r--r-- | drivers/usb/host/xhci.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 7648b2d4b26..c59d5b5b6c7 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -166,7 +166,7 @@ int xhci_reset(struct xhci_hcd *xhci)  	xhci_writel(xhci, command, &xhci->op_regs->command);  	ret = handshake(xhci, &xhci->op_regs->command, -			CMD_RESET, 0, 250 * 1000); +			CMD_RESET, 0, 10 * 1000 * 1000);  	if (ret)  		return ret; @@ -175,7 +175,8 @@ int xhci_reset(struct xhci_hcd *xhci)  	 * xHCI cannot write to any doorbells or operational registers other  	 * than status until the "Controller Not Ready" flag is cleared.  	 */ -	ret = handshake(xhci, &xhci->op_regs->status, STS_CNR, 0, 250 * 1000); +	ret = handshake(xhci, &xhci->op_regs->status, +			STS_CNR, 0, 10 * 1000 * 1000);  	for (i = 0; i < 2; ++i) {  		xhci->bus_state[i].port_c_suspend = 0; @@ -658,6 +659,9 @@ void xhci_shutdown(struct usb_hcd *hcd)  {  	struct xhci_hcd *xhci = hcd_to_xhci(hcd); +	if (xhci->quirks && XHCI_SPURIOUS_REBOOT) +		usb_disable_xhci_ports(to_pci_dev(hcd->self.controller)); +  	spin_lock_irq(&xhci->lock);  	xhci_halt(xhci);  	spin_unlock_irq(&xhci->lock);  |