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 cc26677..316d930 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 c7e3a56..7a3f067 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 dbe0cf3..f212d23 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) {