aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorMagnus Damm <damm@igel.co.jp>2009-08-19 10:26:10 -0400
committerPaul Mundt <lethal@linux-sh.org>2009-08-19 21:30:45 -0400
commit0bb886d2a9c2d4e069ca364e36c52c7ae6d1ca8c (patch)
tree34bd4255913ab3c2576627f54fe21592eedf6ece /drivers/usb
parentef5ce3b69028ea32aa87e98c9a3802e7c9f824b6 (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.c9
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);