diff options
Diffstat (limited to 'drivers/usb/host')
| -rw-r--r-- | drivers/usb/host/xhci-dbgcap.c | 15 | ||||
| -rw-r--r-- | drivers/usb/host/xhci-pci.c | 3 | 
2 files changed, 14 insertions, 4 deletions
| diff --git a/drivers/usb/host/xhci-dbgcap.c b/drivers/usb/host/xhci-dbgcap.c index 63edf2d8f245..ecda964e018a 100644 --- a/drivers/usb/host/xhci-dbgcap.c +++ b/drivers/usb/host/xhci-dbgcap.c @@ -892,7 +892,8 @@ static enum evtreturn xhci_dbc_do_handle_events(struct xhci_dbc *dbc)  			dev_info(dbc->dev, "DbC configured\n");  			portsc = readl(&dbc->regs->portsc);  			writel(portsc, &dbc->regs->portsc); -			return EVT_GSER; +			ret = EVT_GSER; +			break;  		}  		return EVT_DONE; @@ -954,7 +955,8 @@ static enum evtreturn xhci_dbc_do_handle_events(struct xhci_dbc *dbc)  			break;  		case TRB_TYPE(TRB_TRANSFER):  			dbc_handle_xfer_event(dbc, evt); -			ret = EVT_XFER_DONE; +			if (ret != EVT_GSER) +				ret = EVT_XFER_DONE;  			break;  		default:  			break; @@ -1390,8 +1392,15 @@ int xhci_dbc_suspend(struct xhci_hcd *xhci)  	if (!dbc)  		return 0; -	if (dbc->state == DS_CONFIGURED) +	switch (dbc->state) { +	case DS_ENABLED: +	case DS_CONNECTED: +	case DS_CONFIGURED:  		dbc->resume_required = 1; +		break; +	default: +		break; +	}  	xhci_dbc_stop(dbc); diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c index 5c8ab519f497..f67a4d956204 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c @@ -582,6 +582,8 @@ static int xhci_pci_setup(struct usb_hcd *hcd)  	if (!usb_hcd_is_primary_hcd(hcd))  		return 0; +	xhci->allow_single_roothub = 1; +  	if (xhci->quirks & XHCI_PME_STUCK_QUIRK)  		xhci_pme_acpi_rtd3_enable(pdev); @@ -637,7 +639,6 @@ int xhci_pci_common_probe(struct pci_dev *dev, const struct pci_device_id *id)  	xhci = hcd_to_xhci(hcd);  	xhci->reset = reset; -	xhci->allow_single_roothub = 1;  	if (!xhci_has_one_roothub(xhci)) {  		xhci->shared_hcd = usb_create_shared_hcd(&xhci_pci_hc_driver, &dev->dev,  							 pci_name(dev), hcd); | 
