summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-03-23 09:44:44 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2017-03-23 09:44:44 -0700
commite12647abbd510353e346307a0a799ab130a0ae36 (patch)
treead5899b8a4f10a68c23eae73ac12acedc90869df /drivers/usb
parent9e50ecf4cf70e77cbc2567cb1d454279aeb43878 (diff)
parent5c3153dc84c39dc8ed55243298fa154509d93325 (diff)
Merge "usb: core: Enable xhci irq after starting controller"
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/xhci.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 82391a0dbc7b..aab1c7903288 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -138,7 +138,13 @@ static int xhci_start(struct xhci_hcd *xhci)
{
u32 temp;
int ret;
+ struct usb_hcd *hcd = xhci_to_hcd(xhci);
+ /*
+ * disable irq to avoid xhci_irq flooding due to unhandeled port
+ * change event in halt state, as soon as xhci_start clears halt bit
+ */
+ disable_irq(hcd->irq);
temp = readl(&xhci->op_regs->command);
temp |= (CMD_RUN);
xhci_dbg_trace(xhci, trace_xhci_dbg_init, "// Turn on HC, cmd = 0x%x.",
@@ -159,6 +165,8 @@ static int xhci_start(struct xhci_hcd *xhci)
/* clear state flags. Including dying, halted or removing */
xhci->xhc_state = 0;
+ enable_irq(hcd->irq);
+
return ret;
}