summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/drivers/base/power/main.c
diff options
context:
space:
mode:
authorKevin2014-11-15 10:00:36 +0800
committerKevin2014-11-15 10:00:36 +0800
commit9d40ac5867b9aefe0722bc1f110b965ff294d30d (patch)
treede942df665fac4bac0d9cb7ae86910fe937b0c1a /ANDROID_3.4.5/drivers/base/power/main.c
parent392e8802486cb573b916e746010e141a75f507e6 (diff)
downloadFOSSEE-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.c26
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);