diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-msm/Kconfig | 24 | ||||
-rw-r--r-- | arch/arm/mach-msm/include/mach/debug-macro.S | 24 | ||||
-rw-r--r-- | arch/arm/mach-msm/include/mach/msm_iomap.h | 12 | ||||
-rw-r--r-- | arch/arm/mach-msm/include/mach/uncompress.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-msm/io.c | 3 |
5 files changed, 63 insertions, 7 deletions
diff --git a/arch/arm/mach-msm/Kconfig b/arch/arm/mach-msm/Kconfig index d140abca690a..35f2a90a2afe 100644 --- a/arch/arm/mach-msm/Kconfig +++ b/arch/arm/mach-msm/Kconfig | |||
@@ -3,6 +3,30 @@ if ARCH_MSM | |||
3 | comment "MSM Board Type" | 3 | comment "MSM Board Type" |
4 | depends on ARCH_MSM | 4 | depends on ARCH_MSM |
5 | 5 | ||
6 | config MSM_DEBUG_UART | ||
7 | int | ||
8 | default 1 if MSM_DEBUG_UART1 | ||
9 | default 2 if MSM_DEBUG_UART2 | ||
10 | default 3 if MSM_DEBUG_UART3 | ||
11 | |||
12 | choice | ||
13 | prompt "Debug UART" | ||
14 | |||
15 | default MSM_DEBUG_UART_NONE | ||
16 | |||
17 | config MSM_DEBUG_UART_NONE | ||
18 | bool "None" | ||
19 | |||
20 | config MSM_DEBUG_UART1 | ||
21 | bool "UART1" | ||
22 | |||
23 | config MSM_DEBUG_UART2 | ||
24 | bool "UART2" | ||
25 | |||
26 | config MSM_DEBUG_UART3 | ||
27 | bool "UART3" | ||
28 | endchoice | ||
29 | |||
6 | config MACH_HALIBUT | 30 | config MACH_HALIBUT |
7 | depends on ARCH_MSM | 31 | depends on ARCH_MSM |
8 | default y | 32 | default y |
diff --git a/arch/arm/mach-msm/include/mach/debug-macro.S b/arch/arm/mach-msm/include/mach/debug-macro.S index 1db3c97dbc49..d48747ebcd3d 100644 --- a/arch/arm/mach-msm/include/mach/debug-macro.S +++ b/arch/arm/mach-msm/include/mach/debug-macro.S | |||
@@ -14,15 +14,18 @@ | |||
14 | * | 14 | * |
15 | */ | 15 | */ |
16 | 16 | ||
17 | |||
18 | |||
17 | #include <mach/hardware.h> | 19 | #include <mach/hardware.h> |
18 | #include <mach/msm_iomap.h> | 20 | #include <mach/msm_iomap.h> |
19 | 21 | ||
22 | #ifdef CONFIG_MSM_DEBUG_UART | ||
20 | .macro addruart,rx | 23 | .macro addruart,rx |
21 | @ see if the MMU is enabled and select appropriate base address | 24 | @ see if the MMU is enabled and select appropriate base address |
22 | mrc p15, 0, \rx, c1, c0 | 25 | mrc p15, 0, \rx, c1, c0 |
23 | tst \rx, #1 | 26 | tst \rx, #1 |
24 | ldreq \rx, =MSM_UART1_PHYS | 27 | ldreq \rx, =MSM_DEBUG_UART_PHYS |
25 | movne \rx, #0 | 28 | ldrne \rx, =MSM_DEBUG_UART_BASE |
26 | .endm | 29 | .endm |
27 | 30 | ||
28 | .macro senduart,rd,rx | 31 | .macro senduart,rd,rx |
@@ -32,13 +35,20 @@ | |||
32 | 35 | ||
33 | .macro waituart,rd,rx | 36 | .macro waituart,rd,rx |
34 | @ wait for TX_READY | 37 | @ wait for TX_READY |
35 | teq \rx, #0 | 38 | 1001: ldr \rd, [\rx, #0x08] |
36 | bne 2f | ||
37 | 1: ldr \rd, [\rx, #0x08] | ||
38 | tst \rd, #0x04 | 39 | tst \rd, #0x04 |
39 | beq 1b | 40 | beq 1001b |
40 | 2: | 41 | .endm |
42 | #else | ||
43 | .macro addruart,rx | ||
44 | .endm | ||
45 | |||
46 | .macro senduart,rd,rx | ||
47 | .endm | ||
48 | |||
49 | .macro waituart,rd,rx | ||
41 | .endm | 50 | .endm |
51 | #endif | ||
42 | 52 | ||
43 | .macro busyuart,rd,rx | 53 | .macro busyuart,rd,rx |
44 | .endm | 54 | .endm |
diff --git a/arch/arm/mach-msm/include/mach/msm_iomap.h b/arch/arm/mach-msm/include/mach/msm_iomap.h index 2f7b4c8620d9..9dae1a98c77a 100644 --- a/arch/arm/mach-msm/include/mach/msm_iomap.h +++ b/arch/arm/mach-msm/include/mach/msm_iomap.h | |||
@@ -84,6 +84,18 @@ | |||
84 | #define MSM_UART3_PHYS 0xA9C00000 | 84 | #define MSM_UART3_PHYS 0xA9C00000 |
85 | #define MSM_UART3_SIZE SZ_4K | 85 | #define MSM_UART3_SIZE SZ_4K |
86 | 86 | ||
87 | #ifdef CONFIG_MSM_DEBUG_UART | ||
88 | #define MSM_DEBUG_UART_BASE 0xE1000000 | ||
89 | #if CONFIG_MSM_DEBUG_UART == 1 | ||
90 | #define MSM_DEBUG_UART_PHYS MSM_UART1_PHYS | ||
91 | #elif CONFIG_MSM_DEBUG_UART == 2 | ||
92 | #define MSM_DEBUG_UART_PHYS MSM_UART2_PHYS | ||
93 | #elif CONFIG_MSM_DEBUG_UART == 3 | ||
94 | #define MSM_DEBUG_UART_PHYS MSM_UART3_PHYS | ||
95 | #endif | ||
96 | #define MSM_DEBUG_UART_SIZE SZ_4K | ||
97 | #endif | ||
98 | |||
87 | #define MSM_SDC1_PHYS 0xA0400000 | 99 | #define MSM_SDC1_PHYS 0xA0400000 |
88 | #define MSM_SDC1_SIZE SZ_4K | 100 | #define MSM_SDC1_SIZE SZ_4K |
89 | 101 | ||
diff --git a/arch/arm/mach-msm/include/mach/uncompress.h b/arch/arm/mach-msm/include/mach/uncompress.h index 026e8955ace9..d94292c29d8e 100644 --- a/arch/arm/mach-msm/include/mach/uncompress.h +++ b/arch/arm/mach-msm/include/mach/uncompress.h | |||
@@ -16,9 +16,16 @@ | |||
16 | #ifndef __ASM_ARCH_MSM_UNCOMPRESS_H | 16 | #ifndef __ASM_ARCH_MSM_UNCOMPRESS_H |
17 | 17 | ||
18 | #include "hardware.h" | 18 | #include "hardware.h" |
19 | #include "linux/io.h" | ||
20 | #include "mach/msm_iomap.h" | ||
19 | 21 | ||
20 | static void putc(int c) | 22 | static void putc(int c) |
21 | { | 23 | { |
24 | #if defined(MSM_DEBUG_UART_PHYS) | ||
25 | unsigned base = MSM_DEBUG_UART_PHYS; | ||
26 | while (!(readl(base + 0x08) & 0x04)) ; | ||
27 | writel(c, base + 0x0c); | ||
28 | #endif | ||
22 | } | 29 | } |
23 | 30 | ||
24 | static inline void flush(void) | 31 | static inline void flush(void) |
diff --git a/arch/arm/mach-msm/io.c b/arch/arm/mach-msm/io.c index 6e7692ff6f2c..1c5e7dac086f 100644 --- a/arch/arm/mach-msm/io.c +++ b/arch/arm/mach-msm/io.c | |||
@@ -42,6 +42,9 @@ static struct map_desc msm_io_desc[] __initdata = { | |||
42 | MSM_DEVICE(GPIO1), | 42 | MSM_DEVICE(GPIO1), |
43 | MSM_DEVICE(GPIO2), | 43 | MSM_DEVICE(GPIO2), |
44 | MSM_DEVICE(CLK_CTL), | 44 | MSM_DEVICE(CLK_CTL), |
45 | #ifdef CONFIG_MSM_DEBUG_UART | ||
46 | MSM_DEVICE(DEBUG_UART), | ||
47 | #endif | ||
45 | { | 48 | { |
46 | .virtual = (unsigned long) MSM_SHARED_RAM_BASE, | 49 | .virtual = (unsigned long) MSM_SHARED_RAM_BASE, |
47 | .pfn = __phys_to_pfn(MSM_SHARED_RAM_PHYS), | 50 | .pfn = __phys_to_pfn(MSM_SHARED_RAM_PHYS), |