summaryrefslogtreecommitdiffstats
path: root/target/linux/coldfire/patches/014-m5445x_ioremap_xf0000000.patch
blob: 11bbbe2473dc2f0110b53da4c0e6f3221ea0d6cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
From ed9d4b88136173a4e17701d9c1162ddfecf902e4 Mon Sep 17 00:00:00 2001
From: Kurt Mahan <kmahan@freescale.com>
Date: Mon, 19 Nov 2007 15:24:30 -0700
Subject: [PATCH] Short circuit IOREMAP calls in the 0xF0000000 range.

LTIBName: m5445x-ioremap-xf0000000
Signed-off-by: Kurt Mahan <kmahan@freescale.com>
---
 arch/m68k/coldfire/head.S |    4 ++--
 arch/m68k/mm/kmap.c       |   14 ++++++++++++--
 2 files changed, 14 insertions(+), 4 deletions(-)

--- a/arch/m68k/coldfire/head.S
+++ b/arch/m68k/coldfire/head.S
@@ -56,13 +56,13 @@
  * Setup ACR mappings to provide the following memory map:
  *   Data
  *     0xA0000000 -> 0xAFFFFFFF [0] NO CACHE / PRECISE / SUPER ONLY
- *     0xFC000000 -> 0xFCFFFFFF [1] NO CACHE / PRECISE / SUPER ONLY
+ *     0xF0000000 -> 0xFFFFFFFF [1] NO CACHE / PRECISE / SUPER ONLY
  *   Code
  *     None currently (mapped via TLBs)
  */
 
 #define ACR0_DEFAULT	#0xA00FA048   /* ACR0 default value */
-#define ACR1_DEFAULT	#0xFC00A040   /* ACR1 default value */
+#define ACR1_DEFAULT	#0xF00FA040   /* ACR1 default value */
 #define ACR2_DEFAULT	#0x00000000   /* ACR2 default value */
 #define ACR3_DEFAULT	#0x00000000   /* ACR3 default value */
 
--- a/arch/m68k/mm/kmap.c
+++ b/arch/m68k/mm/kmap.c
@@ -133,8 +133,18 @@ void __iomem *__ioremap(unsigned long ph
 	}
 #endif
 
+#ifdef CONFIG_M54455
+	if (physaddr >= 0xf0000000) {
+		/* short circuit mappings for xf0000000 */
 #ifdef DEBUG
-	printk("ioremap: 0x%lx,0x%lx(%d) - ", physaddr, size, cacheflag);
+		printk(KERN_INFO "ioremap: short circuiting 0x%lx mapping\n", physaddr);
+#endif
+		return (void __iomem *)physaddr;
+	}
+#endif
+
+#ifdef DEBUG
+	printk("ioremap: paddr=0x%lx,size=0x%lx(%d) - ", physaddr, size, cacheflag);
 #endif
 	/*
 	 * Mappings have to be aligned
@@ -153,7 +163,7 @@ void __iomem *__ioremap(unsigned long ph
 	virtaddr = (unsigned long)area->addr;
 	retaddr = virtaddr + offset;
 #ifdef DEBUG
-	printk("0x%lx,0x%lx,0x%lx", physaddr, virtaddr, retaddr);
+	printk(" paddr=0x%lx,vaddr=0x%lx,retaddr=0x%lx", physaddr, virtaddr, retaddr);
 #endif
 
 	/*