diff options
author | Mike Chan <mike@android.com> | 2010-03-22 15:51:54 -0700 |
---|---|---|
committer | Mike Chan <mike@android.com> | 2010-03-22 16:14:15 -0700 |
commit | 7fa87888548dad5e9c1fafe14e858727f7047c99 (patch) | |
tree | d7d5d21db82db1d40b088474fa489e9d78f7f148 | |
parent | 64ba05d41d956fde9456b7e5f384e21a43740d9e (diff) | |
download | omap-omapzoom-archive/android-omap-2.6.29-eclair.tar.gz |
omap: pm: HACK: Disable watchdog in pm34xx idlearchive/android-omap-2.6.29-eclairandroid-omap-2.6.29-eclair
Change-Id: I43872723c6073eeecffb1edc897489f766cd636e
Signed-off-by: Mike Chan <mike@android.com>
-rw-r--r-- | arch/arm/mach-omap2/pm34xx.c | 13 | ||||
-rw-r--r-- | drivers/watchdog/omap_wdt.c | 12 |
2 files changed, 18 insertions, 7 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 7cf6c7e62138..731bf0c6081b 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c @@ -74,6 +74,8 @@ struct power_state { struct list_head node; }; +static suspend_state_t suspend_state; + static LIST_HEAD(pwrst_list); static void (*_omap_sram_idle)(u32 *addr, int save_state); @@ -320,6 +322,9 @@ static void restore_table_entry(void) restore_control_register(control_reg_value); } +extern int omap_wdt_suspend(void); +extern int omap_wdt_resume(void); + void omap_sram_idle(void) { /* Variable to tell what needs to be saved and restored @@ -339,6 +344,10 @@ void omap_sram_idle(void) if (!_omap_sram_idle) return; + /* Disable watchdog when going into suspend */ + if (regset_save_on_suspend) + omap_wdt_suspend(); + pwrdm_clear_all_prev_pwrst(mpu_pwrdm); pwrdm_clear_all_prev_pwrst(neon_pwrdm); pwrdm_clear_all_prev_pwrst(core_pwrdm); @@ -480,6 +489,9 @@ void omap_sram_idle(void) pwrdm_post_transition(); + if (regset_save_on_suspend) + omap_wdt_resume(); + omap2_clkdm_allow_idle(mpu_pwrdm->pwrdm_clkdms[0]); } @@ -559,7 +571,6 @@ out: #ifdef CONFIG_SUSPEND static void (*saved_idle)(void); -static suspend_state_t suspend_state; static void omap2_pm_wakeup_on_timer(u32 seconds) { diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c index 48aab6278e64..b994df6ebefa 100644 --- a/drivers/watchdog/omap_wdt.c +++ b/drivers/watchdog/omap_wdt.c @@ -519,9 +519,9 @@ static int omap_wdt_remove(struct platform_device *pdev) * may not play well enough with NOWAYOUT... */ -static int omap_wdt_suspend(struct platform_device *pdev, pm_message_t state) +int omap_wdt_suspend(void) { - struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); + struct omap_wdt_dev *wdev = platform_get_drvdata(omap_wdt_dev); if (wdev->omap_wdt_users) { wdev->jiffies_exp -= jiffies - wdev->jiffies_start; @@ -532,9 +532,9 @@ static int omap_wdt_suspend(struct platform_device *pdev, pm_message_t state) return 0; } -static int omap_wdt_resume(struct platform_device *pdev) +int omap_wdt_resume(void) { - struct omap_wdt_dev *wdev = platform_get_drvdata(pdev); + struct omap_wdt_dev *wdev = platform_get_drvdata(omap_wdt_dev); if (wdev->omap_wdt_users) { mod_timer(&wdev->autopet_timer, jiffies + wdev->jiffies_exp); @@ -553,8 +553,8 @@ static struct platform_driver omap_wdt_driver = { .probe = omap_wdt_probe, .remove = omap_wdt_remove, .shutdown = omap_wdt_shutdown, - .suspend = omap_wdt_suspend, - .resume = omap_wdt_resume, +// .suspend = omap_wdt_suspend, +// .resume = omap_wdt_resume, .driver = { .owner = THIS_MODULE, .name = "omap_wdt", |