ARM: OMAP: Enable 24xx GPIO autoidling
authorJuha Yrjola <juha.yrjola@solidboot.com>
Thu, 7 Dec 2006 01:13:48 +0000 (17:13 -0800)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 5 May 2007 09:53:45 +0000 (10:53 +0100)
Enable 24xx GPIO autoidling

Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/plat-omap/gpio.c

index 8bedc8f..037a493 100644 (file)
@@ -1082,6 +1082,10 @@ static int __init _omap_gpio_init(void)
                if (bank->method == METHOD_GPIO_24XX) {
                        __raw_writel(0x00000000, bank->base + OMAP24XX_GPIO_IRQENABLE1);
                        __raw_writel(0xffffffff, bank->base + OMAP24XX_GPIO_IRQSTATUS1);
+                       __raw_writew(0x0015, bank->base + OMAP24XX_GPIO_SYSCONFIG);
+
+                       /* Initialize interface clock ungated, module enabled */
+                       __raw_writel(0, bank->base + OMAP24XX_GPIO_CTRL);
 
                        gpio_count = 32;
                }
@@ -1104,6 +1108,12 @@ static int __init _omap_gpio_init(void)
        if (cpu_is_omap16xx())
                omap_writel(omap_readl(ULPD_CAM_CLK_CTRL) | 0x04, ULPD_CAM_CLK_CTRL);
 
+#ifdef CONFIG_ARCH_OMAP24XX
+       /* Enable autoidle for the OCP interface */
+       if (cpu_is_omap24xx())
+               omap_writel(1 << 0, 0x48019010);
+#endif
+
        return 0;
 }