diff options
author | Xin Xie <xxie@nvidia.com> | 2012-08-07 16:07:14 -0700 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-08-17 12:19:57 -0700 |
commit | 633c85bd905ef672e5e406c595b97deffd84a92a (patch) | |
tree | d630bda8b001c7c4e0967b2bea6c3b5d09a17494 | |
parent | c7f41361bf1ccc58b0e3735f28cf3a8d54602252 (diff) |
usb: gadget: tegra: remove unnecessary bus resume
Current Tegra UDC driver share same IRQ with OTG driver, and it will call
bus_resume() even if there is no UDC IRQ pending.
This patch will check UDC IRQ source and will not cause bus resume if no
IRQ pending for UDC driver.
BUG 1015685
Change-Id: Ifc5634ae5d1f7f1435c64bc527ab2e9fb8d0e36b
Signed-off-by: Xin Xie <xxie@nvidia.com>
Reviewed-on: http://git-master/r/121896
Reviewed-by: Simone Willett <swillett@nvidia.com>
Tested-by: Simone Willett <swillett@nvidia.com>
-rw-r--r-- | drivers/usb/gadget/tegra_udc.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/usb/gadget/tegra_udc.c b/drivers/usb/gadget/tegra_udc.c index 8b8828d731af..aaffe8482f82 100644 --- a/drivers/usb/gadget/tegra_udc.c +++ b/drivers/usb/gadget/tegra_udc.c @@ -2247,10 +2247,8 @@ static irqreturn_t tegra_udc_irq(int irq, void *_udc) } /* Disable ISR for OTG host mode */ - if (udc->stopped) { - spin_unlock_irqrestore(&udc->lock, flags); - return status; - } + if (udc->stopped) + goto done; /* Fence read for coherency of AHB master intiated writes */ readb(IO_ADDRESS(IO_PPCS_PHYS + USB1_PREFETCH_ID)); @@ -2258,6 +2256,9 @@ static irqreturn_t tegra_udc_irq(int irq, void *_udc) irq_src = udc_readl(udc, USB_STS_REG_OFFSET) & udc_readl(udc, USB_INTR_REG_OFFSET); + if (irq_src == 0) + goto done; + /* Clear notification bits */ udc_writel(udc, irq_src, USB_STS_REG_OFFSET); @@ -2314,6 +2315,7 @@ static irqreturn_t tegra_udc_irq(int irq, void *_udc) if (irq_src & (USB_STS_ERR | USB_STS_SYS_ERR)) VDBG("Error IRQ %x", irq_src); +done: spin_unlock_irqrestore(&udc->lock, flags); return status; } |