summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/tegra3_save.S
diff options
context:
space:
mode:
authorLuke Huang <lhuang@nvidia.com>2011-02-25 17:33:07 -0800
committerDan Willemsen <dwillemsen@nvidia.com>2011-04-26 15:52:20 -0700
commit14c60944fbb8f45c335f45e04a3ba2e62f5af08f (patch)
tree4c7c168fb8f37f6b62523ee4f0656a34f8ea6bb7 /arch/arm/mach-tegra/tegra3_save.S
parenta537d31ca1911dcd4005723f6755c906087d9de7 (diff)
arm: tegra: fix system hang on lp0 suspend
Switch the clock source for mselect to be CLK_M before shutting down PllP. Original-Change-Id: I9425b9b47c0788420ddd116cfc77d416ce418118 Reviewed-on: http://git-master/r/21008 Tested-by: Chih-Lung Huang <lhuang@nvidia.com> Reviewed-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com> Change-Id: I339c5e1ced5bb2e1986c7baaa818d18cbea65226
Diffstat (limited to 'arch/arm/mach-tegra/tegra3_save.S')
-rw-r--r--arch/arm/mach-tegra/tegra3_save.S7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/tegra3_save.S b/arch/arm/mach-tegra/tegra3_save.S
index bf72b85a5a71..9a35aac9c6ad 100644
--- a/arch/arm/mach-tegra/tegra3_save.S
+++ b/arch/arm/mach-tegra/tegra3_save.S
@@ -71,6 +71,8 @@
#define CLK_RESET_PLLP_MISC 0xac
#define CLK_RESET_PLLX_MISC 0xe4
+#define CLK_RESET_CLK_SOURCE_MSELECT 0x3b4
+#define MSELECT_CLKM (0x3 << 30)
#include "power-macros.S"
@@ -358,6 +360,11 @@ __tear_down_master_pll_cpu:
str r0, [r5, #CLK_RESET_CCLK_DIVIDER]
str r0, [r5, #CLK_RESET_SCLK_DIVIDER]
+ /* switch the clock source for mselect to be CLK_M */
+ ldr r0, [r5, #CLK_RESET_CLK_SOURCE_MSELECT]
+ orr r0, r0, #MSELECT_CLKM
+ str r0, [r5, #CLK_RESET_CLK_SOURCE_MSELECT]
+
/* 2 us delay between changing sclk and disabling PLLs */
wait_for_us r1, r7, r9
add r1, r1, #2