> -----Original Message----- > From: linux-omap-owner@xxxxxxxxxxxxxxx > [mailto:linux-omap-owner@xxxxxxxxxxxxxxx] On Behalf Of > DebBarma, Tarun Kanti > Sent: Tuesday, May 24, 2011 7:55 PM > To: linux-omap@xxxxxxxxxxxxxxx > Cc: Hilman, Kevin; Shilimkar, Santosh; tony@xxxxxxxxxxx; > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; DebBarma, Tarun Kanti; > Varadarajan, Charulatha > Subject: [PATCH 11/15] OMAP: GPIO: Remove hardcoded offsets > in ctxt save/restore > > 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.kanti@xxxxxx> > Signed-off-by: Charulatha V <charu@xxxxxx> > --- > arch/arm/mach-omap2/gpio.c | 2 + > arch/arm/plat-omap/include/plat/gpio.h | 1 + > drivers/gpio/gpio_omap.c | 123 > ++++++++++---------------------- > 3 files changed, 40 insertions(+), 86 deletions(-) > > diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c > index 0f8782f..5c888dd 100644 [snip]...[snip] > diff --git a/drivers/gpio/gpio_omap.c b/drivers/gpio/gpio_omap.c > index 28390a9..05c2857 100644 > --- a/drivers/gpio/gpio_omap.c > +++ b/drivers/gpio/gpio_omap.c > @@ -1395,96 +1395,47 @@ restore_gpio_ctx: > > void omap_gpio_save_context(struct gpio_bank *bank) > { [sp] The [PATCH 06/15] OMAP4: GPIO: Save/restore context seems to be doing exactly opposite: It introduces the checks for [quote] + if (bank->method == METHOD_GPIO_24XX) { ... ... + } else if (bank->method == METHOD_GPIO_44XX) { [/quote] and this patch removes the same checks. Am I missing something? ~sanjeev > - if (bank->method == METHOD_GPIO_24XX) { > - bank->context.irqenable1 = __raw_readl( > - bank->base + > OMAP24XX_GPIO_IRQENABLE1); > - bank->context.irqenable2 = __raw_readl( > - bank->base + > OMAP24XX_GPIO_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); > - bank->context.leveldetect0 = __raw_readl(bank->base + > - OMAP24XX_GPIO_LEVELDETECT0); > - bank->context.leveldetect1 = __raw_readl(bank->base + > - OMAP24XX_GPIO_LEVELDETECT1); > - bank->context.risingdetect = __raw_readl(bank->base + > - OMAP24XX_GPIO_RISINGDETECT); > - bank->context.fallingdetect = __raw_readl(bank->base + > - OMAP24XX_GPIO_FALLINGDETECT); > - bank->context.dataout = __raw_readl( > - bank->base + > OMAP24XX_GPIO_DATAOUT); > - } else if (bank->method == METHOD_GPIO_44XX) { > - bank->context.irqenable1 = __raw_readl( > - bank->base + > OMAP4_GPIO_IRQSTATUSSET0); > - bank->context.irqenable2 = __raw_readl( > - bank->base + > OMAP4_GPIO_IRQSTATUSSET1); > - bank->context.wake_en = __raw_readl( > - bank->base + > OMAP4_GPIO_IRQWAKEN0); > - bank->context.ctrl = __raw_readl( > - bank->base + OMAP4_GPIO_CTRL); > - bank->context.oe = __raw_readl( > - bank->base + OMAP24XX_GPIO_OE); > - bank->context.leveldetect0 = __raw_readl(bank->base + > - OMAP4_GPIO_LEVELDETECT0); > - bank->context.leveldetect1 = __raw_readl(bank->base + > - OMAP4_GPIO_LEVELDETECT1); > - bank->context.risingdetect = __raw_readl(bank->base + > - OMAP4_GPIO_RISINGDETECT); > - bank->context.fallingdetect = __raw_readl(bank->base + > - OMAP4_GPIO_FALLINGDETECT); > - bank->context.dataout = __raw_readl( > - bank->base + > OMAP4_GPIO_DATAOUT); > - } > + bank->context.irqenable1 = > + __raw_readl(bank->base + bank->regs->irqenable); > + bank->context.irqenable2 = > + __raw_readl(bank->base + > bank->regs->irqenable2); > + bank->context.wake_en = > + __raw_readl(bank->base + > bank->regs->wkupstatus); > + 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 + > bank->regs->leveldetect0); > + bank->context.leveldetect1 = > + __raw_readl(bank->base + > bank->regs->leveldetect1); > + bank->context.risingdetect = > + __raw_readl(bank->base + > bank->regs->risingdetect); > + bank->context.fallingdetect = > + __raw_readl(bank->base + > bank->regs->fallingdetect); > + bank->context.dataout = __raw_readl(bank->base + > bank->regs->dataout); > } > > void omap_gpio_restore_context(struct gpio_bank *bank) > { > - if (bank->method == METHOD_GPIO_24XX) { > - __raw_writel(bank->context.irqenable1, bank->base + > - > OMAP24XX_GPIO_IRQENABLE1); > - __raw_writel(bank->context.irqenable2, bank->base + > - > OMAP24XX_GPIO_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); > - __raw_writel(bank->context.leveldetect0, bank->base + > - > OMAP24XX_GPIO_LEVELDETECT0); > - __raw_writel(bank->context.leveldetect1, bank->base + > - > OMAP24XX_GPIO_LEVELDETECT1); > - __raw_writel(bank->context.risingdetect, bank->base + > - > OMAP24XX_GPIO_RISINGDETECT); > - __raw_writel(bank->context.fallingdetect, bank->base + > - > OMAP24XX_GPIO_FALLINGDETECT); > - __raw_writel(bank->context.dataout, bank->base + > - OMAP24XX_GPIO_DATAOUT); > - } else if (bank->method == METHOD_GPIO_44XX) { > - __raw_writel(bank->context.irqenable1, bank->base + > - > OMAP4_GPIO_IRQSTATUSSET0); > - __raw_writel(bank->context.irqenable2, bank->base + > - > OMAP4_GPIO_IRQSTATUSSET1); > - __raw_writel(bank->context.wake_en, bank->base + > - OMAP4_GPIO_IRQWAKEN0); > - __raw_writel(bank->context.ctrl, bank->base + > - OMAP4_GPIO_CTRL); > - __raw_writel(bank->context.oe, bank->base + > - OMAP24XX_GPIO_OE); > - __raw_writel(bank->context.leveldetect0, bank->base + > - > OMAP4_GPIO_LEVELDETECT0); > - __raw_writel(bank->context.leveldetect1, bank->base + > - > OMAP4_GPIO_LEVELDETECT1); > - __raw_writel(bank->context.risingdetect, bank->base + > - > OMAP4_GPIO_RISINGDETECT); > - __raw_writel(bank->context.fallingdetect, bank->base + > - > OMAP4_GPIO_FALLINGDETECT); > - __raw_writel(bank->context.dataout, bank->base + > - OMAP4_GPIO_DATAOUT); > - } > + __raw_writel(bank->context.irqenable1, > + bank->base + bank->regs->irqenable); > + __raw_writel(bank->context.irqenable2, > + bank->base + bank->regs->irqenable2); > + __raw_writel(bank->context.wake_en, > + bank->base + bank->regs->wkupstatus); > + __raw_writel(bank->context.ctrl, > + bank->base + bank->regs->ctrl); > + __raw_writel(bank->context.oe, > + bank->base + bank->regs->direction); > + __raw_writel(bank->context.leveldetect0, > + bank->base + bank->regs->leveldetect0); > + __raw_writel(bank->context.leveldetect1, > + bank->base + bank->regs->leveldetect1); > + __raw_writel(bank->context.risingdetect, > + bank->base + bank->regs->risingdetect); > + __raw_writel(bank->context.fallingdetect, > + bank->base + bank->regs->fallingdetect); > + __raw_writel(bank->context.dataout, > + bank->base + bank->regs->dataout); > } > > #endif > -- > 1.6.0.4 > > -- > To unsubscribe from this list: send the line "unsubscribe > linux-omap" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html