use broken-out patches for the coldfire to make it easier to follow differences again...
[15.05/openwrt.git] / target / linux / coldfire / patches / 014-m5445x_ioremap_xf0000000.patch
1 From ed9d4b88136173a4e17701d9c1162ddfecf902e4 Mon Sep 17 00:00:00 2001
2 From: Kurt Mahan <kmahan@freescale.com>
3 Date: Mon, 19 Nov 2007 15:24:30 -0700
4 Subject: [PATCH] Short circuit IOREMAP calls in the 0xF0000000 range.
5
6 LTIBName: m5445x-ioremap-xf0000000
7 Signed-off-by: Kurt Mahan <kmahan@freescale.com>
8 ---
9  arch/m68k/coldfire/head.S |    4 ++--
10  arch/m68k/mm/kmap.c       |   14 ++++++++++++--
11  2 files changed, 14 insertions(+), 4 deletions(-)
12
13 --- a/arch/m68k/coldfire/head.S
14 +++ b/arch/m68k/coldfire/head.S
15 @@ -56,13 +56,13 @@
16   * Setup ACR mappings to provide the following memory map:
17   *   Data
18   *     0xA0000000 -> 0xAFFFFFFF [0] NO CACHE / PRECISE / SUPER ONLY
19 - *     0xFC000000 -> 0xFCFFFFFF [1] NO CACHE / PRECISE / SUPER ONLY
20 + *     0xF0000000 -> 0xFFFFFFFF [1] NO CACHE / PRECISE / SUPER ONLY
21   *   Code
22   *     None currently (mapped via TLBs)
23   */
24  
25  #define ACR0_DEFAULT   #0xA00FA048   /* ACR0 default value */
26 -#define ACR1_DEFAULT   #0xFC00A040   /* ACR1 default value */
27 +#define ACR1_DEFAULT   #0xF00FA040   /* ACR1 default value */
28  #define ACR2_DEFAULT   #0x00000000   /* ACR2 default value */
29  #define ACR3_DEFAULT   #0x00000000   /* ACR3 default value */
30  
31 --- a/arch/m68k/mm/kmap.c
32 +++ b/arch/m68k/mm/kmap.c
33 @@ -133,8 +133,18 @@ void __iomem *__ioremap(unsigned long ph
34         }
35  #endif
36  
37 +#ifdef CONFIG_M54455
38 +       if (physaddr >= 0xf0000000) {
39 +               /* short circuit mappings for xf0000000 */
40  #ifdef DEBUG
41 -       printk("ioremap: 0x%lx,0x%lx(%d) - ", physaddr, size, cacheflag);
42 +               printk(KERN_INFO "ioremap: short circuiting 0x%lx mapping\n", physaddr);
43 +#endif
44 +               return (void __iomem *)physaddr;
45 +       }
46 +#endif
47 +
48 +#ifdef DEBUG
49 +       printk("ioremap: paddr=0x%lx,size=0x%lx(%d) - ", physaddr, size, cacheflag);
50  #endif
51         /*
52          * Mappings have to be aligned
53 @@ -153,7 +163,7 @@ void __iomem *__ioremap(unsigned long ph
54         virtaddr = (unsigned long)area->addr;
55         retaddr = virtaddr + offset;
56  #ifdef DEBUG
57 -       printk("0x%lx,0x%lx,0x%lx", physaddr, virtaddr, retaddr);
58 +       printk(" paddr=0x%lx,vaddr=0x%lx,retaddr=0x%lx", physaddr, virtaddr, retaddr);
59  #endif
60  
61         /*