From: wdenk <wdenk>
Date: Fri, 1 Apr 2005 09:14:58 +0000 (+0000)
Subject: Patch by Steven Scholz, 13 March 2005:
X-Git-Tag: v2025.01-rc5-pxa1908~23414
X-Git-Url: http://git.dujemihanovic.xyz/html/static/git-logo.png?a=commitdiff_plain;h=f50cc09b613c5fab3b47079198ec476b7c227859;p=u-boot.git

Patch by Steven Scholz, 13 March 2005:
fix cache enabling for AT91RM9200
---

diff --git a/CHANGELOG b/CHANGELOG
index d7dcec7ea8..9bdace71aa 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes for U-Boot 1.1.3:
 ======================================================================
 
+* Patch by Steven Scholz, 13 March 2005:
+  fix cache enabling for AT91RM9200
+
 * Patch by Masami Komiya, 30 Mar 2005:
   add SNTP support and expand time server and time offset fields of
   DHCP support. See doc/README.SNTP
diff --git a/cpu/at91rm9200/start.S b/cpu/at91rm9200/start.S
index 43ab93db61..0dbc0094a4 100644
--- a/cpu/at91rm9200/start.S
+++ b/cpu/at91rm9200/start.S
@@ -127,21 +127,20 @@ reset:
 	 * is why it's called lowlevelinit
 	 */
 	bl	lowlevelinit /* in lowlevel.S */
-	bl	icache_enable;
-	/*------------------------------------
-	  Read/modify/write CP15 control register
-	 -------------------------------------
-	  read cp15 control register (cp15 r1) in r0
-	  ------------------------------------*/
-	mrc     p15, 0, r0, c1, c0, 0
-	/* Reset bit :Little Endian end fast bus mode */
-	ldr     r3, =0xC0000080
-	/* Set bit :Asynchronous clock mode, Not Fast Bus */
-	ldr     r4, =0xC0000000
-	bic     r0, r0, r3
-	orr     r0, r0, r4
-	/* write r0 in cp15 control register (cp15 r1) */
-	mcr     p15, 0, r0, c1, c0, 0
+
+	/*
+	 * Read/modify/write CP15 control register
+	 * disable MMU, enable I-Cache, select Asychronous Clocking Mode
+	 */
+
+	mrc     p15, 0, r0, c1, c0, 0	@ read cp15 control register (cp15 r1) in r0
+	bic	r0, r0, #0x00002300	@ clear bits 13, 9:8 (--V- --RS)
+	bic	r0, r0, #0x0000008f	@ clear bits 7, 3:0 (B--- WCAM)
+	orr	r0, r0, #0x00000002	@ set bit 2 (A) Align
+	orr	r0, r0, #0x00000004	@ set bit 3 (C) D-Cache
+	orr	r0, r0, #0x00001000	@ set bit 12 (I) I-Cache
+	orr	r0, r0, #0xC0000000	@ set bits 31:30 (iA, nF)
+	mcr     p15, 0, r0, c1, c0, 0	@ write r0 in cp15 control register (cp15 r1)
 #endif /* CONFIG_BOOTBINFUNC */
 	/*
 	 * relocate exeception table