diff options
Diffstat (limited to 'arch/arm/include/debug/efm32.S')
| -rw-r--r-- | arch/arm/include/debug/efm32.S | 45 | 
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/arm/include/debug/efm32.S b/arch/arm/include/debug/efm32.S new file mode 100644 index 00000000000..2265a199280 --- /dev/null +++ b/arch/arm/include/debug/efm32.S @@ -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  | 
