diff options
author | Charulatha V <charu@ti.com> | 2011-05-05 10:45:16 -0400 |
---|---|---|
committer | Tarun Kanti DebBarma <tarun.kanti@ti.com> | 2012-02-06 03:43:40 -0500 |
commit | 0cde8d03dd297fa8e7e88cedeb498d0ed5b7776d (patch) | |
tree | 542a4f06bc659180898d9e9d6bc3e540ddd088f1 /drivers/gpio/gpio-omap.c | |
parent | 03e128ca35e5da22e9e65ec8ab158ec0e905fdea (diff) |
gpio/omap: use flag to identify wakeup domain
In omap3, save/restore context is implemented for GPIO banks 2-6 as GPIO bank1
is in wakeup domain. Instead of identifying bank's power domain by bank id,
use 'loses_context' flag which is filled by pwrdm_can_ever_lose_context()
during dev_init.
For getting the powerdomain pointer, omap_hwmod_get_pwrdm() is used.
omap_device_get_pwrdm() could not be used as the pwrdm information needs to be
filled in pdata, whereas omap_device_get_pwrdm() could be used only after
omap_device_build() call.
Signed-off-by: Charulatha V <charu@ti.com>
Reviewed-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
Diffstat (limited to 'drivers/gpio/gpio-omap.c')
-rw-r--r-- | drivers/gpio/gpio-omap.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c index 6ea7390e7801..07efa15c3549 100644 --- a/drivers/gpio/gpio-omap.c +++ b/drivers/gpio/gpio-omap.c | |||
@@ -56,6 +56,7 @@ struct gpio_bank { | |||
56 | u32 dbck_enable_mask; | 56 | u32 dbck_enable_mask; |
57 | struct device *dev; | 57 | struct device *dev; |
58 | bool dbck_flag; | 58 | bool dbck_flag; |
59 | bool loses_context; | ||
59 | int stride; | 60 | int stride; |
60 | u32 width; | 61 | u32 width; |
61 | u16 id; | 62 | u16 id; |
@@ -1181,7 +1182,7 @@ static int __devinit omap_gpio_probe(struct platform_device *pdev) | |||
1181 | bank->dbck_flag = pdata->dbck_flag; | 1182 | bank->dbck_flag = pdata->dbck_flag; |
1182 | bank->stride = pdata->bank_stride; | 1183 | bank->stride = pdata->bank_stride; |
1183 | bank->width = pdata->bank_width; | 1184 | bank->width = pdata->bank_width; |
1184 | 1185 | bank->loses_context = pdata->loses_context; | |
1185 | bank->regs = pdata->regs; | 1186 | bank->regs = pdata->regs; |
1186 | 1187 | ||
1187 | if (bank->regs->set_dataout && bank->regs->clr_dataout) | 1188 | if (bank->regs->set_dataout && bank->regs->clr_dataout) |
@@ -1337,8 +1338,7 @@ void omap2_gpio_prepare_for_idle(int off_mode) | |||
1337 | u32 l1 = 0, l2 = 0; | 1338 | u32 l1 = 0, l2 = 0; |
1338 | int j; | 1339 | int j; |
1339 | 1340 | ||
1340 | /* TODO: Do not use cpu_is_omap34xx */ | 1341 | if (!bank->loses_context) |
1341 | if ((cpu_is_omap34xx()) && (bank->id == 0)) | ||
1342 | continue; | 1342 | continue; |
1343 | 1343 | ||
1344 | for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) | 1344 | for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) |
@@ -1405,8 +1405,7 @@ void omap2_gpio_resume_after_idle(void) | |||
1405 | u32 l = 0, gen, gen0, gen1; | 1405 | u32 l = 0, gen, gen0, gen1; |
1406 | int j; | 1406 | int j; |
1407 | 1407 | ||
1408 | /* TODO: Do not use cpu_is_omap34xx */ | 1408 | if (!bank->loses_context) |
1409 | if ((cpu_is_omap34xx()) && (bank->id == 0)) | ||
1410 | continue; | 1409 | continue; |
1411 | 1410 | ||
1412 | for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) | 1411 | for (j = 0; j < hweight_long(bank->dbck_enable_mask); j++) |
@@ -1505,7 +1504,7 @@ void omap_gpio_save_context(void) | |||
1505 | list_for_each_entry(bank, &omap_gpio_list, node) { | 1504 | list_for_each_entry(bank, &omap_gpio_list, node) { |
1506 | i++; | 1505 | i++; |
1507 | 1506 | ||
1508 | if (bank->id == 0) | 1507 | if (!bank->loses_context) |
1509 | continue; | 1508 | continue; |
1510 | 1509 | ||
1511 | gpio_context[i].irqenable1 = | 1510 | gpio_context[i].irqenable1 = |
@@ -1539,7 +1538,7 @@ void omap_gpio_restore_context(void) | |||
1539 | list_for_each_entry(bank, &omap_gpio_list, node) { | 1538 | list_for_each_entry(bank, &omap_gpio_list, node) { |
1540 | i++; | 1539 | i++; |
1541 | 1540 | ||
1542 | if (bank->id == 0) | 1541 | if (!bank->loses_context) |
1543 | continue; | 1542 | continue; |
1544 | 1543 | ||
1545 | __raw_writel(gpio_context[i].irqenable1, | 1544 | __raw_writel(gpio_context[i].irqenable1, |