From 193a36f0962127f3c6b732cfcd414a6a8fd83f3e Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=84=E6=B6=9B?= Date: Thu, 31 May 2012 09:28:26 +0800 Subject: [PATCH] rk: earlysuspend: only works on system is running --- kernel/power/earlysuspend.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kernel/power/earlysuspend.c b/kernel/power/earlysuspend.c index ba5e9763a8a3..11d476062245 100644 --- a/kernel/power/earlysuspend.c +++ b/kernel/power/earlysuspend.c @@ -77,6 +77,11 @@ static void early_suspend(struct work_struct *work) unsigned long irqflags; int abort = 0; +#ifdef CONFIG_PLAT_RK + if (system_state != SYSTEM_RUNNING) + return; +#endif + mutex_lock(&early_suspend_lock); spin_lock_irqsave(&state_lock, irqflags); if (state == SUSPEND_REQUESTED) @@ -124,6 +129,11 @@ static void late_resume(struct work_struct *work) unsigned long irqflags; int abort = 0; +#ifdef CONFIG_PLAT_RK + if (system_state != SYSTEM_RUNNING) + return; +#endif + mutex_lock(&early_suspend_lock); spin_lock_irqsave(&state_lock, irqflags); if (state == SUSPENDED) @@ -158,6 +168,11 @@ void request_suspend_state(suspend_state_t new_state) unsigned long irqflags; int old_sleep; +#ifdef CONFIG_PLAT_RK + if (system_state != SYSTEM_RUNNING) + return; +#endif + spin_lock_irqsave(&state_lock, irqflags); old_sleep = state & SUSPEND_REQUESTED; if (debug_mask & DEBUG_USER_STATE) { -- 2.34.1