Sanjeev, On Thu, May 26, 2011 at 15:12, Premi, Sanjeev <premi@xxxxxx> wrote: >> -----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? Patch 6 introduces the save/restore context code for OMAP4 and this patch tries to replace all the macro usage with the reg offset values which is nothing but cleanup. Based on your comments and Kevin's I understand that I should make cleanups first and then any fixes/functionality changes to avoid confusions. Will do that and send a revised series next week. -V Charulatha > > ~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