aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorInderpal Singh <inderpal.singh@linaro.org>2013-04-29 07:31:47 -0400
committerOlof Johansson <olof@lixom.net>2013-05-09 16:22:22 -0400
commit088584618836b159947bc4ab5011a5cf1f081a62 (patch)
tree850dade2877e701b854ea6d03a92ff77617f984d
parent6e6a3af7f182f0529c26e0633f68f60aaec51831 (diff)
ARM: EXYNOS5: Fix kernel dump in AFTR idle mode
The kernel crashes while resuming from AFTR idle mode. It happens because L2 cache was not going into retention state. This patch configures the USE_RETENTION bit of ARM_L2_OPTION register so that it does not depend on MANUAL_L2RSTDISABLE_CONTROL of ARM_COMMON_OPTION register for L2RSTDISABLE signal. Signed-off-by: Inderpal Singh <inderpal.singh@linaro.org> Tested-by: Chander Kashyap <chander.kashyap@linaro.org> Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r--arch/arm/mach-exynos/include/mach/regs-pmu.h1
-rw-r--r--arch/arm/mach-exynos/pmu.c5
2 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/mach-exynos/include/mach/regs-pmu.h b/arch/arm/mach-exynos/include/mach/regs-pmu.h
index 3f30aa1ae354..57344b7e98ce 100644
--- a/arch/arm/mach-exynos/include/mach/regs-pmu.h
+++ b/arch/arm/mach-exynos/include/mach/regs-pmu.h
@@ -344,6 +344,7 @@
344#define EXYNOS5_FSYS_ARM_OPTION S5P_PMUREG(0x2208) 344#define EXYNOS5_FSYS_ARM_OPTION S5P_PMUREG(0x2208)
345#define EXYNOS5_ISP_ARM_OPTION S5P_PMUREG(0x2288) 345#define EXYNOS5_ISP_ARM_OPTION S5P_PMUREG(0x2288)
346#define EXYNOS5_ARM_COMMON_OPTION S5P_PMUREG(0x2408) 346#define EXYNOS5_ARM_COMMON_OPTION S5P_PMUREG(0x2408)
347#define EXYNOS5_ARM_L2_OPTION S5P_PMUREG(0x2608)
347#define EXYNOS5_TOP_PWR_OPTION S5P_PMUREG(0x2C48) 348#define EXYNOS5_TOP_PWR_OPTION S5P_PMUREG(0x2C48)
348#define EXYNOS5_TOP_PWR_SYSMEM_OPTION S5P_PMUREG(0x2CC8) 349#define EXYNOS5_TOP_PWR_SYSMEM_OPTION S5P_PMUREG(0x2CC8)
349#define EXYNOS5_JPEG_MEM_OPTION S5P_PMUREG(0x2F48) 350#define EXYNOS5_JPEG_MEM_OPTION S5P_PMUREG(0x2F48)
diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
index daebc1abc966..97d688526258 100644
--- a/arch/arm/mach-exynos/pmu.c
+++ b/arch/arm/mach-exynos/pmu.c
@@ -228,6 +228,7 @@ static struct exynos_pmu_conf exynos5250_pmu_config[] = {
228 { EXYNOS5_DIS_IRQ_ISP_ARM_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} }, 228 { EXYNOS5_DIS_IRQ_ISP_ARM_CENTRAL_SYS_PWR_REG, { 0x0, 0x0, 0x0} },
229 { EXYNOS5_ARM_COMMON_SYS_PWR_REG, { 0x0, 0x0, 0x2} }, 229 { EXYNOS5_ARM_COMMON_SYS_PWR_REG, { 0x0, 0x0, 0x2} },
230 { EXYNOS5_ARM_L2_SYS_PWR_REG, { 0x3, 0x3, 0x3} }, 230 { EXYNOS5_ARM_L2_SYS_PWR_REG, { 0x3, 0x3, 0x3} },
231 { EXYNOS5_ARM_L2_OPTION, { 0x10, 0x10, 0x0 } },
231 { EXYNOS5_CMU_ACLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, 232 { EXYNOS5_CMU_ACLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x1} },
232 { EXYNOS5_CMU_SCLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x1} }, 233 { EXYNOS5_CMU_SCLKSTOP_SYS_PWR_REG, { 0x1, 0x0, 0x1} },
233 { EXYNOS5_CMU_RESET_SYS_PWR_REG, { 0x1, 0x1, 0x0} }, 234 { EXYNOS5_CMU_RESET_SYS_PWR_REG, { 0x1, 0x1, 0x0} },
@@ -353,11 +354,9 @@ static void exynos5_init_pmu(void)
353 354
354 /* 355 /*
355 * SKIP_DEACTIVATE_ACEACP_IN_PWDN_BITFIELD Enable 356 * SKIP_DEACTIVATE_ACEACP_IN_PWDN_BITFIELD Enable
356 * MANUAL_L2RSTDISABLE_CONTROL_BITFIELD Enable
357 */ 357 */
358 tmp = __raw_readl(EXYNOS5_ARM_COMMON_OPTION); 358 tmp = __raw_readl(EXYNOS5_ARM_COMMON_OPTION);
359 tmp |= (EXYNOS5_MANUAL_L2RSTDISABLE_CONTROL | 359 tmp |= EXYNOS5_SKIP_DEACTIVATE_ACEACP_IN_PWDN;
360 EXYNOS5_SKIP_DEACTIVATE_ACEACP_IN_PWDN);
361 __raw_writel(tmp, EXYNOS5_ARM_COMMON_OPTION); 360 __raw_writel(tmp, EXYNOS5_ARM_COMMON_OPTION);
362 361
363 /* 362 /*