git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
ARM: 5965/1: Fix soft lockup in at91 udc driver
[safe/jmp/linux-2.6]
/
drivers
/
usb
/
gadget
/
at91_udc.c
diff --git
a/drivers/usb/gadget/at91_udc.c
b/drivers/usb/gadget/at91_udc.c
index
12ac9cd
..
df1bae9
100644
(file)
--- a/
drivers/usb/gadget/at91_udc.c
+++ b/
drivers/usb/gadget/at91_udc.c
@@
-1370,6
+1370,12
@@
static irqreturn_t at91_udc_irq (int irq, void *_udc)
{
struct at91_udc *udc = _udc;
u32 rescans = 5;
+ int disable_clock = 0;
+
+ if (!udc->clocked) {
+ clk_on(udc);
+ disable_clock = 1;
+ }
while (rescans--) {
u32 status;
@@
-1458,6
+1464,9
@@
static irqreturn_t at91_udc_irq (int irq, void *_udc)
}
}
+ if (disable_clock)
+ clk_off(udc);
+
return IRQ_HANDLED;
}