usb: dwc3: core: introduce and use macros for Event Size register
authorFelipe Balbi <balbi@ti.com>
Wed, 12 Jun 2013 18:09:26 +0000 (21:09 +0300)
committerFelipe Balbi <balbi@ti.com>
Mon, 29 Jul 2013 10:56:58 +0000 (13:56 +0300)
That register has more than just the event buffer
size; we can also mask and unmask that particular
interrupter on bit 31 of that register.

In this patch we introduce the necessary macros
and make sure to use the new macros while also
making sure we mask interrupts during driver
removal.

Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/dwc3/core.c
drivers/usb/dwc3/core.h

index 25d374c54d732a3b5f13884b128cb444bf4401ba..dfbc1f0fc0e3a19253f3d935e2f4ae197916743d 100644 (file)
@@ -218,7 +218,7 @@ static int dwc3_event_buffers_setup(struct dwc3 *dwc)
                dwc3_writel(dwc->regs, DWC3_GEVNTADRHI(n),
                                upper_32_bits(evt->dma));
                dwc3_writel(dwc->regs, DWC3_GEVNTSIZ(n),
-                               evt->length & 0xffff);
+                               DWC3_GEVNTSIZ_SIZE(evt->length));
                dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(n), 0);
        }
 
@@ -237,7 +237,8 @@ static void dwc3_event_buffers_cleanup(struct dwc3 *dwc)
 
                dwc3_writel(dwc->regs, DWC3_GEVNTADRLO(n), 0);
                dwc3_writel(dwc->regs, DWC3_GEVNTADRHI(n), 0);
-               dwc3_writel(dwc->regs, DWC3_GEVNTSIZ(n), 0);
+               dwc3_writel(dwc->regs, DWC3_GEVNTSIZ(n), DWC3_GEVNTSIZ_INTMASK
+                               | DWC3_GEVNTSIZ_SIZE(0));
                dwc3_writel(dwc->regs, DWC3_GEVNTCOUNT(n), 0);
        }
 }
index cb6f8d803bc57f50d2a393aa08d442a5078ddd51..d30e094faa5822eb91d4aa25e53a5b5c75d4edbe 100644 (file)
 #define DWC3_GTXFIFOSIZ_TXFDEF(n)      ((n) & 0xffff)
 #define DWC3_GTXFIFOSIZ_TXFSTADDR(n)   ((n) & 0xffff0000)
 
+/* Global Event Size Registers */
+#define DWC3_GEVNTSIZ_INTMASK          (1 << 31)
+#define DWC3_GEVNTSIZ_SIZE(n)          ((n) & 0xffff)
+
 /* Global HWPARAMS1 Register */
 #define DWC3_GHWPARAMS1_EN_PWROPT(n)   (((n) & (3 << 24)) >> 24)
 #define DWC3_GHWPARAMS1_EN_PWROPT_NO   0