diff options
author | Jay Cheng <jacheng@nvidia.com> | 2011-08-16 14:57:59 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:47:21 -0800 |
commit | 8ffe7f45623875526685d9d4ef5096dcee7a5e38 (patch) | |
tree | 6159049071fdeb9ab8da6594a6794c6dcc280c92 /arch/arm/mach-tegra/pm.c | |
parent | 7ad31c1a0bb4dd45a97077a1519ff849db81d45c (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.c | 10 |
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; |