aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarun Kanti DebBarma <tarun.kanti@ti.com>2012-04-27 10:13:37 -0400
committerKevin Hilman <khilman@ti.com>2012-05-11 20:08:40 -0400
commit4e962e8998cc6cb5e58beae5feb6a65cb1a27f26 (patch)
tree391e73578b298613625b09d9691a62e31481e3b0
parent9c4ed9e6c01e7a8bd9079da8267e1f03cb4761fc (diff)
gpio/omap: remove cpu_is_omapxxxx() checks from *_runtime_resume()
Add register offsets for GPIO_IRQSTATUS_RAW_0, GPIO_IRQSTATUS_RAW_0 which are present on OMAP4+ processors. Now we can distinguish conditions applicable to OMAP4,5 and those specific to OMAP24xx and OMAP3xxx. Cc: Kevin Hilman <khilman@ti.com> Cc: Tony Lindgren <tony@atomide.com> Cc: Santosh Shilimkar <santosh.shilimkar@ti.com> Cc: Cousson, Benoit <b-cousson@ti.com> Cc: Grant Likely <grant.likely@secretlab.ca> Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@ti.com> Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Tested-by: Govindraj.R <govindraj.raja@ti.com> Signed-off-by: Kevin Hilman <khilman@ti.com>
-rw-r--r--arch/arm/mach-omap2/gpio.c2
-rw-r--r--arch/arm/plat-omap/include/plat/gpio.h2
-rw-r--r--drivers/gpio/gpio-omap.c4
3 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c
index 86f91a6ed4e4..a144e22969a3 100644
--- a/arch/arm/mach-omap2/gpio.c
+++ b/arch/arm/mach-omap2/gpio.c
@@ -101,6 +101,8 @@ static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
101 pdata->regs->dataout = OMAP4_GPIO_DATAOUT; 101 pdata->regs->dataout = OMAP4_GPIO_DATAOUT;
102 pdata->regs->set_dataout = OMAP4_GPIO_SETDATAOUT; 102 pdata->regs->set_dataout = OMAP4_GPIO_SETDATAOUT;
103 pdata->regs->clr_dataout = OMAP4_GPIO_CLEARDATAOUT; 103 pdata->regs->clr_dataout = OMAP4_GPIO_CLEARDATAOUT;
104 pdata->regs->irqstatus_raw0 = OMAP4_GPIO_IRQSTATUSRAW0;
105 pdata->regs->irqstatus_raw1 = OMAP4_GPIO_IRQSTATUSRAW1;
104 pdata->regs->irqstatus = OMAP4_GPIO_IRQSTATUS0; 106 pdata->regs->irqstatus = OMAP4_GPIO_IRQSTATUS0;
105 pdata->regs->irqstatus2 = OMAP4_GPIO_IRQSTATUS1; 107 pdata->regs->irqstatus2 = OMAP4_GPIO_IRQSTATUS1;
106 pdata->regs->irqenable = OMAP4_GPIO_IRQSTATUSSET0; 108 pdata->regs->irqenable = OMAP4_GPIO_IRQSTATUSSET0;
diff --git a/arch/arm/plat-omap/include/plat/gpio.h b/arch/arm/plat-omap/include/plat/gpio.h
index d903e7df3fb1..50fb7cc000ea 100644
--- a/arch/arm/plat-omap/include/plat/gpio.h
+++ b/arch/arm/plat-omap/include/plat/gpio.h
@@ -172,6 +172,8 @@ struct omap_gpio_reg_offs {
172 u16 clr_dataout; 172 u16 clr_dataout;
173 u16 irqstatus; 173 u16 irqstatus;
174 u16 irqstatus2; 174 u16 irqstatus2;
175 u16 irqstatus_raw0;
176 u16 irqstatus_raw1;
175 u16 irqenable; 177 u16 irqenable;
176 u16 irqenable2; 178 u16 irqenable2;
177 u16 set_irqenable; 179 u16 set_irqenable;
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index c89c38869c0c..2c70617e6b45 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -1286,14 +1286,14 @@ static int omap_gpio_runtime_resume(struct device *dev)
1286 old0 = __raw_readl(bank->base + bank->regs->leveldetect0); 1286 old0 = __raw_readl(bank->base + bank->regs->leveldetect0);
1287 old1 = __raw_readl(bank->base + bank->regs->leveldetect1); 1287 old1 = __raw_readl(bank->base + bank->regs->leveldetect1);
1288 1288
1289 if (cpu_is_omap24xx() || cpu_is_omap34xx()) { 1289 if (!bank->regs->irqstatus_raw0) {
1290 __raw_writel(old0 | gen, bank->base + 1290 __raw_writel(old0 | gen, bank->base +
1291 bank->regs->leveldetect0); 1291 bank->regs->leveldetect0);
1292 __raw_writel(old1 | gen, bank->base + 1292 __raw_writel(old1 | gen, bank->base +
1293 bank->regs->leveldetect1); 1293 bank->regs->leveldetect1);
1294 } 1294 }
1295 1295
1296 if (cpu_is_omap44xx()) { 1296 if (bank->regs->irqstatus_raw0) {
1297 __raw_writel(old0 | l, bank->base + 1297 __raw_writel(old0 | l, bank->base +
1298 bank->regs->leveldetect0); 1298 bank->regs->leveldetect0);
1299 __raw_writel(old1 | l, bank->base + 1299 __raw_writel(old1 | l, bank->base +