summaryrefslogtreecommitdiff
path: root/packages/linux/linux-omap2-git/beagleboard/l2-cache.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/linux-omap2-git/beagleboard/l2-cache.patch')
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/l2-cache.patch182
1 files changed, 153 insertions, 29 deletions
diff --git a/packages/linux/linux-omap2-git/beagleboard/l2-cache.patch b/packages/linux/linux-omap2-git/beagleboard/l2-cache.patch
index 7e93c29036..f35252283b 100644
--- a/packages/linux/linux-omap2-git/beagleboard/l2-cache.patch
+++ b/packages/linux/linux-omap2-git/beagleboard/l2-cache.patch
@@ -1,38 +1,162 @@
-diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
-index 15066c2..70f85c1 100644
---- a/arch/arm/mm/Kconfig
-+++ b/arch/arm/mm/Kconfig
-@@ -665,6 +665,12 @@ config CPU_CACHE_ROUND_ROBIN
- Say Y here to use the predictable round-robin cache replacement
- policy. Unless you specifically require this or are unsure, say N.
-
+From: "Syed Mohammed, Khasim" <khasim@ti.com>
+To: Koen Kooi <k.kooi@student.utwente.nl>
+CC: "linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
+ "Woodruff,
+ Richard" <r-woodruff2@ti.com>
+Date: Wed, 7 May 2008 13:12:13 +0530
+Subject: RE: public git l2 cache off.
+
+The below patch should get you going with L2 Cache enabled on GIT kernel, tested on Beagle board.
+
+Regards,
+Khasim
+
+
+--- my_linux_omap/arch/arm/mm/Kconfig 2008-05-06 16:37:17.000000000 +0530
++++ git/arch/arm/mm/Kconfig 2008-05-07 12:40:05.000000000 +0530
+@@ -659,6 +659,20 @@ config CPU_DCACHE_SIZE
+ If your SoC is configured to have a different size, define the value
+ here with proper conditions.
+
++choice
++ prompt "L2 Cache Size"
++ depends on ARCH_OMAP34XX
++
++config CPU_LOCKDOWN_TO_64K_L2
++ bool "Lock down L2 Cache to 64K"
++
++config CPU_LOCKDOWN_TO_128K_L2
++ bool "Lock down L2 Cache to 128K"
++
++config CPU_LOCKDOWN_TO_256K_L2
++ bool "Lock down L2 Cache to 256K"
++endchoice
++
+ config CPU_DCACHE_WRITETHROUGH
+ bool "Force write through D-cache"
+ depends on (CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020) && !CPU_DCACHE_DISABLE
+@@ -674,6 +688,12 @@ config CPU_CACHE_ROUND_ROBIN
+ Say Y here to use the predictable round-robin cache replacement
+ policy. Unless you specifically require this or are unsure, say N.
+
+config CPU_L2CACHE_DISABLE
-+ bool "Disable level 2 cache"
-+ depends on CPU_V7
-+ help
-+ Say Y here to disable the level 2 cache. If unsure, say N.
++ bool "Disable level 2 cache"
++ depends on CPU_V7
++ help
++ Say Y here to disable the level 2 cache. If unsure, say N.
+
config CPU_BPREDICT_DISABLE
- bool "Disable branch prediction"
- depends on CPU_ARM1020 || CPU_V6 || CPU_XSC3 || CPU_V7
-diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
-index a1d7331..432ddab 100644
---- a/arch/arm/mm/proc-v7.S
-+++ b/arch/arm/mm/proc-v7.S
-@@ -181,6 +181,16 @@ __v7_setup:
- mcr p15, 0, r4, c2, c0, 1 @ load TTB1
+ bool "Disable branch prediction"
+ depends on CPU_ARM1020 || CPU_V6 || CPU_XSC3 || CPU_V7
+
+--- /tmp/proc-v7.S 2008-05-07 10:05:37.949232951 +0200
++++ git/arch/arm/mm/proc-v7.S 2008-05-07 10:13:18.626067909 +0200
+@@ -182,11 +182,72 @@
mov r10, #0x1f @ domains 0, 1 = manager
mcr p15, 0, r10, c3, c0, 0 @ load domain access register
-+#ifndef CONFIG_CPU_L2CACHE_DISABLE
-+ @ L2 cache configuration in the L2 aux control register
-+ mrc p15, 1, r10, c9, c0, 2
-+ bic r10, r10, #(1 << 16) @ L2 outer cache
-+ mcr p15, 1, r10, c9, c0, 2
+ #endif
++#if defined(CONFIG_ARCH_OMAP3)
+ @ L2 cache is enabled in the aux control register
-+ mrc p15, 0, r10, c1, c0, 1
-+ orr r10, r10, #2
-+ mcr p15, 0, r10, c1, c0, 1
++ mrc p15, 0, r0, c1, c0, 1
++ orr r0, r0, #0x11 @ speculative+no-alais protection
++#ifdef CONFIG_CPU_L2CACHE_DISABLE
++ bic r0, r0, #0x2 @ disable L2 Cache.
++#else
++ orr r0, r0, #0x2 @ enaable L2 Cache.
+#endif
- #endif
++
++/* On 3430 ES2.0 ZeBu and silicon, Aux Ctrl Reg can be written outside
++ * Secure mode also
++ */
++ mcr p15, 0, r0, c1, c0, 1
++
++#ifdef CONFIG_ARCH_OMAP34XX
++#ifdef CONFIG_CPU_LOCKDOWN_TO_64K_L2
++ mov r10, #0xfc
++ mcr p15, 1, r10, c9, c0, 0
++#endif
++
++#ifdef CONFIG_CPU_LOCKDOWN_TO_128K_L2
++ mov r10, #0xf0
++ mcr p15, 1, r10, c9, c0, 0
++#endif
++
++#ifdef CONFIG_CPU_LOCKDOWN_TO_256K_L2
++ mov r10, #0x00
++ mcr p15, 1, r10, c9, c0, 0
++#endif
++#endif
++
adr r5, v7_crval
ldmia r5, {r5, r6}
+- mrc p15, 0, r0, c1, c0, 0 @ read control register
+- bic r0, r0, r5 @ clear bits them
+- orr r0, r0, r6 @ set them
++ mrc p15, 0, r0, c1, c0, 0 @ read control register
++ bic r0, r0, r5 @ clear bits them
++ orr r0, r0, r6 @ set them
++ mov pc, lr @ return to head.S:__ret
++
++ /*
++ * TAT N EV F H R
++ * .EFR M.EE .UI. ..A. .RVI Z... B... .CAM
++ * 0xxx x0xx 11x0 01x1 0xxx x000 0111 1xxx < forced typical
++ * r rr rr r rr r r rrr rrrr r < always read only
++ * .000 ..00 ..0. ..0. .011 1... .... .101 < we want
++ */
++ .type v7_crval, #object
++v7_crval:
++ crval clear=0x7322f006, mmuset=0x00003805, ucset=0x00001804
++#else
++
++#ifndef CONFIG_CPU_L2CACHE_DISABLE
++ @ L2 cache configuration in the L2 aux control register
++ mrc p15, 1, r10, c9, c0, 2
++ bic r10, r10, #(1 << 16) @ L2 outer cache
++ mcr p15, 1, r10, c9, c0, 2
++ @ L2 cache is enabled in the aux control register
++ mrc p15, 0, r10, c1, c0, 1
++ orr r10, r10, #2
++ mcr p15, 0, r10, c1, c0, 1
++#endif
++ mrc p15, 0, r0, c1, c0, 0 @ read control register
++ ldr r10, cr1_clear @ get mask for bits to clear
++ bic r0, r0, r10 @ clear bits them
++ ldr r10, cr1_set @ get mask for bits to set
++ orr r0, r0, r10 @ set them
+ mov pc, lr @ return to head.S:__ret
+
+ /*
+@@ -195,9 +256,13 @@
+ * rrrr rrrx xxx0 0101 xxxx xxxx x111 xxxx < forced
+ * 0 110 0011 1.00 .111 1101 < we want
+ */
+- .type v7_crval, #object
+-v7_crval:
+- crval clear=0x0120c302, mmuset=0x00c0387d, ucset=0x00c0187c
++ .type cr1_clear, #object
++ .type cr1_set, #object
++cr1_clear:
++ .word 0x0120c302
++cr1_set:
++ .word 0x00c0387d
++#endif
+
+ __v7_setup_stack:
+ .space 4 * 11 @ 11 registers
+@@ -205,7 +270,6 @@
+ .type v7_processor_functions, #object
+ ENTRY(v7_processor_functions)
+ .word v7_early_abort
+- .word pabort_ifar
+ .word cpu_v7_proc_init
+ .word cpu_v7_proc_fin
+ .word cpu_v7_reset
+@@ -213,6 +277,7 @@
+ .word cpu_v7_dcache_clean_area
+ .word cpu_v7_switch_mm
+ .word cpu_v7_set_pte_ext
++ .word pabort_ifar
+ .size v7_processor_functions, . - v7_processor_functions
+
+ .type cpu_arch_name, #object