diff options
author | Magnus Damm <damm@igel.co.jp> | 2009-08-19 10:26:10 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-08-19 21:30:45 -0400 |
commit | 0bb886d2a9c2d4e069ca364e36c52c7ae6d1ca8c (patch) | |
tree | 34bd4255913ab3c2576627f54fe21592eedf6ece /drivers/usb | |
parent | ef5ce3b69028ea32aa87e98c9a3802e7c9f824b6 (diff) |
usb: r8a66597-udc disable interrupts on shutdown fix
This patch improves the disable_controller() function in the
r8a66597-udc driver to disable all interrupts and also clear
status flags. With this patch in place the driver survives
kexec.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/r8a66597-udc.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c index 956618400a7c..9ca867a85a05 100644 --- a/drivers/usb/gadget/r8a66597-udc.c +++ b/drivers/usb/gadget/r8a66597-udc.c | |||
@@ -614,8 +614,17 @@ static void disable_controller(struct r8a66597 *r8a66597) | |||
614 | if (r8a66597->pdata->on_chip) { | 614 | if (r8a66597->pdata->on_chip) { |
615 | r8a66597_bset(r8a66597, SCKE, SYSCFG0); | 615 | r8a66597_bset(r8a66597, SCKE, SYSCFG0); |
616 | 616 | ||
617 | /* disable interrupts */ | ||
617 | r8a66597_write(r8a66597, 0, INTENB0); | 618 | r8a66597_write(r8a66597, 0, INTENB0); |
618 | r8a66597_write(r8a66597, 0, INTENB1); | 619 | r8a66597_write(r8a66597, 0, INTENB1); |
620 | r8a66597_write(r8a66597, 0, BRDYENB); | ||
621 | r8a66597_write(r8a66597, 0, BEMPENB); | ||
622 | r8a66597_write(r8a66597, 0, NRDYENB); | ||
623 | |||
624 | /* clear status */ | ||
625 | r8a66597_write(r8a66597, 0, BRDYSTS); | ||
626 | r8a66597_write(r8a66597, 0, NRDYSTS); | ||
627 | r8a66597_write(r8a66597, 0, BEMPSTS); | ||
619 | 628 | ||
620 | r8a66597_bclr(r8a66597, USBE, SYSCFG0); | 629 | r8a66597_bclr(r8a66597, USBE, SYSCFG0); |
621 | r8a66597_bclr(r8a66597, SCKE, SYSCFG0); | 630 | r8a66597_bclr(r8a66597, SCKE, SYSCFG0); |