gpio/omap: debounce remove SoC specific registers, use pdata
authorKevin Hilman <khilman@ti.com>
Fri, 22 Apr 2011 19:02:05 +0000 (12:02 -0700)
committerKevin Hilman <khilman@ti.com>
Thu, 16 Jun 2011 18:14:09 +0000 (11:14 -0700)
Use register offsets passed in from pdata for accessing debounce registers.

Signed-off-by: Kevin Hilman <khilman@ti.com>
arch/arm/mach-omap2/gpio.c
arch/arm/plat-omap/include/plat/gpio.h
drivers/gpio/gpio-omap.c

index cc26677a12f89964bf2c1487a74abe5ec5325e44..316d930651f1cbf1dd298391c17f1eeb10deccf8 100644 (file)
@@ -81,6 +81,8 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
                pdata->regs->irqenable = OMAP24XX_GPIO_IRQENABLE1;
                pdata->regs->set_irqenable = OMAP24XX_GPIO_SETIRQENABLE1;
                pdata->regs->clr_irqenable = OMAP24XX_GPIO_CLEARIRQENABLE1;
+               pdata->regs->debounce = OMAP24XX_GPIO_DEBOUNCE_VAL;
+               pdata->regs->debounce_en = OMAP24XX_GPIO_DEBOUNCE_EN;
                break;
        case 2:
                pdata->bank_type = METHOD_GPIO_44XX;
@@ -94,6 +96,8 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
                pdata->regs->irqenable = OMAP4_GPIO_IRQSTATUSSET0;
                pdata->regs->set_irqenable = OMAP4_GPIO_IRQSTATUSSET0;
                pdata->regs->clr_irqenable = OMAP4_GPIO_IRQSTATUSCLR0;
+               pdata->regs->debounce = OMAP4_GPIO_DEBOUNCINGTIME;
+               pdata->regs->debounce_en = OMAP4_GPIO_DEBOUNCENABLE;
                break;
        default:
                WARN(1, "Invalid gpio bank_type\n");
index c7e3a56340c0351f0988e7c5f7f7039c501ecfef..7a3f067ee53216e230257875b38fffa1b00074c8 100644 (file)
@@ -185,6 +185,8 @@ struct omap_gpio_reg_offs {
        u16 irqenable;
        u16 set_irqenable;
        u16 clr_irqenable;
+       u16 debounce;
+       u16 debounce_en;
 
        bool irqenable_inv;
 };
index dbe0cf36e909ca5f8124f6402b9639d7217c6462..f212d236f908a7819762f7f87dc2d1996fdd63f6 100644 (file)
@@ -168,7 +168,7 @@ do {        \
 static void _set_gpio_debounce(struct gpio_bank *bank, unsigned gpio,
                unsigned debounce)
 {
-       void __iomem            *reg = bank->base;
+       void __iomem            *reg;
        u32                     val;
        u32                     l;
 
@@ -184,19 +184,10 @@ static void _set_gpio_debounce(struct gpio_bank *bank, unsigned gpio,
 
        l = GPIO_BIT(bank, gpio);
 
-       if (bank->method == METHOD_GPIO_44XX)
-               reg += OMAP4_GPIO_DEBOUNCINGTIME;
-       else
-               reg += OMAP24XX_GPIO_DEBOUNCE_VAL;
-
+       reg = bank->base + bank->regs->debounce;
        __raw_writel(debounce, reg);
 
-       reg = bank->base;
-       if (bank->method == METHOD_GPIO_44XX)
-               reg += OMAP4_GPIO_DEBOUNCENABLE;
-       else
-               reg += OMAP24XX_GPIO_DEBOUNCE_EN;
-
+       reg = bank->base + bank->regs->debounce_en;
        val = __raw_readl(reg);
 
        if (debounce) {