usb: dwc3: omap: set idle and standby modes
authorFelipe Balbi <balbi@ti.com>
Tue, 6 Sep 2011 07:56:51 +0000 (10:56 +0300)
committerFelipe Balbi <balbi@ti.com>
Fri, 9 Sep 2011 10:05:30 +0000 (13:05 +0300)
For now, let's disable IDLE and STANDBY transitions
until we have a real HW to validate against.

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

index 421b5db..72cc92b 100644 (file)
 /* SYSCONFIG REGISTER */
 #define USBOTGSS_SYSCONFIG_DMADISABLE          (1 << 16)
 #define USBOTGSS_SYSCONFIG_STANDBYMODE(x)      ((x) << 4)
+
+#define USBOTGSS_STANDBYMODE_FORCE_STANDBY     0
+#define USBOTGSS_STANDBYMODE_NO_STANDBY                1
+#define USBOTGSS_STANDBYMODE_SMART_STANDBY     2
+#define USBOTGSS_STANDBYMODE_SMART_WAKEUP      3
+
+#define USBOTGSS_STANDBYMODE_MASK              (0x03 << 4)
+
 #define USBOTGSS_SYSCONFIG_IDLEMODE(x)         ((x) << 2)
 
+#define USBOTGSS_IDLEMODE_FORCE_IDLE           0
+#define USBOTGSS_IDLEMODE_NO_IDLE              1
+#define USBOTGSS_IDLEMODE_SMART_IDLE           2
+#define USBOTGSS_IDLEMODE_SMART_WAKEUP         3
+
+#define USBOTGSS_IDLEMODE_MASK                 (0x03 << 2)
+
 /* IRQ_EOI REGISTER */
 #define USBOTGSS_IRQ_EOI_LINE_NUMBER           (1 << 0)
 
@@ -270,6 +285,15 @@ static int __devinit dwc3_omap_probe(struct platform_device *pdev)
        reg = dwc3_readl(omap->base, USBOTGSS_SYSCONFIG);
        omap->dma_status = !!(reg & USBOTGSS_SYSCONFIG_DMADISABLE);
 
+       /* Set No-Idle and No-Standby */
+       reg &= ~(USBOTGSS_STANDBYMODE_MASK
+                       | USBOTGSS_IDLEMODE_MASK);
+
+       reg |= (USBOTGSS_SYSCONFIG_STANDBYMODE(USBOTGSS_STANDBYMODE_NO_STANDBY)
+               | USBOTGSS_SYSCONFIG_IDLEMODE(USBOTGSS_IDLEMODE_NO_IDLE));
+
+       dwc3_writel(omap->base, USBOTGSS_SYSCONFIG, reg);
+
        ret = request_irq(omap->irq, dwc3_omap_interrupt, 0,
                        "dwc3-omap", omap);
        if (ret) {