usb: r8a66597-udc disable interrupts on shutdown fix
authorMagnus Damm <damm@igel.co.jp>
Wed, 19 Aug 2009 14:26:10 +0000 (14:26 +0000)
committerPaul Mundt <lethal@linux-sh.org>
Thu, 20 Aug 2009 01:30:45 +0000 (10:30 +0900)
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>
drivers/usb/gadget/r8a66597-udc.c

index 9566184..9ca867a 100644 (file)
@@ -614,8 +614,17 @@ static void disable_controller(struct r8a66597 *r8a66597)
        if (r8a66597->pdata->on_chip) {
                r8a66597_bset(r8a66597, SCKE, SYSCFG0);
 
+               /* disable interrupts */
                r8a66597_write(r8a66597, 0, INTENB0);
                r8a66597_write(r8a66597, 0, INTENB1);
+               r8a66597_write(r8a66597, 0, BRDYENB);
+               r8a66597_write(r8a66597, 0, BEMPENB);
+               r8a66597_write(r8a66597, 0, NRDYENB);
+
+               /* clear status */
+               r8a66597_write(r8a66597, 0, BRDYSTS);
+               r8a66597_write(r8a66597, 0, NRDYSTS);
+               r8a66597_write(r8a66597, 0, BEMPSTS);
 
                r8a66597_bclr(r8a66597, USBE, SYSCFG0);
                r8a66597_bclr(r8a66597, SCKE, SYSCFG0);