ARM: 7850/1: DEBUG_LL on efm32 SoCs
This implements output of debug messages on efm32 SoCs. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
3159f37235
commit
494e492dd8
2 changed files with 62 additions and 0 deletions
|
@ -834,6 +834,20 @@ choice
|
|||
options; the platform specific options are deprecated
|
||||
and will be soon removed.
|
||||
|
||||
config DEBUG_LL_UART_EFM32
|
||||
bool "Kernel low-level debugging via efm32 UART"
|
||||
depends on ARCH_EFM32
|
||||
help
|
||||
Say Y here if you want the debug print routines to direct
|
||||
their output to an UART or USART port on efm32 based
|
||||
machines. Use the following addresses for DEBUG_UART_PHYS:
|
||||
|
||||
0x4000c000 | USART0
|
||||
0x4000c400 | USART1
|
||||
0x4000c800 | USART2
|
||||
0x4000e000 | UART0
|
||||
0x4000e400 | UART1
|
||||
|
||||
config DEBUG_LL_UART_PL01X
|
||||
bool "Kernel low-level debugging via ARM Ltd PL01x Primecell UART"
|
||||
help
|
||||
|
@ -885,6 +899,7 @@ config DEBUG_LL_INCLUDE
|
|||
default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
|
||||
default "debug/pl01x.S" if DEBUG_LL_UART_PL01X || DEBUG_UART_PL01X
|
||||
default "debug/exynos.S" if DEBUG_EXYNOS_UART
|
||||
default "debug/efm32.S" if DEBUG_LL_UART_EFM32
|
||||
default "debug/icedcc.S" if DEBUG_ICEDCC
|
||||
default "debug/imx.S" if DEBUG_IMX1_UART || \
|
||||
DEBUG_IMX25_UART || \
|
||||
|
@ -951,6 +966,7 @@ config DEBUG_UART_PHYS
|
|||
default 0x20064000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2
|
||||
default 0x20068000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3
|
||||
default 0x20201000 if DEBUG_BCM2835
|
||||
default 0x4000e400 if DEBUG_LL_UART_EFM32
|
||||
default 0x40090000 if ARCH_LPC32XX
|
||||
default 0x40100000 if DEBUG_PXA_UART1
|
||||
default 0x42000000 if ARCH_GEMINI
|
||||
|
@ -981,6 +997,7 @@ config DEBUG_UART_PHYS
|
|||
default 0xfff36000 if DEBUG_HIGHBANK_UART
|
||||
default 0xfffff700 if ARCH_IOP33X
|
||||
depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
|
||||
DEBUG_LL_UART_EFM32 || \
|
||||
DEBUG_UART_8250 || DEBUG_UART_PL01X
|
||||
|
||||
config DEBUG_UART_VIRT
|
||||
|
|
45
arch/arm/include/debug/efm32.S
Normal file
45
arch/arm/include/debug/efm32.S
Normal file
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (C) 2013 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#define UARTn_CMD 0x000c
|
||||
#define UARTn_CMD_TXEN 0x0004
|
||||
|
||||
#define UARTn_STATUS 0x0010
|
||||
#define UARTn_STATUS_TXC 0x0020
|
||||
#define UARTn_STATUS_TXBL 0x0040
|
||||
|
||||
#define UARTn_TXDATA 0x0034
|
||||
|
||||
.macro addruart, rx, tmp
|
||||
ldr \rx, =(CONFIG_DEBUG_UART_PHYS)
|
||||
|
||||
/*
|
||||
* enable TX. The driver might disable it to save energy. We
|
||||
* don't care about disabling at the end as during debug power
|
||||
* consumption isn't that important.
|
||||
*/
|
||||
ldr \tmp, =(UARTn_CMD_TXEN)
|
||||
str \tmp, [\rx, #UARTn_CMD]
|
||||
.endm
|
||||
|
||||
.macro senduart,rd,rx
|
||||
strb \rd, [\rx, #UARTn_TXDATA]
|
||||
.endm
|
||||
|
||||
.macro waituart,rd,rx
|
||||
1001: ldr \rd, [\rx, #UARTn_STATUS]
|
||||
tst \rd, #UARTn_STATUS_TXBL
|
||||
beq 1001b
|
||||
.endm
|
||||
|
||||
.macro busyuart,rd,rx
|
||||
1001: ldr \rd, [\rx, UARTn_STATUS]
|
||||
tst \rd, #UARTn_STATUS_TXC
|
||||
bne 1001b
|
||||
.endm
|
Loading…
Reference in a new issue