[RFC: PATCH 4/4] AM335X: Add low level debugging support
Hiremath, Vaibhav
hvaibhav at ti.com
Wed Aug 24 12:42:03 EDT 2011
> -----Original Message-----
> From: Hiremath, Vaibhav
> Sent: Thursday, August 11, 2011 4:01 PM
> To: linux-omap at vger.kernel.org
> Cc: tony at atomide.com; Hilman, Kevin; paul at pwsan.com; linux-arm-
> kernel at lists.infradead.org; Mohammed, Afzal; Hiremath, Vaibhav
> Subject: [RFC: PATCH 4/4] AM335X: Add low level debugging support
>
> From: Afzal Mohammed <afzal at ti.com>
>
> Add support for low level debugging on AM335X EVM. Currently only
> support for UART1 console, which is used on AM335X EVM is added.
>
> Signed-off-by: Afzal Mohammed <afzal at ti.com>
> Signed-off-by: Vaibhav Hiremath <hvaibhav at ti.com>
> ---
> arch/arm/mach-omap2/include/mach/debug-macro.S | 21
> +++++++++++++++++++++
> arch/arm/plat-omap/include/plat/serial.h | 4 ++++
> arch/arm/plat-omap/include/plat/uncompress.h | 6 ++++++
> 3 files changed, 31 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/include/mach/debug-macro.S
> b/arch/arm/mach-omap2/include/mach/debug-macro.S
> index 309e328..a99ddbd 100644
> --- a/arch/arm/mach-omap2/include/mach/debug-macro.S
> +++ b/arch/arm/mach-omap2/include/mach/debug-macro.S
> @@ -78,6 +78,8 @@ omap_uart_lsr: .word 0
> beq 82f @ configure UART2
> cmp \rp, #TI81XXUART3 @ ti81Xx UART offsets different
> beq 83f @ configure UART3
> + cmp \rp, #AM335XUART1 @ AM335X UART offsets different
> + beq 84f @ configure UART1
> cmp \rp, #ZOOM_UART @ only on zoom2/3
> beq 95f @ configure ZOOM_UART
>
> @@ -106,6 +108,8 @@ omap_uart_lsr: .word 0
> b 98f
> 83: mov \rp, #UART_OFFSET(TI81XX_UART3_BASE)
> b 98f
> +84: mov \rp, #UART_OFFSET(AM335X_UART1_BASE)
[Hiremath, Vaibhav] My bad, the above line results into build failure when you enable DEBUG_LL option,
arch/arm/kernel/debug.S: Assembler messages:
arch/arm/kernel/debug.S:138: Error: invalid constant (408) after fixup
arch/arm/kernel/debug.S:157: Error: invalid constant (e09000) after fixup
arch/arm/kernel/debug.S:173: Error: invalid constant (e09000) after fixup
make[1]: *** [arch/arm/kernel/debug.o] Error 1
make: *** [arch/arm/kernel] Error 2
When I submitted the patch, I only tried building it with omap2plus_defconfig and missed to enable DEBUG_LL option.
I have fixed it with following change,
-84: mov \rp, #UART_OFFSET(AM335X_UART1_BASE)
+84: ldr \rp, =AM335X_UART1_BASE
+ and \rp, \rp, #0x00ffffff
This will get merged in next patch version.
Thanks,
Vaibhav
> + b 97f
> 95: ldr \rp, =ZOOM_UART_BASE
> mrc p15, 0, \rv, c1, c0
> tst \rv, #1 @ MMU enabled?
> @@ -121,6 +125,23 @@ omap_uart_lsr: .word 0
> b 10b
>
> /* Store both phys and virt address for the uart */
> +97: add \rp, \rp, #0x44000000 @ phys base
> + mrc p15, 0, \rv, c1, c0
> + tst \rv, #1 @ MMU enabled?
> + ldreq \rv, =omap_uart_v2p(omap_uart_phys) @ MMU disabled
> + ldrne \rv, =omap_uart_phys @ MMU enabled
> + str \rp, [\rv, #0]
> + sub \rp, \rp, #0x44000000 @ phys base
> + add \rp, \rp, #0xf9000000 @ virt base
> + add \rv, \rv, #4 @ omap_uart_virt
> + str \rp, [\rv, #0]
> + mov \rp, #(UART_LSR << OMAP_PORT_SHIFT)
> + add \rv, \rv, #4 @ omap_uart_lsr
> + str \rp, [\rv, #0]
> +
> + b 10b
> +
> + /* Store both phys and virt address for the uart */
> 98: add \rp, \rp, #0x48000000 @ phys base
> mrc p15, 0, \rv, c1, c0
> tst \rv, #1 @ MMU enabled?
> diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-
> omap/include/plat/serial.h
> index 865b13e..d7c1216 100644
> --- a/arch/arm/plat-omap/include/plat/serial.h
> +++ b/arch/arm/plat-omap/include/plat/serial.h
> @@ -59,6 +59,9 @@
> /* AM3505/3517 UART4 */
> #define AM35XX_UART4_BASE 0x4809E000 /* Only on AM3505/3517 */
>
> +/* AM335X serial port */
> +#define AM335X_UART1_BASE 0x44E09000
> +
> /* External port on Zoom2/3 */
> #define ZOOM_UART_BASE 0x10000000
> #define ZOOM_UART_VIRT 0xfa400000
> @@ -92,6 +95,7 @@
> #define TI81XXUART1 81
> #define TI81XXUART2 82
> #define TI81XXUART3 83
> +#define AM335XUART1 84
> #define ZOOM_UART 95 /* Only on zoom2/3 */
>
> /* This is only used by 8250.c for omap1510 */
> diff --git a/arch/arm/plat-omap/include/plat/uncompress.h b/arch/arm/plat-
> omap/include/plat/uncompress.h
> index 8d052e7..3592ce4 100644
> --- a/arch/arm/plat-omap/include/plat/uncompress.h
> +++ b/arch/arm/plat-omap/include/plat/uncompress.h
> @@ -97,6 +97,10 @@ static inline void flush(void)
> _DEBUG_LL_ENTRY(mach, TI81XX_UART##p##_BASE, OMAP_PORT_SHIFT, \
> TI81XXUART##p)
>
> +#define DEBUG_LL_AM335X(p, mach) \
> + _DEBUG_LL_ENTRY(mach, AM335X_UART##p##_BASE, OMAP_PORT_SHIFT, \
> + AM335XUART##p)
> +
> static inline void __arch_decomp_setup(unsigned long arch_id)
> {
> int port = 0;
> @@ -178,6 +182,8 @@ static inline void __arch_decomp_setup(unsigned long
> arch_id)
> /* TI8148 base boards using UART1 */
> DEBUG_LL_TI81XX(1, ti8148evm);
>
> + /* AM335x base boards using UART1 */
> + DEBUG_LL_AM335X(1, am335xevm);
> } while (0);
> }
>
> --
> 1.6.2.4
More information about the linux-arm-kernel
mailing list