summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/baseband-xmm-power.c
diff options
context:
space:
mode:
authorSeshendra Gadagottu <sgadagottu@nvidia.com>2012-02-09 22:16:30 +0530
committerSimone Willett <swillett@nvidia.com>2012-03-05 16:42:31 -0800
commitc3871ad8cefae294a7cb83507d5fa9f3e6041a57 (patch)
treef50329d1595e58eabbbd1638e36aadaf135371df /arch/arm/mach-tegra/baseband-xmm-power.c
parent03372d9c9372a68957cb321a9b68029176d74833 (diff)
arm: tegra: xmm power state handling
Avoid unwanted xmm power state changes. Added missing spin_unlock_irqrestore. Bug 935834 Bug 938553 Signed-off-by: Seshendra Gadagottu<sgadagottu@nvidia.com> Reviewed-on: http://git-master/r/82796 (cherry picked from commit 8af674aadfc1196851d5a2ecd1ecdd2cfe2d4148) Change-Id: Ic5b354376c0239773762d1b0f6e8848491e74e08 Reviewed-on: http://git-master/r/87503 Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Tested-by: Seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/baseband-xmm-power.c')
-rw-r--r--arch/arm/mach-tegra/baseband-xmm-power.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/baseband-xmm-power.c b/arch/arm/mach-tegra/baseband-xmm-power.c
index 17801fe9c778..1bdaf8046390 100644
--- a/arch/arm/mach-tegra/baseband-xmm-power.c
+++ b/arch/arm/mach-tegra/baseband-xmm-power.c
@@ -450,7 +450,15 @@ irqreturn_t baseband_xmm_power_ipc_ap_wake_irq(int irq, void *dev_id)
&autopm_resume_work);
}
}
- baseband_xmm_set_power_status(BBXMM_PS_L0);
+ if ((baseband_xmm_powerstate ==
+ BBXMM_PS_L2TOL0) ||
+ (baseband_xmm_powerstate ==
+ BBXMM_PS_L3TOL0))
+ baseband_xmm_set_power_status(
+ BBXMM_PS_L0);
+ else
+ pr_info("%s:no state"
+ "change required\n", __func__);
}
/* save gpio state */
ipc_ap_wake_state = IPC_AP_WAKE_H;
@@ -980,6 +988,7 @@ static int baseband_xmm_power_suspend_noirq(struct device *dev)
if (wakeup_pending) {
pr_info("%s:**Abort Suspend: reason CP WAKEUP**\n", __func__);
wakeup_pending = false;
+ spin_unlock_irqrestore(&xmm_lock, flags);
return -EBUSY;
}
spin_unlock_irqrestore(&xmm_lock, flags);