summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorXin Xie <xxie@nvidia.com>2012-08-07 16:07:14 -0700
committerSimone Willett <swillett@nvidia.com>2012-08-17 12:19:57 -0700
commit633c85bd905ef672e5e406c595b97deffd84a92a (patch)
treed630bda8b001c7c4e0967b2bea6c3b5d09a17494 /drivers/usb
parentc7f41361bf1ccc58b0e3735f28cf3a8d54602252 (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>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/gadget/tegra_udc.c10
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;
}