summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Chan <mike@android.com>2010-03-22 15:51:54 -0700
committerMike Chan <mike@android.com>2010-03-22 16:14:15 -0700
commit7fa87888548dad5e9c1fafe14e858727f7047c99 (patch)
treed7d5d21db82db1d40b088474fa489e9d78f7f148
parent64ba05d41d956fde9456b7e5f384e21a43740d9e (diff)
downloadomap-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.c13
-rw-r--r--drivers/watchdog/omap_wdt.c12
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",