summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/baseband-xmm-power.c
diff options
context:
space:
mode:
authorVinayak Pane <vpane@nvidia.com>2012-04-27 15:01:05 -0700
committerSimone Willett <swillett@nvidia.com>2012-05-21 11:41:37 -0700
commit9874f9572f416e190befce95e0c53df4e0a62645 (patch)
tree089601671745f5a5155f0b901e92d46f4dc04532 /arch/arm/mach-tegra/baseband-xmm-power.c
parent611caa58525e80f46eaf6990b68a7aa82f4f3dfa (diff)
arm: tegra: xmm: simultaneous L3 to L0 wakeup
In AP initiated L3->L0 wakeup xmm power state is set BBXMM_PS_L3TOL0 but if CP is also trying to wakeup then ipc_ap_wake_irq with falling edge treats it incorrectly as CP wakeup pending - new race condition. Adding a check to fix this scenario for both L3 and L3TOL0 states. Bug 966077 Change-Id: I3af3538b48745588f17e4c13a3e23e4033f21821 Signed-off-by: Vinayak Pane <vpane@nvidia.com> Reviewed-on: http://git-master/r/102698 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Steve Lin <stlin@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/baseband-xmm-power.c')
-rw-r--r--arch/arm/mach-tegra/baseband-xmm-power.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/baseband-xmm-power.c b/arch/arm/mach-tegra/baseband-xmm-power.c
index 32d46d414cb5..75ad8d28d475 100644
--- a/arch/arm/mach-tegra/baseband-xmm-power.c
+++ b/arch/arm/mach-tegra/baseband-xmm-power.c
@@ -516,7 +516,8 @@ irqreturn_t xmm_power_ipc_ap_wake_irq(int irq, void *dev_id)
pr_info("Set wakeup_pending = 1 in system_"
" suspending!!!\n");
} else {
- if (baseband_xmm_powerstate == BBXMM_PS_L3) {
+ if ((baseband_xmm_powerstate == BBXMM_PS_L3) ||
+ (baseband_xmm_powerstate == BBXMM_PS_L3TOL0)) {
spin_unlock(&xmm_lock);
pr_info(" CP L3 -> L0\n");
} else if (baseband_xmm_powerstate == BBXMM_PS_L2) {