From 3f8afe492fffd7259e754b335df4839b4f0b2d41 Mon Sep 17 00:00:00 2001 From: Mike Turquette Date: Wed, 26 Aug 2009 10:55:02 -0500 Subject: linux-omap3-pm: refresh patches and remove some sed magic to boot zoom2 Signed-off-by: Mike Turquette --- ...Add-DEBUG_LL-interface-using-external-Qua.patch | 171 +++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 meta/packages/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch (limited to 'meta/packages/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch') diff --git a/meta/packages/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch b/meta/packages/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch new file mode 100644 index 000000000..e39090f6c --- /dev/null +++ b/meta/packages/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch @@ -0,0 +1,171 @@ +From 98d46e88ffe23a9adcf6ae1acf19b210d5ac3737 Mon Sep 17 00:00:00 2001 +From: Vikram Pandita +Date: Thu, 20 Aug 2009 17:16:24 -0500 +Subject: [PATCH 3/5] OMAP: Zoom2: Add DEBUG_LL interface using external Quart + +This patch adds DEBUG_LL interface for Zoom2 board. +The low level debug uart now points corrctly to External Quad uart +controller on detachable debug board. + +The Quad uart is available over GPMC chip select with physical address +0x10000000. + +This physical address has been mapped to virtual address 0xFB000000 +as per static mapping. + +Also the register accesses to Quad uart have a requirement of shift=1 +based on the h/w mapping of the registers + +This patch is adapted from a version by Erik Gilling: +http://android.git.kernel.org/?p=kernel/omap.git; +a=commit;h=e9d72efdd88877d2d6ea74a08983ace0dcc771d3 + +Signed-off-by: Vikram Pandita +Cc: Erik Gilling +--- + arch/arm/mach-omap2/board-zoom-debugboard.c | 5 +++-- + arch/arm/mach-omap2/board-zoom2.c | 15 +++++++++++++++ + arch/arm/plat-omap/include/mach/debug-macro.S | 14 ++++++++++++-- + arch/arm/plat-omap/include/mach/io.h | 6 ++++++ + arch/arm/plat-omap/include/mach/uncompress.h | 7 +++++++ + 5 files changed, 43 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-zoom-debugboard.c b/arch/arm/mach-omap2/board-zoom-debugboard.c +index f546063..f8b0726 100644 +--- a/arch/arm/mach-omap2/board-zoom-debugboard.c ++++ b/arch/arm/mach-omap2/board-zoom-debugboard.c +@@ -82,9 +82,10 @@ static inline void __init zoom2_init_smsc911x(void) + + static struct plat_serial8250_port serial_platform_data[] = { + { +- .mapbase = 0x10000000, ++ .membase = IOMEM(ZOOM2_EXT_QUART_VIRT), ++ .mapbase = ZOOM2_EXT_QUART_PHYS, + .irq = OMAP_GPIO_IRQ(102), +- .flags = UPF_BOOT_AUTOCONF|UPF_IOREMAP|UPF_SHARE_IRQ, ++ .flags = UPF_BOOT_AUTOCONF|UPF_SHARE_IRQ, + .irqflags = IRQF_SHARED | IRQF_TRIGGER_RISING, + .iotype = UPIO_MEM, + .regshift = 1, +diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c +index 58baee3..fc27b07 100644 +--- a/arch/arm/mach-omap2/board-zoom2.c ++++ b/arch/arm/mach-omap2/board-zoom2.c +@@ -16,9 +16,11 @@ + #include + #include + #include ++#include + + #include + #include ++#include + + #include + #include +@@ -273,9 +275,22 @@ static void __init omap_zoom2_init(void) + usb_musb_init(); + } + ++static struct map_desc zoom2_io_desc[] __initdata = { ++ { ++ .virtual = ZOOM2_EXT_QUART_VIRT, ++ .pfn = __phys_to_pfn(ZOOM2_EXT_QUART_PHYS), ++ .length = ZOOM2_EXT_QUART_SIZE, ++ .type = MT_DEVICE ++ } ++}; ++ + static void __init omap_zoom2_map_io(void) + { + omap2_set_globals_343x(); ++ ++ /* Map external quad UART virt to phy mapping */ ++ iotable_init(zoom2_io_desc, ARRAY_SIZE(zoom2_io_desc)); ++ + omap2_map_common_io(); + } + +diff --git a/arch/arm/plat-omap/include/mach/debug-macro.S b/arch/arm/plat-omap/include/mach/debug-macro.S +index f546d6c..a97f2fb 100644 +--- a/arch/arm/plat-omap/include/mach/debug-macro.S ++++ b/arch/arm/plat-omap/include/mach/debug-macro.S +@@ -12,6 +12,14 @@ + */ + #include "io.h" + ++#if (CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR == 0x10000000) ++#define REGSHIFT 1 ++#define UART_VIRT_TO_PHY_OFFSET ZOOM2_EXT_QUART_PHY_TO_VIRT_OFF ++#else ++#define REGSHIFT 2 ++#define UART_VIRT_TO_PHY_OFFSET OMAP2_IO_OFFSET ++#endif ++ + .macro addruart,rx + mrc p15, 0, \rx, c1, c0 + tst \rx, #1 @ MMU enabled? +@@ -22,7 +30,7 @@ + #else + /* omap2/omap3/omap4 */ + ldr \rx, =CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR @ physical base address +- orrne \rx, \rx, #OMAP2_IO_OFFSET @ virtual base ++ orrne \rx, \rx, #UART_VIRT_TO_PHY_OFFSET @ virtual base + #endif + .endm + +@@ -31,13 +39,15 @@ + .endm + + .macro busyuart,rd,rx +-1001: ldrb \rd, [\rx, #(0x5 << 2)] @ OMAP-1510 and friends ++1001: ldrb \rd, [\rx, #(0x5 << REGSHIFT)] @ OMAP-1510 and friends + and \rd, \rd, #0x60 + teq \rd, #0x60 ++#if (CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR != 0x10000000) + beq 1002f + ldrb \rd, [\rx, #(0x5 << 0)] @ OMAP-730 only + and \rd, \rd, #0x60 + teq \rd, #0x60 ++#endif + bne 1001b + 1002: + .endm +diff --git a/arch/arm/plat-omap/include/mach/io.h b/arch/arm/plat-omap/include/mach/io.h +index 8d32df3..97702e6 100644 +--- a/arch/arm/plat-omap/include/mach/io.h ++++ b/arch/arm/plat-omap/include/mach/io.h +@@ -169,6 +169,12 @@ + #define DSP_MMU_34XX_VIRT 0xe2000000 + #define DSP_MMU_34XX_SIZE SZ_4K + ++/* Map External Quad UART for Zoom2 board */ ++#define ZOOM2_EXT_QUART_PHYS 0x10000000 /* PHY address if fixed */ ++#define ZOOM2_EXT_QUART_PHY_TO_VIRT_OFF 0xeb000000 ++#define ZOOM2_EXT_QUART_VIRT 0xfb000000 ++#define ZOOM2_EXT_QUART_SIZE SZ_16 ++ + /* + * ---------------------------------------------------------------------------- + * Omap4 specific IO mapping +diff --git a/arch/arm/plat-omap/include/mach/uncompress.h b/arch/arm/plat-omap/include/mach/uncompress.h +index 0e21eb3..959195a 100644 +--- a/arch/arm/plat-omap/include/mach/uncompress.h ++++ b/arch/arm/plat-omap/include/mach/uncompress.h +@@ -41,6 +41,13 @@ static void putc(int c) + #if defined(CONFIG_DEBUG_LL) + uart = (volatile u8 *)(CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR); + ++#if (CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR == 0x10000000) ++ /* External UART has a shift=1 requirement ++ * Internal OMAP UARTs have shift=2 requirement ++ */ ++ shift = 1; ++#endif ++ + #ifdef CONFIG_ARCH_OMAP1 + /* Determine which serial port to use */ + do { +-- +1.6.3.2 + -- cgit v1.2.3