aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch')
-rw-r--r--meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch171
1 files changed, 171 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch b/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch
new file mode 100644
index 0000000000..e39090f6cf
--- /dev/null
+++ b/meta/recipes-kernel/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 <vikram.pandita@ti.com>
+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 <vikram.pandita@ti.com>
+Cc: Erik Gilling <konkers@android.com>
+---
+ 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 <linux/gpio.h>
+ #include <linux/i2c/twl4030.h>
+ #include <linux/regulator/machine.h>
++#include <linux/io.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
++#include <asm/mach/map.h>
+
+ #include <mach/common.h>
+ #include <mach/usb.h>
+@@ -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
+