diff options
author | Puneet Saxena <puneets@nvidia.com> | 2011-11-03 15:31:23 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2013-09-14 00:57:58 -0700 |
commit | 9a135f5e42682ba16c125cc45865709de828b19b (patch) | |
tree | 8c5cdb2553ef71e69778f8b8d35f5aaf40b22c64 /arch/arm/mach-tegra | |
parent | d15e34554e205adc0c674da0628a0b4fbe9864ec (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
Diffstat (limited to 'arch/arm/mach-tegra')
-rw-r--r-- | arch/arm/mach-tegra/sleep-t20.S | 5 | ||||
-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, 4 deletions
diff --git a/arch/arm/mach-tegra/sleep-t20.S b/arch/arm/mach-tegra/sleep-t20.S index b129158afeaf..a0738bcc229c 100644 --- a/arch/arm/mach-tegra/sleep-t20.S +++ b/arch/arm/mach-tegra/sleep-t20.S @@ -60,8 +60,6 @@ #define CLK_RESET_RST_CPU_CMPLX_SET 0x340 -#define TEGRA_PL310_VIRT (TEGRA_ARM_PL310_BASE - IO_PPSB_PHYS + IO_PPSB_VIRT) - #if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_PM_SLEEP) /* * tegra20_hotplug_shutdown(void) @@ -252,7 +250,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 7b12dcf20099..9c89a380fb11 100644 --- a/arch/arm/mach-tegra/sleep.S +++ b/arch/arm/mach-tegra/sleep.S @@ -47,7 +47,6 @@ #define CLK_RESET_CCLK_DIVIDER 0x24 #define TEGRA_PMC_VIRT (TEGRA_PMC_BASE - IO_APB_PHYS + IO_APB_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 3f103c5f17a3..7307f83fa407 100644 --- a/arch/arm/mach-tegra/sleep.h +++ b/arch/arm/mach-tegra/sleep.h @@ -24,6 +24,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 |