diff options
author | Maulik Shah <mkshah@codeaurora.org> | 2016-02-17 13:53:37 +0530 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:20:38 -0700 |
commit | 649bc1242cc2c9bbc71c147b40b51b2c25e97b75 (patch) | |
tree | 010cb99f10f1132ec0096b5ad41fee4434b3653a /drivers/cpuidle | |
parent | 72f0f4b937bd8a4ae15a6dd3b8a7a92b39ec6567 (diff) |
cpuidle: lpm-levels: Log cpu enter & exit events into lpm debug
Add cpu enter and cpu exit log into lpm debug for 32bit.
Change-Id: I88973dbc4f9ffc08f8201059a82a3133fa0db330
Signed-off-by: Maulik Shah <mkshah@codeaurora.org>
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r-- | drivers/cpuidle/lpm-levels.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/drivers/cpuidle/lpm-levels.c b/drivers/cpuidle/lpm-levels.c index edd4ba9bc1b4..3e8dd9ed67e1 100644 --- a/drivers/cpuidle/lpm-levels.c +++ b/drivers/cpuidle/lpm-levels.c @@ -808,20 +808,31 @@ bool psci_enter_sleep(struct lpm_cluster *cluster, int idx, bool from_idle) #elif defined(CONFIG_ARM_PSCI) bool psci_enter_sleep(struct lpm_cluster *cluster, int idx, bool from_idle) { - int affinity_level = 0; - int state_id = get_cluster_id(cluster, &affinity_level); - int power_state = PSCI_POWER_STATE(cluster->cpu->levels[idx].is_reset); - - affinity_level = PSCI_AFFINITY_LEVEL(affinity_level); if (!idx) { + stop_critical_timings(); wfi(); + start_critical_timings(); return 1; - } + } else { + int affinity_level = 0; + int state_id = get_cluster_id(cluster, &affinity_level); + int power_state = + PSCI_POWER_STATE(cluster->cpu->levels[idx].is_reset); + bool success = false; - state_id |= (power_state | affinity_level - | cluster->cpu->levels[idx].psci_id); + affinity_level = PSCI_AFFINITY_LEVEL(affinity_level); + state_id |= (power_state | affinity_level + | cluster->cpu->levels[idx].psci_id); - return !cpu_suspend(state_id); + update_debug_pc_event(CPU_ENTER, state_id, + 0xdeaffeed, 0xdeaffeed, true); + stop_critical_timings(); + success = !cpu_suspend(state_id); + start_critical_timings(); + update_debug_pc_event(CPU_EXIT, state_id, + success, 0xdeaffeed, true); + return success; + } } #else bool psci_enter_sleep(struct lpm_cluster *cluster, int idx, bool from_idle) |