summaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/linux/linux-omap3-pm-git
diff options
context:
space:
mode:
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 @@
1From 51f967864f0e30225c8a8e50e0bbaf92258c0032 Mon Sep 17 00:00:00 2001
2From: Vikram Pandita <vikram.pandita@ti.com>
3Date: Thu, 20 Aug 2009 16:13:20 -0500
4Subject: [PATCH 1/5] OMAP1/2/3/4: DEBUG_LL: cleanup
5
6This patch cleans up the DEBUG_LL infrastructure for omap boards.
7
8The three stages of log printing infrastructure is using their own #defines
9The patch integrates the three stages to use the same variable.
10
11Three stages are:
12Stage 1: Prints - Uncompressing Linux......
13 File getting used: arch/arm/plat-omap/include/mach/uncompress.h
14Stage 2: Prints - <5>Linux version 2.6.31
15 File getting used: arch/arm/plat-omap/include/mach/debug-macro.S
16Stage 3: Kernel ttyS console takes over
17
18On enabling the DEBUG_LL menuconfig item
19[Kernel Hacking -> Kernel low-level debugging functions]
20
21the following entry gets auto selected
22[Systerm Type -> TI OMAP Implementations -> Low-level Debug console UART]
23
24This is the physical address of the UART getting used for the board.
25The physical address of debug uart is provided as a menuconfig option now.
26
27Issue with current system:
28(a) Zoom2 board has a detachable debug board having the TL16CP754 Quad uart chip.
29If the debug board is not attached, _NO_ debug uart is available.
30OMAP internal uarts are not used for traces on zoom2 board.
31Current framework does not account for boards that may not have a debug uart
32at all. The Stage 1 always accesses one of the uarts. Thats fixed now.
33
34(b) this patch does a cleanup of arch/arm/plat-omap/include/mach/debug-macro.S
35
36Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
37---
38 arch/arm/plat-omap/Kconfig | 50 ++++++++++++++++++-------
39 arch/arm/plat-omap/include/mach/common.h | 7 +++
40 arch/arm/plat-omap/include/mach/debug-macro.S | 40 ++++----------------
41 arch/arm/plat-omap/include/mach/uncompress.h | 12 +----
42 4 files changed, 54 insertions(+), 55 deletions(-)
43
44diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
45index ab9f9ef..2fefb64 100644
46--- a/arch/arm/plat-omap/Kconfig
47+++ b/arch/arm/plat-omap/Kconfig
48@@ -162,21 +162,43 @@ config OMAP_DM_TIMER
49 help
50 Select this option if you want to use OMAP Dual-Mode timers.
51
52-choice
53- prompt "Low-level debug console UART"
54- depends on ARCH_OMAP
55- default OMAP_LL_DEBUG_UART1
56-
57-config OMAP_LL_DEBUG_UART1
58- bool "UART1"
59-
60-config OMAP_LL_DEBUG_UART2
61- bool "UART2"
62
63-config OMAP_LL_DEBUG_UART3
64- bool "UART3"
65-
66-endchoice
67+config OMAP_DEBUG_LL_UART_PHY_ADDR
68+ hex "Low-level debug console UART Physical Address"
69+ depends on ARCH_OMAP && DEBUG_LL
70+
71+ default "0xfffb0800" if ARCH_OMAP1 && (MACH_OMAP_PALMTT || MACH_SX1)
72+ default "0xfffb0000" if ARCH_OMAP1
73+ default "0x4806e000" if ARCH_OMAP2 && MACH_NOKIA_N8X0
74+ default "0x4806a000" if ARCH_OMAP2
75+ default "0x49020000" if ARCH_OMAP3 && (MACH_NOKIA_RX51 || MACH_OMAP_BEAGLE)
76+ default "0x49020000" if ARCH_OMAP3 && (MACH_OMAP3_PANDORA || MACH_OMAP_LDP || MACH_OVERO)
77+ default "0x10000000" if ARCH_OMAP3 && MACH_OMAP_ZOOM2
78+ default "0x4806a000" if ARCH_OMAP3
79+ default "0x4806a000" if ARCH_OMAP4
80+ help
81+ Specify the Physical address of Low level debug UART
82+ Specify 0x0 in case you do not want DEBUG_LL functions to iterfere with your board uarts
83+
84+ OMAP1:
85+ -------------------
86+ UART1 -> 0xfffb0000 (default)
87+ UART2 -> 0xfffb0800
88+ UART3 -> 0xfffb9800 (sx1, palmtt)
89+
90+ OMAP2:
91+ -------------------
92+ UART1 -> 0x4806a000 (default)
93+ UART2 -> 0x4806c000
94+ UART3 -> 0x4806e000 (N8X0)
95+
96+ OMAP3/4:
97+ -------------------
98+ UART1 -> 0x4806a000 (default: except following)
99+ UART2 -> 0x4806c000
100+ UART3 -> 0x49020000 (rx51, beagle, pendora, ldp, overo)
101+ UART4 -> 0x4806e000
102+ UART_EXT -> 0x10000000 (zoom2: Debug uart is on external debug board)
103
104 config OMAP_SERIAL_WAKE
105 bool "Enable wake-up events for serial ports"
106diff --git a/arch/arm/plat-omap/include/mach/common.h b/arch/arm/plat-omap/include/mach/common.h
107index fdeab42..f29d31f 100644
108--- a/arch/arm/plat-omap/include/mach/common.h
109+++ b/arch/arm/plat-omap/include/mach/common.h
110@@ -68,4 +68,11 @@ void omap2_set_globals_sdrc(struct omap_globals *);
111 void omap2_set_globals_control(struct omap_globals *);
112 void omap2_set_globals_prcm(struct omap_globals *);
113
114+/* In case Low Level debug is not defined
115+ * make the low level uart address as zero
116+ */
117+#if !defined(CONFIG_DEBUG_LL)
118+#define CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR 0
119+#endif
120+
121 #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */
122diff --git a/arch/arm/plat-omap/include/mach/debug-macro.S b/arch/arm/plat-omap/include/mach/debug-macro.S
123index ac24050..f546d6c 100644
124--- a/arch/arm/plat-omap/include/mach/debug-macro.S
125+++ b/arch/arm/plat-omap/include/mach/debug-macro.S
126@@ -10,43 +10,19 @@
127 * published by the Free Software Foundation.
128 *
129 */
130+#include "io.h"
131
132 .macro addruart,rx
133 mrc p15, 0, \rx, c1, c0
134 tst \rx, #1 @ MMU enabled?
135 #ifdef CONFIG_ARCH_OMAP1
136- moveq \rx, #0xff000000 @ physical base address
137- movne \rx, #0xfe000000 @ virtual base
138- orr \rx, \rx, #0x00fb0000
139-#ifdef CONFIG_OMAP_LL_DEBUG_UART3
140- orr \rx, \rx, #0x00009000 @ UART 3
141-#endif
142-#if defined(CONFIG_OMAP_LL_DEBUG_UART2) || defined(CONFIG_OMAP_LL_DEBUG_UART3)
143- orr \rx, \rx, #0x00000800 @ UART 2 & 3
144-#endif
145-
146-#elif CONFIG_ARCH_OMAP2
147- moveq \rx, #0x48000000 @ physical base address
148- movne \rx, #0xd8000000 @ virtual base
149- orr \rx, \rx, #0x0006a000
150-#ifdef CONFIG_OMAP_LL_DEBUG_UART2
151- add \rx, \rx, #0x00002000 @ UART 2
152-#endif
153-#ifdef CONFIG_OMAP_LL_DEBUG_UART3
154- add \rx, \rx, #0x00004000 @ UART 3
155-#endif
156-
157-#elif defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
158- moveq \rx, #0x48000000 @ physical base address
159- movne \rx, #0xd8000000 @ virtual base
160- orr \rx, \rx, #0x0006a000
161-#ifdef CONFIG_OMAP_LL_DEBUG_UART2
162- add \rx, \rx, #0x00002000 @ UART 2
163-#endif
164-#ifdef CONFIG_OMAP_LL_DEBUG_UART3
165- add \rx, \rx, #0x00fb0000 @ UART 3
166- add \rx, \rx, #0x00006000
167-#endif
168+ /* omap1 */
169+ ldr \rx, =CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR @ physical base address
170+ subne \rx, #CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR, #OMAP1_IO_OFFSET @ virtual base
171+#else
172+ /* omap2/omap3/omap4 */
173+ ldr \rx, =CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR @ physical base address
174+ orrne \rx, \rx, #OMAP2_IO_OFFSET @ virtual base
175 #endif
176 .endm
177
178diff --git a/arch/arm/plat-omap/include/mach/uncompress.h b/arch/arm/plat-omap/include/mach/uncompress.h
179index 0814c5f..0e21eb3 100644
180--- a/arch/arm/plat-omap/include/mach/uncompress.h
181+++ b/arch/arm/plat-omap/include/mach/uncompress.h
182@@ -38,14 +38,8 @@ static void putc(int c)
183 return;
184 #endif
185
186-#ifdef CONFIG_ARCH_OMAP
187-#ifdef CONFIG_OMAP_LL_DEBUG_UART3
188- uart = (volatile u8 *)(OMAP_UART3_BASE);
189-#elif defined(CONFIG_OMAP_LL_DEBUG_UART2)
190- uart = (volatile u8 *)(OMAP_UART2_BASE);
191-#else
192- uart = (volatile u8 *)(OMAP_UART1_BASE);
193-#endif
194+#if defined(CONFIG_DEBUG_LL)
195+ uart = (volatile u8 *)(CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR);
196
197 #ifdef CONFIG_ARCH_OMAP1
198 /* Determine which serial port to use */
199@@ -62,7 +56,6 @@ static void putc(int c)
200 return;
201 } while (0);
202 #endif /* CONFIG_ARCH_OMAP1 */
203-#endif
204
205 /*
206 * Now, xmit each character
207@@ -70,6 +63,7 @@ static void putc(int c)
208 while (!(uart[UART_LSR << shift] & UART_LSR_THRE))
209 barrier();
210 uart[UART_TX << shift] = c;
211+#endif /* CONFIG_DEBUG_LL */
212 }
213
214 static inline void flush(void)
215--
2161.6.3.2
217
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 @@
1From 533dc09b3515211d6bee1f63aa3ddd659d0d319c Mon Sep 17 00:00:00 2001
2From: Vikram Pandita <vikram.pandita@ti.com>
3Date: Thu, 20 Aug 2009 16:58:42 -0500
4Subject: [PATCH 2/5] OMAP1/2/3/4: Adapt board files for cleand DEBUG_LL interface
5
6This patch assigns the physical address of debug uart as defined
7in menucoinfig item CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR to phys_io
8
9The virtual address for io_pg_offset is calculated as per static
10mapping
11
12CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR is a hex value and for boards
13like Zoom2, the phy address can be zero, in case debug board
14is not attached.
15
16Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
17---
18 arch/arm/mach-omap2/board-2430sdp.c | 4 ++--
19 arch/arm/mach-omap2/board-3430sdp.c | 4 ++--
20 arch/arm/mach-omap2/board-4430sdp.c | 4 ++--
21 arch/arm/mach-omap2/board-apollon.c | 4 ++--
22 arch/arm/mach-omap2/board-generic.c | 4 ++--
23 arch/arm/mach-omap2/board-h4.c | 4 ++--
24 arch/arm/mach-omap2/board-ldp.c | 4 ++--
25 arch/arm/mach-omap2/board-n8x0.c | 12 ++++++------
26 arch/arm/mach-omap2/board-omap3beagle.c | 4 ++--
27 arch/arm/mach-omap2/board-omap3evm.c | 4 ++--
28 arch/arm/mach-omap2/board-omap3pandora.c | 4 ++--
29 arch/arm/mach-omap2/board-overo.c | 4 ++--
30 arch/arm/mach-omap2/board-rx51.c | 4 ++--
31 arch/arm/mach-omap2/board-zoom2.c | 4 ++--
32 14 files changed, 32 insertions(+), 32 deletions(-)
33
34diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c
35index c693668..9ed2f2c 100644
36--- a/arch/arm/mach-omap2/board-2430sdp.c
37+++ b/arch/arm/mach-omap2/board-2430sdp.c
38@@ -225,8 +225,8 @@ static void __init omap_2430sdp_map_io(void)
39
40 MACHINE_START(OMAP_2430SDP, "OMAP2430 sdp2430 board")
41 /* Maintainer: Syed Khasim - Texas Instruments Inc */
42- .phys_io = 0x48000000,
43- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
44+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
45+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
46 .boot_params = 0x80000100,
47 .map_io = omap_2430sdp_map_io,
48 .init_irq = omap_2430sdp_init_irq,
49diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c
50index c71417f..f085eee 100644
51--- a/arch/arm/mach-omap2/board-3430sdp.c
52+++ b/arch/arm/mach-omap2/board-3430sdp.c
53@@ -505,8 +505,8 @@ static void __init omap_3430sdp_map_io(void)
54
55 MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
56 /* Maintainer: Syed Khasim - Texas Instruments Inc */
57- .phys_io = 0x48000000,
58- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
59+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
60+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
61 .boot_params = 0x80000100,
62 .map_io = omap_3430sdp_map_io,
63 .init_irq = omap_3430sdp_init_irq,
64diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
65index 646079f..4c1a166 100644
66--- a/arch/arm/mach-omap2/board-4430sdp.c
67+++ b/arch/arm/mach-omap2/board-4430sdp.c
68@@ -83,8 +83,8 @@ static void __init omap_4430sdp_map_io(void)
69
70 MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
71 /* Maintainer: Santosh Shilimkar - Texas Instruments Inc */
72- .phys_io = 0x48000000,
73- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
74+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
75+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
76 .boot_params = 0x80000100,
77 .map_io = omap_4430sdp_map_io,
78 .init_irq = omap_4430sdp_init_irq,
79diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c
80index e2947fd..61da659 100644
81--- a/arch/arm/mach-omap2/board-apollon.c
82+++ b/arch/arm/mach-omap2/board-apollon.c
83@@ -336,8 +336,8 @@ static void __init omap_apollon_map_io(void)
84
85 MACHINE_START(OMAP_APOLLON, "OMAP24xx Apollon")
86 /* Maintainer: Kyungmin Park <kyungmin.park@samsung.com> */
87- .phys_io = 0x48000000,
88- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
89+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
90+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
91 .boot_params = 0x80000100,
92 .map_io = omap_apollon_map_io,
93 .init_irq = omap_apollon_init_irq,
94diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
95index fc9eccb..6d39eaa 100644
96--- a/arch/arm/mach-omap2/board-generic.c
97+++ b/arch/arm/mach-omap2/board-generic.c
98@@ -59,8 +59,8 @@ static void __init omap_generic_map_io(void)
99
100 MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx")
101 /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */
102- .phys_io = 0x48000000,
103- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
104+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
105+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR - OMAP1_IO_OFFSET) >> 18) & 0xfffc,
106 .boot_params = 0x80000100,
107 .map_io = omap_generic_map_io,
108 .init_irq = omap_generic_init_irq,
109diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
110index 7eda321..4ce760f 100644
111--- a/arch/arm/mach-omap2/board-h4.c
112+++ b/arch/arm/mach-omap2/board-h4.c
113@@ -379,8 +379,8 @@ static void __init omap_h4_map_io(void)
114
115 MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
116 /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */
117- .phys_io = 0x48000000,
118- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
119+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
120+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
121 .boot_params = 0x80000100,
122 .map_io = omap_h4_map_io,
123 .init_irq = omap_h4_init_irq,
124diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
125index 4a4b300..5f06434 100644
126--- a/arch/arm/mach-omap2/board-ldp.c
127+++ b/arch/arm/mach-omap2/board-ldp.c
128@@ -398,8 +398,8 @@ static void __init omap_ldp_map_io(void)
129 }
130
131 MACHINE_START(OMAP_LDP, "OMAP LDP board")
132- .phys_io = 0x48000000,
133- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
134+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
135+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
136 .boot_params = 0x80000100,
137 .map_io = omap_ldp_map_io,
138 .init_irq = omap_ldp_init_irq,
139diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
140index af6fcee..464b432 100644
141--- a/arch/arm/mach-omap2/board-n8x0.c
142+++ b/arch/arm/mach-omap2/board-n8x0.c
143@@ -125,8 +125,8 @@ static void __init n8x0_init_machine(void)
144 }
145
146 MACHINE_START(NOKIA_N800, "Nokia N800")
147- .phys_io = 0x48000000,
148- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
149+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
150+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
151 .boot_params = 0x80000100,
152 .map_io = n8x0_map_io,
153 .init_irq = n8x0_init_irq,
154@@ -135,8 +135,8 @@ MACHINE_START(NOKIA_N800, "Nokia N800")
155 MACHINE_END
156
157 MACHINE_START(NOKIA_N810, "Nokia N810")
158- .phys_io = 0x48000000,
159- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
160+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
161+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
162 .boot_params = 0x80000100,
163 .map_io = n8x0_map_io,
164 .init_irq = n8x0_init_irq,
165@@ -145,8 +145,8 @@ MACHINE_START(NOKIA_N810, "Nokia N810")
166 MACHINE_END
167
168 MACHINE_START(NOKIA_N810_WIMAX, "Nokia N810 WiMAX")
169- .phys_io = 0x48000000,
170- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
171+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
172+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
173 .boot_params = 0x80000100,
174 .map_io = n8x0_map_io,
175 .init_irq = n8x0_init_irq,
176diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
177index 07aee90..4d30948 100644
178--- a/arch/arm/mach-omap2/board-omap3beagle.c
179+++ b/arch/arm/mach-omap2/board-omap3beagle.c
180@@ -428,8 +428,8 @@ static void __init omap3_beagle_map_io(void)
181
182 MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
183 /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
184- .phys_io = 0x48000000,
185- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
186+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
187+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
188 .boot_params = 0x80000100,
189 .map_io = omap3_beagle_map_io,
190 .init_irq = omap3_beagle_init_irq,
191diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
192index c0cb29d..8f24dd6 100644
193--- a/arch/arm/mach-omap2/board-omap3evm.c
194+++ b/arch/arm/mach-omap2/board-omap3evm.c
195@@ -324,8 +324,8 @@ static void __init omap3_evm_map_io(void)
196
197 MACHINE_START(OMAP3EVM, "OMAP3 EVM")
198 /* Maintainer: Syed Mohammed Khasim - Texas Instruments */
199- .phys_io = 0x48000000,
200- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
201+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
202+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
203 .boot_params = 0x80000100,
204 .map_io = omap3_evm_map_io,
205 .init_irq = omap3_evm_init_irq,
206diff --git a/arch/arm/mach-omap2/board-omap3pandora.c b/arch/arm/mach-omap2/board-omap3pandora.c
207index 1991f19..05d1994 100644
208--- a/arch/arm/mach-omap2/board-omap3pandora.c
209+++ b/arch/arm/mach-omap2/board-omap3pandora.c
210@@ -412,8 +412,8 @@ static void __init omap3pandora_map_io(void)
211 }
212
213 MACHINE_START(OMAP3_PANDORA, "Pandora Handheld Console")
214- .phys_io = 0x48000000,
215- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
216+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
217+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
218 .boot_params = 0x80000100,
219 .map_io = omap3pandora_map_io,
220 .init_irq = omap3pandora_init_irq,
221diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
222index a9d7c2e..4057a1b 100644
223--- a/arch/arm/mach-omap2/board-overo.c
224+++ b/arch/arm/mach-omap2/board-overo.c
225@@ -454,8 +454,8 @@ static void __init overo_map_io(void)
226 }
227
228 MACHINE_START(OVERO, "Gumstix Overo")
229- .phys_io = 0x48000000,
230- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
231+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
232+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
233 .boot_params = 0x80000100,
234 .map_io = overo_map_io,
235 .init_irq = overo_init_irq,
236diff --git a/arch/arm/mach-omap2/board-rx51.c b/arch/arm/mach-omap2/board-rx51.c
237index 8a3dc61..4b97fe8 100644
238--- a/arch/arm/mach-omap2/board-rx51.c
239+++ b/arch/arm/mach-omap2/board-rx51.c
240@@ -88,8 +88,8 @@ static void __init rx51_map_io(void)
241
242 MACHINE_START(NOKIA_RX51, "Nokia RX-51 board")
243 /* Maintainer: Lauri Leukkunen <lauri.leukkunen@nokia.com> */
244- .phys_io = 0x48000000,
245- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
246+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
247+ .io_pg_offst = ((CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR + OMAP2_IO_OFFSET) >> 18) & 0xfffc,
248 .boot_params = 0x80000100,
249 .map_io = rx51_map_io,
250 .init_irq = rx51_init_irq,
251diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c
252index 4d295d5..58baee3 100644
253--- a/arch/arm/mach-omap2/board-zoom2.c
254+++ b/arch/arm/mach-omap2/board-zoom2.c
255@@ -280,8 +280,8 @@ static void __init omap_zoom2_map_io(void)
256 }
257
258 MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
259- .phys_io = 0x48000000,
260- .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
261+ .phys_io = CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR,
262+ .io_pg_offst = ((ZOOM2_EXT_QUART_VIRT) >> 18) & 0xfffc,
263 .boot_params = 0x80000100,
264 .map_io = omap_zoom2_map_io,
265 .init_irq = omap_zoom2_init_irq,
266--
2671.6.3.2
268
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 @@
1From 98d46e88ffe23a9adcf6ae1acf19b210d5ac3737 Mon Sep 17 00:00:00 2001
2From: Vikram Pandita <vikram.pandita@ti.com>
3Date: Thu, 20 Aug 2009 17:16:24 -0500
4Subject: [PATCH 3/5] OMAP: Zoom2: Add DEBUG_LL interface using external Quart
5
6This patch adds DEBUG_LL interface for Zoom2 board.
7The low level debug uart now points corrctly to External Quad uart
8controller on detachable debug board.
9
10The Quad uart is available over GPMC chip select with physical address
110x10000000.
12
13This physical address has been mapped to virtual address 0xFB000000
14as per static mapping.
15
16Also the register accesses to Quad uart have a requirement of shift=1
17based on the h/w mapping of the registers
18
19This patch is adapted from a version by Erik Gilling:
20http://android.git.kernel.org/?p=kernel/omap.git;
21a=commit;h=e9d72efdd88877d2d6ea74a08983ace0dcc771d3
22
23Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
24Cc: Erik Gilling <konkers@android.com>
25---
26 arch/arm/mach-omap2/board-zoom-debugboard.c | 5 +++--
27 arch/arm/mach-omap2/board-zoom2.c | 15 +++++++++++++++
28 arch/arm/plat-omap/include/mach/debug-macro.S | 14 ++++++++++++--
29 arch/arm/plat-omap/include/mach/io.h | 6 ++++++
30 arch/arm/plat-omap/include/mach/uncompress.h | 7 +++++++
31 5 files changed, 43 insertions(+), 4 deletions(-)
32
33diff --git a/arch/arm/mach-omap2/board-zoom-debugboard.c b/arch/arm/mach-omap2/board-zoom-debugboard.c
34index f546063..f8b0726 100644
35--- a/arch/arm/mach-omap2/board-zoom-debugboard.c
36+++ b/arch/arm/mach-omap2/board-zoom-debugboard.c
37@@ -82,9 +82,10 @@ static inline void __init zoom2_init_smsc911x(void)
38
39 static struct plat_serial8250_port serial_platform_data[] = {
40 {
41- .mapbase = 0x10000000,
42+ .membase = IOMEM(ZOOM2_EXT_QUART_VIRT),
43+ .mapbase = ZOOM2_EXT_QUART_PHYS,
44 .irq = OMAP_GPIO_IRQ(102),
45- .flags = UPF_BOOT_AUTOCONF|UPF_IOREMAP|UPF_SHARE_IRQ,
46+ .flags = UPF_BOOT_AUTOCONF|UPF_SHARE_IRQ,
47 .irqflags = IRQF_SHARED | IRQF_TRIGGER_RISING,
48 .iotype = UPIO_MEM,
49 .regshift = 1,
50diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c
51index 58baee3..fc27b07 100644
52--- a/arch/arm/mach-omap2/board-zoom2.c
53+++ b/arch/arm/mach-omap2/board-zoom2.c
54@@ -16,9 +16,11 @@
55 #include <linux/gpio.h>
56 #include <linux/i2c/twl4030.h>
57 #include <linux/regulator/machine.h>
58+#include <linux/io.h>
59
60 #include <asm/mach-types.h>
61 #include <asm/mach/arch.h>
62+#include <asm/mach/map.h>
63
64 #include <mach/common.h>
65 #include <mach/usb.h>
66@@ -273,9 +275,22 @@ static void __init omap_zoom2_init(void)
67 usb_musb_init();
68 }
69
70+static struct map_desc zoom2_io_desc[] __initdata = {
71+ {
72+ .virtual = ZOOM2_EXT_QUART_VIRT,
73+ .pfn = __phys_to_pfn(ZOOM2_EXT_QUART_PHYS),
74+ .length = ZOOM2_EXT_QUART_SIZE,
75+ .type = MT_DEVICE
76+ }
77+};
78+
79 static void __init omap_zoom2_map_io(void)
80 {
81 omap2_set_globals_343x();
82+
83+ /* Map external quad UART virt to phy mapping */
84+ iotable_init(zoom2_io_desc, ARRAY_SIZE(zoom2_io_desc));
85+
86 omap2_map_common_io();
87 }
88
89diff --git a/arch/arm/plat-omap/include/mach/debug-macro.S b/arch/arm/plat-omap/include/mach/debug-macro.S
90index f546d6c..a97f2fb 100644
91--- a/arch/arm/plat-omap/include/mach/debug-macro.S
92+++ b/arch/arm/plat-omap/include/mach/debug-macro.S
93@@ -12,6 +12,14 @@
94 */
95 #include "io.h"
96
97+#if (CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR == 0x10000000)
98+#define REGSHIFT 1
99+#define UART_VIRT_TO_PHY_OFFSET ZOOM2_EXT_QUART_PHY_TO_VIRT_OFF
100+#else
101+#define REGSHIFT 2
102+#define UART_VIRT_TO_PHY_OFFSET OMAP2_IO_OFFSET
103+#endif
104+
105 .macro addruart,rx
106 mrc p15, 0, \rx, c1, c0
107 tst \rx, #1 @ MMU enabled?
108@@ -22,7 +30,7 @@
109 #else
110 /* omap2/omap3/omap4 */
111 ldr \rx, =CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR @ physical base address
112- orrne \rx, \rx, #OMAP2_IO_OFFSET @ virtual base
113+ orrne \rx, \rx, #UART_VIRT_TO_PHY_OFFSET @ virtual base
114 #endif
115 .endm
116
117@@ -31,13 +39,15 @@
118 .endm
119
120 .macro busyuart,rd,rx
121-1001: ldrb \rd, [\rx, #(0x5 << 2)] @ OMAP-1510 and friends
122+1001: ldrb \rd, [\rx, #(0x5 << REGSHIFT)] @ OMAP-1510 and friends
123 and \rd, \rd, #0x60
124 teq \rd, #0x60
125+#if (CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR != 0x10000000)
126 beq 1002f
127 ldrb \rd, [\rx, #(0x5 << 0)] @ OMAP-730 only
128 and \rd, \rd, #0x60
129 teq \rd, #0x60
130+#endif
131 bne 1001b
132 1002:
133 .endm
134diff --git a/arch/arm/plat-omap/include/mach/io.h b/arch/arm/plat-omap/include/mach/io.h
135index 8d32df3..97702e6 100644
136--- a/arch/arm/plat-omap/include/mach/io.h
137+++ b/arch/arm/plat-omap/include/mach/io.h
138@@ -169,6 +169,12 @@
139 #define DSP_MMU_34XX_VIRT 0xe2000000
140 #define DSP_MMU_34XX_SIZE SZ_4K
141
142+/* Map External Quad UART for Zoom2 board */
143+#define ZOOM2_EXT_QUART_PHYS 0x10000000 /* PHY address if fixed */
144+#define ZOOM2_EXT_QUART_PHY_TO_VIRT_OFF 0xeb000000
145+#define ZOOM2_EXT_QUART_VIRT 0xfb000000
146+#define ZOOM2_EXT_QUART_SIZE SZ_16
147+
148 /*
149 * ----------------------------------------------------------------------------
150 * Omap4 specific IO mapping
151diff --git a/arch/arm/plat-omap/include/mach/uncompress.h b/arch/arm/plat-omap/include/mach/uncompress.h
152index 0e21eb3..959195a 100644
153--- a/arch/arm/plat-omap/include/mach/uncompress.h
154+++ b/arch/arm/plat-omap/include/mach/uncompress.h
155@@ -41,6 +41,13 @@ static void putc(int c)
156 #if defined(CONFIG_DEBUG_LL)
157 uart = (volatile u8 *)(CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR);
158
159+#if (CONFIG_OMAP_DEBUG_LL_UART_PHY_ADDR == 0x10000000)
160+ /* External UART has a shift=1 requirement
161+ * Internal OMAP UARTs have shift=2 requirement
162+ */
163+ shift = 1;
164+#endif
165+
166 #ifdef CONFIG_ARCH_OMAP1
167 /* Determine which serial port to use */
168 do {
169--
1701.6.3.2
171
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 @@
1From 04c8398ae7dfdbe0d9aaf27fdda35f6ab91e8b85 Mon Sep 17 00:00:00 2001
2From: Vikram Pandita <vikram.pandita@ti.com>
3Date: Thu, 20 Aug 2009 17:31:58 -0500
4Subject: [PATCH 5/5] OMAP: Zoom2: Release Dbg board detect gpio
5
6Release the Dbg board detection gpio once its purpose is served
7
8Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
9---
10 arch/arm/mach-omap2/board-zoom-debugboard.c | 7 ++++---
11 1 files changed, 4 insertions(+), 3 deletions(-)
12
13diff --git a/arch/arm/mach-omap2/board-zoom-debugboard.c b/arch/arm/mach-omap2/board-zoom-debugboard.c
14index 4dd714d..d80e448 100644
15--- a/arch/arm/mach-omap2/board-zoom-debugboard.c
16+++ b/arch/arm/mach-omap2/board-zoom-debugboard.c
17@@ -130,6 +130,7 @@ static inline void __init zoom2_init_quaduart(void)
18 static inline int omap_zoom2_debugboard_detect(void)
19 {
20 int debug_board_detect = 0;
21+ int ret = 1;
22
23 debug_board_detect = ZOOM2_SMSC911X_GPIO;
24
25@@ -141,10 +142,10 @@ static inline int omap_zoom2_debugboard_detect(void)
26 gpio_direction_input(debug_board_detect);
27
28 if (!gpio_get_value(debug_board_detect)) {
29- gpio_free(debug_board_detect);
30- return 0;
31+ ret = 0;
32 }
33- return 1;
34+ gpio_free(debug_board_detect);
35+ return ret;
36 }
37
38 static struct platform_device *zoom2_devices[] __initdata = {
39--
401.6.3.2
41