summaryrefslogtreecommitdiff
path: root/patches.tizen/0342-ARM-EXYNOS-Move-L2X0-cache-resume-to-SoC-PM-code.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches.tizen/0342-ARM-EXYNOS-Move-L2X0-cache-resume-to-SoC-PM-code.patch')
-rw-r--r--patches.tizen/0342-ARM-EXYNOS-Move-L2X0-cache-resume-to-SoC-PM-code.patch134
1 files changed, 134 insertions, 0 deletions
diff --git a/patches.tizen/0342-ARM-EXYNOS-Move-L2X0-cache-resume-to-SoC-PM-code.patch b/patches.tizen/0342-ARM-EXYNOS-Move-L2X0-cache-resume-to-SoC-PM-code.patch
new file mode 100644
index 00000000000..7352f5e8cc3
--- /dev/null
+++ b/patches.tizen/0342-ARM-EXYNOS-Move-L2X0-cache-resume-to-SoC-PM-code.patch
@@ -0,0 +1,134 @@
+From b9bc6744377a2962e77f08daa4d6cf3cf86d1ed6 Mon Sep 17 00:00:00 2001
+From: Tomasz Figa <t.figa@samsung.com>
+Date: Wed, 5 Jun 2013 17:39:33 +0200
+Subject: [PATCH 0342/1302] ARM: EXYNOS: Move L2X0 cache resume to SoC PM code
+
+Signed-off-by: Tomasz Figa <t.figa@samsung.com>
+Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
+---
+ arch/arm/mach-exynos/common.c | 5 -----
+ arch/arm/mach-exynos/common.h | 1 -
+ arch/arm/mach-exynos/pm.c | 4 +++-
+ arch/arm/plat-samsung/s5p-sleep.S | 43 ---------------------------------------
+ 4 files changed, 3 insertions(+), 50 deletions(-)
+
+diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
+index 02fb4a1..a8b62e4 100644
+--- a/arch/arm/mach-exynos/common.c
++++ b/arch/arm/mach-exynos/common.c
+@@ -567,8 +567,6 @@ static int __init exynos4_l2x0_cache_init(void)
+ ret = l2x0_of_init(L2_AUX_VAL, L2_AUX_MASK);
+ if (ret)
+ return ret;
+- l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs);
+- clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long));
+ return 0;
+ }
+
+@@ -586,8 +584,6 @@ static int __init exynos4_l2x0_cache_init(void)
+ l2x0_saved_regs.pwr_ctrl =
+ (L2X0_DYNAMIC_CLK_GATING_EN | L2X0_STNDBY_MODE_EN);
+
+- l2x0_regs_phys = virt_to_phys(&l2x0_saved_regs);
+-
+ __raw_writel(l2x0_saved_regs.tag_latency,
+ S5P_VA_L2CC + L2X0_TAG_LATENCY_CTRL);
+ __raw_writel(l2x0_saved_regs.data_latency,
+@@ -601,7 +597,6 @@ static int __init exynos4_l2x0_cache_init(void)
+ __raw_writel(l2x0_saved_regs.pwr_ctrl,
+ S5P_VA_L2CC + L2X0_POWER_CTRL);
+
+- clean_dcache_area(&l2x0_regs_phys, sizeof(unsigned long));
+ clean_dcache_area(&l2x0_saved_regs, sizeof(struct l2x0_regs));
+ }
+
+diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
+index 11fc1e2..eeed0c5 100644
+--- a/arch/arm/mach-exynos/common.h
++++ b/arch/arm/mach-exynos/common.h
+@@ -91,7 +91,6 @@ enum sys_powerdown {
+ NUM_SYS_POWERDOWN,
+ };
+
+-extern unsigned long l2x0_regs_phys;
+ struct exynos_pmu_conf {
+ void __iomem *reg;
+ unsigned int val[NUM_SYS_POWERDOWN];
+diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c
+index e195e3e..e46ac76 100644
+--- a/arch/arm/mach-exynos/pm.c
++++ b/arch/arm/mach-exynos/pm.c
+@@ -272,7 +272,9 @@ static int exynos_pm_suspend(void)
+ static void exynos_pm_resume(void)
+ {
+ unsigned long tmp;
+-
++#ifdef CONFIG_CACHE_L2X0
++ outer_resume();
++#endif
+ /*
+ * If PMU failed while entering sleep mode, WFI will be
+ * ignored by PMU and then exiting cpu_do_idle().
+diff --git a/arch/arm/plat-samsung/s5p-sleep.S b/arch/arm/plat-samsung/s5p-sleep.S
+index a030e73..16a0701 100644
+--- a/arch/arm/plat-samsung/s5p-sleep.S
++++ b/arch/arm/plat-samsung/s5p-sleep.S
+@@ -25,17 +25,6 @@
+ #include <asm/asm-offsets.h>
+ #include <asm/hardware/cache-l2x0.h>
+
+-#define CPU_MASK 0xff0ffff0
+-#define CPU_CORTEX_A9 0x410fc090
+-
+-/*
+- * The following code is located into the .data section. This is to
+- * allow l2x0_regs_phys to be accessed with a relative load while we
+- * can't rely on any MMU translation. We could have put l2x0_regs_phys
+- * in the .text section as well, but some setups might insist on it to
+- * be truly read-only. (Reference from: arch/arm/kernel/sleep.S)
+- */
+- .data
+ .align
+
+ /*
+@@ -53,37 +42,5 @@
+ */
+
+ ENTRY(s3c_cpu_resume)
+-#ifdef CONFIG_CACHE_L2X0
+- mrc p15, 0, r0, c0, c0, 0
+- ldr r1, =CPU_MASK
+- and r0, r0, r1
+- ldr r1, =CPU_CORTEX_A9
+- cmp r0, r1
+- bne resume_l2on
+- adr r0, l2x0_regs_phys
+- ldr r0, [r0]
+- ldr r1, [r0, #L2X0_R_PHY_BASE]
+- ldr r2, [r1, #L2X0_CTRL]
+- tst r2, #0x1
+- bne resume_l2on
+- ldr r2, [r0, #L2X0_R_AUX_CTRL]
+- str r2, [r1, #L2X0_AUX_CTRL]
+- ldr r2, [r0, #L2X0_R_TAG_LATENCY]
+- str r2, [r1, #L2X0_TAG_LATENCY_CTRL]
+- ldr r2, [r0, #L2X0_R_DATA_LATENCY]
+- str r2, [r1, #L2X0_DATA_LATENCY_CTRL]
+- ldr r2, [r0, #L2X0_R_PREFETCH_CTRL]
+- str r2, [r1, #L2X0_PREFETCH_CTRL]
+- ldr r2, [r0, #L2X0_R_PWR_CTRL]
+- str r2, [r1, #L2X0_POWER_CTRL]
+- mov r2, #1
+- str r2, [r1, #L2X0_CTRL]
+-resume_l2on:
+-#endif
+ b cpu_resume
+ ENDPROC(s3c_cpu_resume)
+-#ifdef CONFIG_CACHE_L2X0
+- .globl l2x0_regs_phys
+-l2x0_regs_phys:
+- .long 0
+-#endif
+--
+1.8.3.2
+