diff options
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0001-OMAP1-2-3-4-DEBUG_LL-cleanup.patch')
-rw-r--r-- | meta/recipes-kernel/linux/linux-omap3-pm-git/zoom2/0001-OMAP1-2-3-4-DEBUG_LL-cleanup.patch | 217 |
1 files changed, 217 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 + |