aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/linux/linux-omap3-pm-git
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-kernel/linux/linux-omap3-pm-git
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadopenembedded-core-contrib-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap3-pm-git')
-rw-r--r--meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0001-OMAP1-2-3-4-DEBUG_LL-cleanup.patch217
-rw-r--r--meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0002-OMAP1-2-3-4-Adapt-board-files-for-cleand-DEBUG_LL-in.patch268
-rw-r--r--meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0003-OMAP-Zoom2-Add-DEBUG_LL-interface-using-external-Qua.patch171
-rw-r--r--meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0005-OMAP-Zoom2-Release-Dbg-board-detect-gpio.patch41
4 files changed, 697 insertions, 0 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0001-OMAP1-2-3-4-DEBUG_LL-cleanup.patch b/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0001-OMAP1-2-3-4-DEBUG_LL-cleanup.patch
new file mode 100644
index 0000000000..e1e216c915
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0001-OMAP1-2-3-4-DEBUG_LL-cleanup.patch
@@ -0,0 +1,217 @@
+From 51f967864f0e30225c8a8e50e0bbaf92258c0032 Mon Sep 17 00:00:00 2001
+From: Vikram Pandita <vikram.pandita@ti.com>
+Date: Thu, 20 Aug 2009 16:13:20 -0500
+Subject: [PATCH 1/5] OMAP1/2/3/4: DEBUG_LL: cleanup
+
+This patch cleans up the DEBUG_LL infrastructure for omap boards.
+
+The three stages of log printing infrastructure is using their own #defines
+The patch integrates the three stages to use the same variable.
+
+Three stages are:
+Stage 1: Prints - Uncompressing Linux......
+ File getting used: arch/arm/plat-omap/include/mach/uncompress.h
+Stage 2: Prints - <5>Linux version 2.6.31
+ File getting used: arch/arm/plat-omap/include/mach/debug-macro.S
+Stage 3: Kernel ttyS console takes over
+
+On enabling the DEBUG_LL menuconfig item
+[Kernel Hacking -> Kernel low-level debugging functions]
+
+the following entry gets auto selected
+[Systerm Type -> TI OMAP Implementations -> Low-level Debug console UART]
+
+This is the physical address of the UART getting used for the board.
+The physical address of debug uart is provided as a menuconfig option now.
+
+Issue with current system:
+(a) Zoom2 board has a detachable debug board having the TL16CP754 Quad uart chip.
+If the debug board is not attached, _NO_ debug uart is available.
+OMAP internal uarts are not used for traces on zoom2 board.
+Current framework does not account for boards that may not have a debug uart
+at all. The Stage 1 always accesses one of the uarts. Thats fixed now.
+
+(b) this patch does a cleanup of arch/arm/plat-omap/include/mach/debug-macro.S
+
+Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
+---
+ arch/arm/plat-omap/Kconfig | 50 ++++++++++++++++++-------
+ arch/arm/plat-omap/include/mach/common.h | 7 +++
+ arch/arm/plat-omap/include/mach/debug-macro.S | 40 ++++----------------
+ arch/arm/plat-omap/include/mach/uncompress.h | 12 +----
+ 4 files changed, 54 insertions(+), 55 deletions(-)
+
+diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
+index ab9f9ef..2fefb64 100644
+--- a/arch/arm/plat-omap/Kconfig
++++ b/arch/arm/plat-omap/Kconfig
+@@ -162,21 +162,43 @@ config OMAP_DM_TIMER
+ help
+ Select this option if you want to use OMAP Dual-Mode timers.
+
+-choice
+- prompt "Low-level debug console UART"
+- depends on ARCH_OMAP
+- default OMAP_LL_DEBUG_UART1
+-
+-config OMAP_LL_DEBUG_UART1
+- bool "UART1"
+-
+-config OMAP_LL_DEBUG_UART2
+- bool "UART2"
+
+-config OMAP_LL_DEBUG_UART3
+- bool "UART3"
+-
+-endchoice
++config OMAP_DEBUG_LL_UART_PHY_ADDR
++ hex "Low-level debug console UART Physical Address"
++ depends on ARCH_OMAP && DEBUG_LL
++
++ default "0xfffb0800" if ARCH_OMAP1 && (MACH_OMAP_PALMTT || MACH_SX1)
++ default "0xfffb0000" if ARCH_OMAP1
++ default "0x4806e000" if ARCH_OMAP2 && MACH_NOKIA_N8X0
++ default "0x4806a000" if ARCH_OMAP2
++ default "0x49020000" if ARCH_OMAP3 && (MACH_NOKIA_RX51 || MACH_OMAP_BEAGLE)
++ default "0x49020000" if ARCH_OMAP3 && (MACH_OMAP3_PANDORA || MACH_OMAP_LDP || MACH_OVERO)
++ default "0x10000000" if ARCH_OMAP3 && MACH_OMAP_ZOOM2
++ default "0x4806a000" if ARCH_OMAP3
++ default "0x4806a000" if ARCH_OMAP4
++ help
++ Specify the Physical address of Low level debug UART
++ Specify 0x0 in case you do not want DEBUG_LL functions to iterfere with your board uarts
++
++ OMAP1:
++ -------------------
++ UART1 -> 0xfffb0000 (default)
++ UART2 -> 0xfffb0800
++ UART3 -> 0xfffb9800 (sx1, palmtt)
++
++ OMAP2:
++ -------------------
++ UART1 -> 0x4806a000 (default)
++ UART2 -> 0x4806c000
++ UART3 -> 0x4806e000 (N8X0)
++
++ OMAP3/4:
++ -------------------
++ UART1 -> 0x4806a000 (default: except following)
++ UART2 -> 0x4806c000
++ UART3 -> 0x49020000 (rx51, beagle, pendora, ldp, overo)
++ UART4 -> 0x4806e000
++ UART_EXT -> 0x10000000 (zoom2: Debug uart is on external debug board)
+
+ config OMAP_SERIAL_WAKE
+ bool "Enable wake-up events for serial ports"
+diff --git a/arch/arm/plat-omap/include/mach/common.h b/arch/arm/plat-omap/include/mach/common.h
+index fdeab42..f29d31f 100644
+--- a/arch/arm/plat-omap/include/mach/common.h
++++ b/arch/arm/plat-omap/include/mach/common.h
+@@ -68,4 +68,11 @@ void omap2_set_globals_sdrc(struct omap_globals *);
+ void omap2_set_globals_control(struct omap_globals *);
+ void omap2_set_globals_prcm(struct omap_globals *);
+
++/* In case Low Level debug is not defined
++ * make the low level uart address as zero
++ */
++#if !defined(CONFIG_DEBUG_LL)
++#define CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR 0
++#endif
++
+ #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */
+diff --git a/arch/arm/plat-omap/include/mach/debug-macro.S b/arch/arm/plat-omap/include/mach/debug-macro.S
+index ac24050..f546d6c 100644
+--- a/arch/arm/plat-omap/include/mach/debug-macro.S
++++ b/arch/arm/plat-omap/include/mach/debug-macro.S
+@@ -10,43 +10,19 @@
+ * published by the Free Software Foundation.
+ *
+ */
++#include "io.h"
+
+ .macro addruart,rx
+ mrc p15, 0, \rx, c1, c0
+ tst \rx, #1 @ MMU enabled?
+ #ifdef CONFIG_ARCH_OMAP1
+- moveq \rx, #0xff000000 @ physical base address
+- movne \rx, #0xfe000000 @ virtual base
+- orr \rx, \rx, #0x00fb0000
+-#ifdef CONFIG_OMAP_LL_DEBUG_UART3
+- orr \rx, \rx, #0x00009000 @ UART 3
+-#endif
+-#if defined(CONFIG_OMAP_LL_DEBUG_UART2) || defined(CONFIG_OMAP_LL_DEBUG_UART3)
+- orr \rx, \rx, #0x00000800 @ UART 2 & 3
+-#endif
+-
+-#elif CONFIG_ARCH_OMAP2
+- moveq \rx, #0x48000000 @ physical base address
+- movne \rx, #0xd8000000 @ virtual base
+- orr \rx, \rx, #0x0006a000
+-#ifdef CONFIG_OMAP_LL_DEBUG_UART2
+- add \rx, \rx, #0x00002000 @ UART 2
+-#endif
+-#ifdef CONFIG_OMAP_LL_DEBUG_UART3
+- add \rx, \rx, #0x00004000 @ UART 3
+-#endif
+-
+-#elif defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
+- moveq \rx, #0x48000000 @ physical base address
+- movne \rx, #0xd8000000 @ virtual base
+- orr \rx, \rx, #0x0006a000
+-#ifdef CONFIG_OMAP_LL_DEBUG_UART2
+- add \rx, \rx, #0x00002000 @ UART 2
+-#endif
+-#ifdef CONFIG_OMAP_LL_DEBUG_UART3
+- add \rx, \rx, #0x00fb0000 @ UART 3
+- add \rx, \rx, #0x00006000
+-#endif
++ /* omap1 */
++ ldr \rx, =CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR @ physical base address
++ subne \rx, #CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR, #OMAP1_IO_OFFSET @ virtual base
++#else
++ /* omap2/omap3/omap4 */
++ ldr \rx, =CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR @ physical base address
++ orrne \rx, \rx, #OMAP2_IO_OFFSET @ virtual base
+ #endif
+ .endm
+
+diff --git a/arch/arm/plat-omap/include/mach/uncompress.h b/arch/arm/plat-omap/include/mach/uncompress.h
+index 0814c5f..0e21eb3 100644
+--- a/arch/arm/plat-omap/include/mach/uncompress.h
++++ b/arch/arm/plat-omap/include/mach/uncompress.h
+@@ -38,14 +38,8 @@ static void putc(int c)
+ return;
+ #endif
+
+-#ifdef CONFIG_ARCH_OMAP
+-#ifdef CONFIG_OMAP_LL_DEBUG_UART3
+- uart = (volatile u8 *)(OMAP_UART3_BASE);
+-#elif defined(CONFIG_OMAP_LL_DEBUG_UART2)
+- uart = (volatile u8 *)(OMAP_UART2_BASE);
+-#else
+- uart = (volatile u8 *)(OMAP_UART1_BASE);
+-#endif
++#if defined(CONFIG_DEBUG_LL)
++ uart = (volatile u8 *)(CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR);
+
+ #ifdef CONFIG_ARCH_OMAP1
+ /* Determine which serial port to use */
+@@ -62,7 +56,6 @@ static void putc(int c)
+ return;
+ } while (0);
+ #endif /* CONFIG_ARCH_OMAP1 */
+-#endif
+
+ /*
+ * Now, xmit each character
+@@ -70,6 +63,7 @@ static void putc(int c)
+ while (!(uart[UART_LSR << shift] & UART_LSR_THRE))
+ barrier();
+ uart[UART_TX << shift] = c;
++#endif /* CONFIG_DEBUG_LL */
+ }
+
+ static inline void flush(void)
+--
+1.6.3.2
+
diff --git a/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0002-OMAP1-2-3-4-Adapt-board-files-for-cleand-DEBUG_LL-in.patch b/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0002-OMAP1-2-3-4-Adapt-board-files-for-cleand-DEBUG_LL-in.patch
new file mode 100644
index 0000000000..8019631b1d
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0002-OMAP1-2-3-4-Adapt-board-files-for-cleand-DEBUG_LL-in.patch
@@ -0,0 +1,268 @@
+From 533dc09b3515211d6bee1f63aa3ddd659d0d319c Mon Sep 17 00:00:00 2001
+From: Vikram Pandita <vikram.pandita@ti.com>
+Date: Thu, 20 Aug 2009 16:58:42 -0500
+Subject: [PATCH 2/5] OMAP1/2/3/4: Adapt board files for cleand DEBUG_LL interface
+
+This patch assigns the physical address of debug uart as defined
+in menucoinfig item CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR to phys_io
+
+The virtual address for io_pg_offset is calculated as per static
+mapping
+
+CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR is a hex value and for boards
+like Zoom2, the phy address can be zero, in case debug board
+is not attached.
+
+Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
+---
+ arch/arm/mach-omap2/board-2430sdp.c | 4 ++--
+ arch/arm/mach-omap2/board-3430sdp.c | 4 ++--
+ arch/arm/mach-omap2/board-4430sdp.c | 4 ++--
+ arch/arm/mach-omap2/board-apollon.c | 4 ++--
+ arch/arm/mach-omap2/board-generic.c | 4 ++--
+ arch/arm/mach-omap2/board-h4.c | 4 ++--
+ arch/arm/mach-omap2/board-ldp.c | 4 ++--
+ arch/arm/mach-omap2/board-n8x0.c | 12 ++++++------
+ arch/arm/mach-omap2/board-omap3beagle.c | 4 ++--
+ arch/arm/mach-omap2/board-omap3evm.c | 4 ++--
+ arch/arm/mach-omap2/board-omap3pandora.c | 4 ++--
+ arch/arm/mach-omap2/board-overo.c | 4 ++--
+ arch/arm/mach-omap2/board-rx51.c | 4 ++--
+ arch/arm/mach-omap2/board-zoom2.c | 4 ++--
+ 14 files changed, 32 insertions(+), 32 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c
+index c693668..9ed2f2c 100644
+--- a/arch/arm/mach-omap2/board-2430sdp.c
++++ b/arch/arm/mach-omap2/board-2430sdp.c
+@@ -225,8 +225,8 @@ static void __init omap_2430sdp_map_io(void)
+
+ MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
+ /* Maintainer: Syed Khasim - Texas Instruments Inc */
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap_2430sdp_map_io,
+ .init_irq = omap_2430sdp_init_irq,
+diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
+index c71417f..f085eee 100644
+--- a/arch/arm/mach-omap2/board-3430sdp.c
++++ b/arch/arm/mach-omap2/board-3430sdp.c
+@@ -505,8 +505,8 @@ static void __init omap_3430sdp_map_io(void)
+
+ MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
+ /* Maintainer: Syed Khasim - Texas Instruments Inc */
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap_3430sdp_map_io,
+ .init_irq = omap_3430sdp_init_irq,
+diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
+index 646079f..4c1a166 100644
+--- a/arch/arm/mach-omap2/board-4430sdp.c
++++ b/arch/arm/mach-omap2/board-4430sdp.c
+@@ -83,8 +83,8 @@ static void __init omap_4430sdp_map_io(void)
+
+ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
+ /* Maintainer: Santosh Shilimkar - Texas Instruments Inc */
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap_4430sdp_map_io,
+ .init_irq = omap_4430sdp_init_irq,
+diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c
+index e2947fd..61da659 100644
+--- a/arch/arm/mach-omap2/board-apollon.c
++++ b/arch/arm/mach-omap2/board-apollon.c
+@@ -336,8 +336,8 @@ static void __init omap_apollon_map_io(void)
+
+ MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")
+ /* Maintainer: Kyungmin Park <kyungmin.park@samsung.com> */
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap_apollon_map_io,
+ .init_irq = omap_apollon_init_irq,
+diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
+index fc9eccb..6d39eaa 100644
+--- a/arch/arm/mach-omap2/board-generic.c
++++ b/arch/arm/mach-omap2/board-generic.c
+@@ -59,8 +59,8 @@ static void __init omap_generic_map_io(void)
+
+ MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx")
+ /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR - OMAP1_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap_generic_map_io,
+ .init_irq = omap_generic_init_irq,
+diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
+index 7eda321..4ce760f 100644
+--- a/arch/arm/mach-omap2/board-h4.c
++++ b/arch/arm/mach-omap2/board-h4.c
+@@ -379,8 +379,8 @@ static void __init omap_h4_map_io(void)
+
+ MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
+ /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap_h4_map_io,
+ .init_irq = omap_h4_init_irq,
+diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
+index 4a4b300..5f06434 100644
+--- a/arch/arm/mach-omap2/board-ldp.c
++++ b/arch/arm/mach-omap2/board-ldp.c
+@@ -398,8 +398,8 @@ static void __init omap_ldp_map_io(void)
+ }
+
+ MACHINE_START(OMAP_LDP, "OMAP LDP board")
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap_ldp_map_io,
+ .init_irq = omap_ldp_init_irq,
+diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
+index af6fcee..464b432 100644
+--- a/arch/arm/mach-omap2/board-n8x0.c
++++ b/arch/arm/mach-omap2/board-n8x0.c
+@@ -125,8 +125,8 @@ static void __init n8x0_init_machine(void)
+ }
+
+ MACHINE_START(NOKIA_N800, "Nokia N800")
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = n8x0_map_io,
+ .init_irq = n8x0_init_irq,
+@@ -135,8 +135,8 @@ MACHINE_START(NOKIA_N800, "Nokia N800")
+ MACHINE_END
+
+ MACHINE_START(NOKIA_N810, "Nokia N810")
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = n8x0_map_io,
+ .init_irq = n8x0_init_irq,
+@@ -145,8 +145,8 @@ MACHINE_START(NOKIA_N810, "Nokia N810")
+ MACHINE_END
+
+ MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = n8x0_map_io,
+ .init_irq = n8x0_init_irq,
+diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
+index 07aee90..4d30948 100644
+--- a/arch/arm/mach-omap2/board-omap3beagle.c
++++ b/arch/arm/mach-omap2/board-omap3beagle.c
+@@ -428,8 +428,8 @@ static void __init omap3_beagle_map_io(void)
+
+ MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
+ /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap3_beagle_map_io,
+ .init_irq = omap3_beagle_init_irq,
+diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
+index c0cb29d..8f24dd6 100644
+--- a/arch/arm/mach-omap2/board-omap3evm.c
++++ b/arch/arm/mach-omap2/board-omap3evm.c
+@@ -324,8 +324,8 @@ static void __init omap3_evm_map_io(void)
+
+ MACHINE_START(OMAP3EVM, "OMAP3 EVM")
+ /* Maintainer: Syed Mohammed Khasim - Texas Instruments */
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap3_evm_map_io,
+ .init_irq = omap3_evm_init_irq,
+diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
+index 1991f19..05d1994 100644
+--- a/arch/arm/mach-omap2/board-omap3pandora.c
++++ b/arch/arm/mach-omap2/board-omap3pandora.c
+@@ -412,8 +412,8 @@ static void __init omap3pandora_map_io(void)
+ }
+
+ MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap3pandora_map_io,
+ .init_irq = omap3pandora_init_irq,
+diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
+index a9d7c2e..4057a1b 100644
+--- a/arch/arm/mach-omap2/board-overo.c
++++ b/arch/arm/mach-omap2/board-overo.c
+@@ -454,8 +454,8 @@ static void __init overo_map_io(void)
+ }
+
+ MACHINE_START(OVERO, "Gumstix Overo")
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = overo_map_io,
+ .init_irq = overo_init_irq,
+diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
+index 8a3dc61..4b97fe8 100644
+--- a/arch/arm/mach-omap2/board-rx51.c
++++ b/arch/arm/mach-omap2/board-rx51.c
+@@ -88,8 +88,8 @@ static void __init rx51_map_io(void)
+
+ MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
+ /* Maintainer: Lauri Leukkunen <lauri.leukkunen@nokia.com> */
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = rx51_map_io,
+ .init_irq = rx51_init_irq,
+diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c
+index 4d295d5..58baee3 100644
+--- a/arch/arm/mach-omap2/board-zoom2.c
++++ b/arch/arm/mach-omap2/board-zoom2.c
+@@ -280,8 +280,8 @@ static void __init omap_zoom2_map_io(void)
+ }
+
+ MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
+- .phys_io = 0x48000000,
+- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
++ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
++ .io_pg_offst = ((ZOOM2_EXT_QUART_VIRT) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap_zoom2_map_io,
+ .init_irq = omap_zoom2_init_irq,
+--
+1.6.3.2
+
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
+
diff --git a/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0005-OMAP-Zoom2-Release-Dbg-board-detect-gpio.patch b/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0005-OMAP-Zoom2-Release-Dbg-board-detect-gpio.patch
new file mode 100644
index 0000000000..a01f65f890
--- /dev/null
+++ b/meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0005-OMAP-Zoom2-Release-Dbg-board-detect-gpio.patch
@@ -0,0 +1,41 @@
+From 04c8398ae7dfdbe0d9aaf27fdda35f6ab91e8b85 Mon Sep 17 00:00:00 2001
+From: Vikram Pandita <vikram.pandita@ti.com>
+Date: Thu, 20 Aug 2009 17:31:58 -0500
+Subject: [PATCH 5/5] OMAP: Zoom2: Release Dbg board detect gpio
+
+Release the Dbg board detection gpio once its purpose is served
+
+Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
+---
+ arch/arm/mach-omap2/board-zoom-debugboard.c | 7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/board-zoom-debugboard.c b/arch/arm/mach-omap2/board-zoom-debugboard.c
+index 4dd714d..d80e448 100644
+--- a/arch/arm/mach-omap2/board-zoom-debugboard.c
++++ b/arch/arm/mach-omap2/board-zoom-debugboard.c
+@@ -130,6 +130,7 @@ static inline void __init zoom2_init_quaduart(void)
+ static inline int omap_zoom2_debugboard_detect(void)
+ {
+ int debug_board_detect = 0;
++ int ret = 1;
+
+ debug_board_detect = ZOOM2_SMSC911X_GPIO;
+
+@@ -141,10 +142,10 @@ static inline int omap_zoom2_debugboard_detect(void)
+ gpio_direction_input(debug_board_detect);
+
+ if (!gpio_get_value(debug_board_detect)) {
+- gpio_free(debug_board_detect);
+- return 0;
++ ret = 0;
+ }
+- return 1;
++ gpio_free(debug_board_detect);
++ return ret;
+ }
+
+ static struct platform_device *zoom2_devices[] __initdata = {
+--
+1.6.3.2
+