summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/pm.c
diff options
context:
space:
mode:
authorJay Cheng <jacheng@nvidia.com>2011-08-16 14:57:59 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:47:21 -0800
commit8ffe7f45623875526685d9d4ef5096dcee7a5e38 (patch)
tree6159049071fdeb9ab8da6594a6794c6dcc280c92 /arch/arm/mach-tegra/pm.c
parent7ad31c1a0bb4dd45a97077a1519ff849db81d45c (diff)
tegra: power: correct LP0 sequence
Change-Id: I5f548f11059039cbd830be483ecfa0c6671002e7 Reviewed-on: http://git-master/r/47365 Tested-by: Cho-Che Cheng <jacheng@nvidia.com> Reviewed-by: Daniel Willemsen <dwillemsen@nvidia.com> Rebase-Id: Rd7ef967c8b40295a04a0447eb8bbc8e2d577a48e
Diffstat (limited to 'arch/arm/mach-tegra/pm.c')
-rw-r--r--arch/arm/mach-tegra/pm.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm/mach-tegra/pm.c b/arch/arm/mach-tegra/pm.c
index 4456a9cd8ead..50e3d9b7af0e 100644
--- a/arch/arm/mach-tegra/pm.c
+++ b/arch/arm/mach-tegra/pm.c
@@ -637,7 +637,7 @@ static void tegra_suspend_wake(void)
static void tegra_pm_set(enum tegra_suspend_mode mode)
{
- u32 reg;
+ u32 reg, boot_flag;
unsigned long rate = 32768;
reg = readl(pmc + PMC_CTRL);
@@ -654,17 +654,19 @@ static void tegra_pm_set(enum tegra_suspend_mode mode)
*/
writel(0x0, pmc + PMC_SCRATCH39);
__raw_writel(virt_to_phys(tegra_resume), pmc + PMC_SCRATCH41);
- reg |= TEGRA_POWER_EFFECT_LP0;
+ wmb();
/* Enable DPD sample to trigger sampling pads data and direction
* in which pad will be driven during lp0 mode*/
writel(0x1, pmc + PMC_DPD_SAMPLE);
/* Set warmboot flag */
- reg = readl(pmc + PMC_SCRATCH0);
- pmc_32kwritel(reg | 1, PMC_SCRATCH0);
+ boot_flag = readl(pmc + PMC_SCRATCH0);
+ pmc_32kwritel(boot_flag | 1, PMC_SCRATCH0);
pmc_32kwritel(tegra_lp0_vec_start, PMC_SCRATCH1);
+
+ reg |= TEGRA_POWER_EFFECT_LP0;
break;
case TEGRA_SUSPEND_LP1:
break;