It is not required to use hard-coded offsets any more in context save and
restore functions and instead use the generic offsets which have been correctly
initialized during device registration.
Signed-off-by: Tarun Kanti DebBarma tarun.ka...@ti.com
Signed-off-by: Charulatha V ch...@ti.com
Reviewed-by: Santosh Shilimkar santosh.shilim...@ti.com
---
arch/arm/mach-omap2/gpio.c |2 +
arch/arm/plat-omap/include/plat/gpio.h |1 +
drivers/gpio/gpio-omap.c | 41 ++-
3 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c
index 06fa913..5ce695c 100644
--- a/arch/arm/mach-omap2/gpio.c
+++ b/arch/arm/mach-omap2/gpio.c
@@ -94,6 +94,7 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void
*unused)
pdata-regs-irqstatus = OMAP24XX_GPIO_IRQSTATUS1;
pdata-regs-irqstatus2 = OMAP24XX_GPIO_IRQSTATUS2;
pdata-regs-irqenable = OMAP24XX_GPIO_IRQENABLE1;
+ pdata-regs-irqenable2 = OMAP24XX_GPIO_IRQENABLE2;
pdata-regs-set_irqenable = OMAP24XX_GPIO_SETIRQENABLE1;
pdata-regs-clr_irqenable = OMAP24XX_GPIO_CLEARIRQENABLE1;
pdata-regs-debounce = OMAP24XX_GPIO_DEBOUNCE_VAL;
@@ -116,6 +117,7 @@ static int omap2_gpio_dev_init(struct omap_hwmod *oh, void
*unused)
pdata-regs-irqstatus = OMAP4_GPIO_IRQSTATUS0;
pdata-regs-irqstatus2 = OMAP4_GPIO_IRQSTATUS1;
pdata-regs-irqenable = OMAP4_GPIO_IRQSTATUSSET0;
+ pdata-regs-irqenable2 = OMAP4_GPIO_IRQSTATUSSET1;
pdata-regs-set_irqenable = OMAP4_GPIO_IRQSTATUSSET0;
pdata-regs-clr_irqenable = OMAP4_GPIO_IRQSTATUSCLR0;
pdata-regs-debounce = OMAP4_GPIO_DEBOUNCINGTIME;
diff --git a/arch/arm/plat-omap/include/plat/gpio.h
b/arch/arm/plat-omap/include/plat/gpio.h
index 9590532..61865b4 100644
--- a/arch/arm/plat-omap/include/plat/gpio.h
+++ b/arch/arm/plat-omap/include/plat/gpio.h
@@ -184,6 +184,7 @@ struct omap_gpio_reg_offs {
u16 irqstatus;
u16 irqstatus2;
u16 irqenable;
+ u16 irqenable2;
u16 set_irqenable;
u16 clr_irqenable;
u16 debounce;
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index d9bf7ac..9715cf2 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -1371,45 +1371,42 @@ void omap2_gpio_resume_after_idle(void)
static void omap_gpio_save_context(struct gpio_bank *bank)
{
bank-context.irqenable1 =
- __raw_readl(bank-base + OMAP24XX_GPIO_IRQENABLE1);
+ __raw_readl(bank-base + bank-regs-irqenable);
bank-context.irqenable2 =
- __raw_readl(bank-base + OMAP24XX_GPIO_IRQENABLE2);
+ __raw_readl(bank-base + bank-regs-irqenable2);
bank-context.wake_en =
- __raw_readl(bank-base + OMAP24XX_GPIO_WAKE_EN);
- bank-context.ctrl = __raw_readl(bank-base + OMAP24XX_GPIO_CTRL);
- bank-context.oe = __raw_readl(bank-base + OMAP24XX_GPIO_OE);
+ __raw_readl(bank-base + bank-regs-wkup_en);
+ bank-context.ctrl = __raw_readl(bank-base + bank-regs-ctrl);
+ bank-context.oe = __raw_readl(bank-base + bank-regs-direction);
bank-context.leveldetect0 =
- __raw_readl(bank-base + OMAP24XX_GPIO_LEVELDETECT0);
+ __raw_readl(bank-base + bank-regs-leveldetect0);
bank-context.leveldetect1 =
- __raw_readl(bank-base + OMAP24XX_GPIO_LEVELDETECT1);
+ __raw_readl(bank-base + bank-regs-leveldetect1);
bank-context.risingdetect =
- __raw_readl(bank-base + OMAP24XX_GPIO_RISINGDETECT);
+ __raw_readl(bank-base + bank-regs-risingdetect);
bank-context.fallingdetect =
- __raw_readl(bank-base + OMAP24XX_GPIO_FALLINGDETECT);
- bank-context.dataout =
- __raw_readl(bank-base + OMAP24XX_GPIO_DATAOUT);
+ bank-context.dataout = __raw_readl(bank-base + bank-regs-dataout);
}
static void omap_gpio_restore_context(struct gpio_bank *bank)
{
__raw_writel(bank-context.irqenable1,
- bank-base + OMAP24XX_GPIO_IRQENABLE1);
+ bank-base + bank-regs-irqenable);
__raw_writel(bank-context.irqenable2,
- bank-base + OMAP24XX_GPIO_IRQENABLE2);
+ bank-base + bank-regs-irqenable2);
__raw_writel(bank-context.wake_en,
- bank-base + OMAP24XX_GPIO_WAKE_EN);
- __raw_writel(bank-context.ctrl, bank-base + OMAP24XX_GPIO_CTRL);
- __raw_writel(bank-context.oe, bank-base + OMAP24XX_GPIO_OE);
+ bank-base + bank-regs-wkup_en);
+ __raw_writel(bank-context.ctrl, bank-base + bank-regs-ctrl);
+