summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra
diff options
context:
space:
mode:
authorPuneet Saxena <puneets@nvidia.com>2011-11-03 15:31:23 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-14 00:57:58 -0700
commit9a135f5e42682ba16c125cc45865709de828b19b (patch)
tree8c5cdb2553ef71e69778f8b8d35f5aaf40b22c64 /arch/arm/mach-tegra
parentd15e34554e205adc0c674da0628a0b4fbe9864ec (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.S5
-rw-r--r--arch/arm/mach-tegra/sleep.S1
-rw-r--r--arch/arm/mach-tegra/sleep.h3
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