Commit 494e492d authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Russell King
Browse files

ARM: 7850/1: DEBUG_LL on efm32 SoCs



This implements output of debug messages on efm32 SoCs.

Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 3159f372
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
/*
 * 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