Skip to content

Commit

Permalink
msm: make debugging UART (for DEBUG_LL) configurable
Browse files Browse the repository at this point in the history
Provides options to select one of the three "lowspeed" UARTs
on MSM7k SoCs for DEBUG_LL output from the zImage decompressor
and kernel.

Signed-off-by: Brian Swetland <swetland@google.com>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Daniel Walker <dwalker@codeaurora.org>
  • Loading branch information
Pavel Machek authored and Daniel Walker committed Nov 20, 2009
1 parent 333a074 commit 6339f66
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 7 deletions.
24 changes: 24 additions & 0 deletions arch/arm/mach-msm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,30 @@ if ARCH_MSM
comment "MSM Board Type"
depends on ARCH_MSM

config MSM_DEBUG_UART
int
default 1 if MSM_DEBUG_UART1
default 2 if MSM_DEBUG_UART2
default 3 if MSM_DEBUG_UART3

choice
prompt "Debug UART"

default MSM_DEBUG_UART_NONE

config MSM_DEBUG_UART_NONE
bool "None"

config MSM_DEBUG_UART1
bool "UART1"

config MSM_DEBUG_UART2
bool "UART2"

config MSM_DEBUG_UART3
bool "UART3"
endchoice

config MACH_HALIBUT
depends on ARCH_MSM
default y
Expand Down
24 changes: 17 additions & 7 deletions arch/arm/mach-msm/include/mach/debug-macro.S
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,18 @@
*
*/



#include <mach/hardware.h>
#include <mach/msm_iomap.h>

#ifdef CONFIG_MSM_DEBUG_UART
.macro addruart,rx
@ see if the MMU is enabled and select appropriate base address
mrc p15, 0, \rx, c1, c0
tst \rx, #1
ldreq \rx, =MSM_UART1_PHYS
movne \rx, #0
ldreq \rx, =MSM_DEBUG_UART_PHYS
ldrne \rx, =MSM_DEBUG_UART_BASE
.endm

.macro senduart,rd,rx
Expand All @@ -32,13 +35,20 @@

.macro waituart,rd,rx
@ wait for TX_READY
teq \rx, #0
bne 2f
1: ldr \rd, [\rx, #0x08]
1001: ldr \rd, [\rx, #0x08]
tst \rd, #0x04
beq 1b
2:
beq 1001b
.endm
#else
.macro addruart,rx
.endm

.macro senduart,rd,rx
.endm

.macro waituart,rd,rx
.endm
#endif

.macro busyuart,rd,rx
.endm
12 changes: 12 additions & 0 deletions arch/arm/mach-msm/include/mach/msm_iomap.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,18 @@
#define MSM_UART3_PHYS 0xA9C00000
#define MSM_UART3_SIZE SZ_4K

#ifdef CONFIG_MSM_DEBUG_UART
#define MSM_DEBUG_UART_BASE 0xE1000000
#if CONFIG_MSM_DEBUG_UART == 1
#define MSM_DEBUG_UART_PHYS MSM_UART1_PHYS
#elif CONFIG_MSM_DEBUG_UART == 2
#define MSM_DEBUG_UART_PHYS MSM_UART2_PHYS
#elif CONFIG_MSM_DEBUG_UART == 3
#define MSM_DEBUG_UART_PHYS MSM_UART3_PHYS
#endif
#define MSM_DEBUG_UART_SIZE SZ_4K
#endif

#define MSM_SDC1_PHYS 0xA0400000
#define MSM_SDC1_SIZE SZ_4K

Expand Down
7 changes: 7 additions & 0 deletions arch/arm/mach-msm/include/mach/uncompress.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,16 @@
#ifndef __ASM_ARCH_MSM_UNCOMPRESS_H

#include "hardware.h"
#include "linux/io.h"
#include "mach/msm_iomap.h"

static void putc(int c)
{
#if defined(MSM_DEBUG_UART_PHYS)
unsigned base = MSM_DEBUG_UART_PHYS;
while (!(readl(base + 0x08) & 0x04)) ;
writel(c, base + 0x0c);
#endif
}

static inline void flush(void)
Expand Down
3 changes: 3 additions & 0 deletions arch/arm/mach-msm/io.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ static struct map_desc msm_io_desc[] __initdata = {
MSM_DEVICE(GPIO1),
MSM_DEVICE(GPIO2),
MSM_DEVICE(CLK_CTL),
#ifdef CONFIG_MSM_DEBUG_UART
MSM_DEVICE(DEBUG_UART),
#endif
{
.virtual = (unsigned long) MSM_SHARED_RAM_BASE,
.pfn = __phys_to_pfn(MSM_SHARED_RAM_PHYS),
Expand Down

0 comments on commit 6339f66

Please sign in to comment.