diff options
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap3-pm-git')
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 + |