diff options
Diffstat (limited to 'drivers/usb/host/xhci.c')
| -rw-r--r-- | drivers/usb/host/xhci.c | 10 | 
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index 56f85df013db..b2ff1ff1a02f 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -198,6 +198,9 @@ int xhci_reset(struct xhci_hcd *xhci)  	if (ret)  		return ret; +	if (xhci->quirks & XHCI_ASMEDIA_MODIFY_FLOWCONTROL) +		usb_asmedia_modifyflowcontrol(to_pci_dev(xhci_to_hcd(xhci)->self.controller)); +  	xhci_dbg_trace(xhci, trace_xhci_dbg_init,  			 "Wait for controller to be ready for doorbell rings");  	/* @@ -622,8 +625,10 @@ int xhci_run(struct usb_hcd *hcd)  		if (!command)  			return -ENOMEM; -		xhci_queue_vendor_command(xhci, command, 0, 0, 0, +		ret = xhci_queue_vendor_command(xhci, command, 0, 0, 0,  				TRB_TYPE(TRB_NEC_GET_FW)); +		if (ret) +			xhci_free_command(xhci, command);  	}  	xhci_dbg_trace(xhci, trace_xhci_dbg_init,  			"Finished xhci_run for USB2 roothub"); @@ -1085,6 +1090,9 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)  	if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && !comp_timer_running)  		compliance_mode_recovery_timer_init(xhci); +	if (xhci->quirks & XHCI_ASMEDIA_MODIFY_FLOWCONTROL) +		usb_asmedia_modifyflowcontrol(to_pci_dev(hcd->self.controller)); +  	/* Re-enable port polling. */  	xhci_dbg(xhci, "%s: starting port polling.\n", __func__);  	set_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags);  | 
