[PATCH] ARM: 2745/1: Fix IXP4xx debug macros
authorDeepak Saxena <dsaxena@plexity.net>
Fri, 24 Jun 2005 19:54:35 +0000 (20:54 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 24 Jun 2005 19:54:35 +0000 (20:54 +0100)
Patch from Deepak Saxena

Current IXP4xx debug macros do not work in the small window between
the MMU being enabled and the call to map_io() b/c the standard
peripheral mapping is not properly setup for use with the low-level
debug code. This patch creates a new section-aligned mapping for the
UART specifically for use with the debug macros.

Signed-off-by: Deepak Saxena
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-ixp4xx/common.c
include/asm-arm/arch-ixp4xx/debug-macro.S
include/asm-arm/arch-ixp4xx/ixp4xx-regs.h

index 267ba02..f39e840 100644 (file)
@@ -141,7 +141,15 @@ static struct map_desc ixp4xx_io_desc[] __initdata = {
                .physical       = IXP4XX_PCI_CFG_BASE_PHYS,
                .length         = IXP4XX_PCI_CFG_REGION_SIZE,
                .type           = MT_DEVICE
+       },
+#ifdef CONFIG_DEBUG_LL
+       {       /* Debug UART mapping */
+               .virtual        = IXP4XX_DEBUG_UART_BASE_VIRT,
+               .physical       = IXP4XX_DEBUG_UART_BASE_PHYS,
+               .length         = IXP4XX_DEBUG_UART_REGION_SIZE,
+               .type           = MT_DEVICE
        }
+#endif
 };
 
 void __init ixp4xx_map_io(void)
index 4499ae8..45a6c6c 100644 (file)
@@ -14,6 +14,7 @@
                 mrc     p15, 0, \rx, c1, c0
                 tst     \rx, #1                 @ MMU enabled?
                 moveq   \rx, #0xc8000000
+               orrne   \rx, \rx, #0x00b00000
                 movne   \rx, #0xff000000
                 add     \rx,\rx,#3              @ Uart regs are at off set of 3 if
                                                @ byte writes used - Big Endian.
index 8eeb1db..004696a 100644 (file)
 #define IXP4XX_PERIPHERAL_BASE_VIRT    (0xFFBF2000)
 #define IXP4XX_PERIPHERAL_REGION_SIZE  (0x0000C000)
 
+/*
+ * Debug UART
+ *
+ * This is basically a remap of UART1 into a region that is section
+ * aligned so that it * can be used with the low-level debug code.
+ */
+#define        IXP4XX_DEBUG_UART_BASE_PHYS     (0xC8000000)
+#define        IXP4XX_DEBUG_UART_BASE_VIRT     (0xffb00000)
+#define        IXP4XX_DEBUG_UART_REGION_SIZE   (0x00001000)
+
 #define IXP4XX_EXP_CS0_OFFSET  0x00
 #define IXP4XX_EXP_CS1_OFFSET   0x04
 #define IXP4XX_EXP_CS2_OFFSET   0x08