diff options
author | Kevin | 2014-11-15 10:00:36 +0800 |
---|---|---|
committer | Kevin | 2014-11-15 10:00:36 +0800 |
commit | 9d40ac5867b9aefe0722bc1f110b965ff294d30d (patch) | |
tree | de942df665fac4bac0d9cb7ae86910fe937b0c1a /ANDROID_3.4.5/drivers/base/power/main.c | |
parent | 392e8802486cb573b916e746010e141a75f507e6 (diff) | |
download | FOSSEE-netbook-kernel-source-9d40ac5867b9aefe0722bc1f110b965ff294d30d.tar.gz FOSSEE-netbook-kernel-source-9d40ac5867b9aefe0722bc1f110b965ff294d30d.tar.bz2 FOSSEE-netbook-kernel-source-9d40ac5867b9aefe0722bc1f110b965ff294d30d.zip |
add via modify part source code for wm8880 4.4 kitkat
Diffstat (limited to 'ANDROID_3.4.5/drivers/base/power/main.c')
-rw-r--r-- | ANDROID_3.4.5/drivers/base/power/main.c | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/ANDROID_3.4.5/drivers/base/power/main.c b/ANDROID_3.4.5/drivers/base/power/main.c index ab7f180b..e153e03b 100644 --- a/ANDROID_3.4.5/drivers/base/power/main.c +++ b/ANDROID_3.4.5/drivers/base/power/main.c @@ -32,6 +32,7 @@ #include "../base.h" #include "power.h" +#include <mach/wmt_secure.h> typedef int (*pm_callback_t)(struct device *); @@ -62,6 +63,9 @@ struct dpm_watchdog { }; static int async_error; +extern unsigned int cpu_trustzone_enabled; +extern int console_printk[]; +#define console_loglevel (console_printk[0]) /** * device_pm_init - Initialize the PM-related part of a device object. @@ -729,7 +733,8 @@ void dpm_resume(pm_message_t state) { struct device *dev; ktime_t starttime = ktime_get(); - + int tmp; + might_sleep(); mutex_lock(&dpm_list_mtx); @@ -743,7 +748,9 @@ void dpm_resume(pm_message_t state) async_schedule(async_resume, dev); } } - + + tmp = console_loglevel; + console_loglevel = 7; while (!list_empty(&dpm_suspended_list)) { dev = to_device(dpm_suspended_list.next); get_device(dev); @@ -766,6 +773,7 @@ void dpm_resume(pm_message_t state) list_move_tail(&dev->power.entry, &dpm_prepared_list); put_device(dev); } + console_loglevel = tmp; mutex_unlock(&dpm_list_mtx); async_synchronize_full(); dpm_show_time(starttime, state, NULL); @@ -851,6 +859,10 @@ void dpm_complete(pm_message_t state) */ void dpm_resume_end(pm_message_t state) { + if (cpu_trustzone_enabled == 1) { + wmt_smc(WMT_SMC_CMD_DEVICE_RESUME, 0x1001); + } + dpm_resume(state); dpm_complete(state); } @@ -1219,12 +1231,16 @@ int dpm_suspend(pm_message_t state) { ktime_t starttime = ktime_get(); int error = 0; - + int tmp; + might_sleep(); mutex_lock(&dpm_list_mtx); pm_transition = state; async_error = 0; + + tmp = console_loglevel; + console_loglevel = 7; while (!list_empty(&dpm_prepared_list)) { struct device *dev = to_device(dpm_prepared_list.prev); @@ -1246,6 +1262,7 @@ int dpm_suspend(pm_message_t state) if (async_error) break; } + console_loglevel = tmp; mutex_unlock(&dpm_list_mtx); async_synchronize_full(); if (!error) @@ -1365,6 +1382,9 @@ int dpm_suspend_start(pm_message_t state) dpm_save_failed_step(SUSPEND_PREPARE); } else error = dpm_suspend(state); + if (cpu_trustzone_enabled == 1) { + wmt_smc(WMT_SMC_CMD_DEVICE_SUSPEND, 0x1001); + } return error; } EXPORT_SYMBOL_GPL(dpm_suspend_start); |