diff options
author | Puneet Saxena <puneets@nvidia.com> | 2011-11-03 15:31:23 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:49:49 -0800 |
commit | b29689a4794086b37fc34461cbedcedbf952634f (patch) | |
tree | 7eabbfeed0772ac7d16e7ded37c6f4fd2ee659cf | |
parent | 2eea3f52c1dbf78fa97e0f135558546126aae584 (diff) |
ARM: tegra: power: Correct PL310 virt addr calculation
PL310 virtual address was calculated using PPSB virtual/phy address.
It should be done using CPU virtual/phy address. This causes
TEGRA_PL310_VIRT value to get overlapped with virtual kerenl memory map's
Vmalloc region on whistler.
Bug 881831
Bug 867094
Change-Id: Ifaeeb9291553af59453f0041ad7cb1fe9d27979b
Signed-off-by: Puneet Saxena <puneets@nvidia.com>
Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Reviewed-on: http://git-master/r/62097
Tested-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Scott Williams <scwilliams@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: Mayuresh Kulkarni <mkulkarni@nvidia.com>
Rebase-Id: Ra5a6165c8a02f0ac130bbaac4a477b901ceea62f
-rw-r--r-- | arch/arm/mach-tegra/sleep-t2.S | 4 | ||||
-rw-r--r-- | arch/arm/mach-tegra/sleep.S | 1 | ||||
-rw-r--r-- | arch/arm/mach-tegra/sleep.h | 3 |
3 files changed, 5 insertions, 3 deletions
diff --git a/arch/arm/mach-tegra/sleep-t2.S b/arch/arm/mach-tegra/sleep-t2.S index f3bd0ca9450a..298f0a13e9fb 100644 --- a/arch/arm/mach-tegra/sleep-t2.S +++ b/arch/arm/mach-tegra/sleep-t2.S @@ -70,7 +70,6 @@ #define TEGRA_PMC_VIRT (TEGRA_PMC_BASE - IO_APB_PHYS + IO_APB_VIRT) #define TEGRA_ARM_PERIF_VIRT (TEGRA_ARM_PERIF_BASE - IO_CPU_PHYS + IO_CPU_VIRT) #define TEGRA_CLK_RESET_VIRT (TEGRA_CLK_RESET_BASE - IO_PPSB_PHYS + IO_PPSB_VIRT) -#define TEGRA_PL310_VIRT (TEGRA_ARM_PL310_BASE - IO_PPSB_PHYS + IO_PPSB_VIRT) #ifdef CONFIG_HOTPLUG_CPU /* @@ -262,7 +261,8 @@ ENTRY(tegra2_sleep_wfi) #ifdef CONFIG_CACHE_L2X0 /* Issue a PL310 cache sync operation */ dsb - mov32 r2, TEGRA_PL310_VIRT + 0x730 @ cache sync + mov32 r2, TEGRA_PL310_VIRT + movw r1, 0x730 @ cache sync add r2, r2, r1 mov r1, #0 str r1, [r2] diff --git a/arch/arm/mach-tegra/sleep.S b/arch/arm/mach-tegra/sleep.S index c2b0300629b4..1f57f6fef617 100644 --- a/arch/arm/mach-tegra/sleep.S +++ b/arch/arm/mach-tegra/sleep.S @@ -48,7 +48,6 @@ #define TEGRA_PMC_VIRT (TEGRA_PMC_BASE - IO_APB_PHYS + IO_APB_VIRT) #define TEGRA_CLK_RESET_VIRT (TEGRA_CLK_RESET_BASE - IO_PPSB_PHYS + IO_PPSB_VIRT) -#define TEGRA_PL310_VIRT (TEGRA_ARM_PL310_BASE - IO_PPSB_PHYS + IO_PPSB_VIRT) /* * tegra_pen_lock diff --git a/arch/arm/mach-tegra/sleep.h b/arch/arm/mach-tegra/sleep.h index d78bac986733..cd982d3bb665 100644 --- a/arch/arm/mach-tegra/sleep.h +++ b/arch/arm/mach-tegra/sleep.h @@ -30,6 +30,9 @@ #else #define USE_TEGRA_CPU_SUSPEND 0 #endif + +#define TEGRA_PL310_VIRT (TEGRA_ARM_PL310_BASE - IO_CPU_PHYS + IO_CPU_VIRT) + /* FIXME: The core associated with this should be removed if our change to save the diagnostic regsiter in the CPU context is accepted. */ #define USE_TEGRA_DIAG_REG_SAVE 1 |