Linux 5.7.7
[linux/fpc-iii.git] / arch / arm / include / debug / efm32.S
blob5ed5028306f4a605bff81df0782e5a8346773e45
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (C) 2013 Pengutronix
4  * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
5  */
7 #define UARTn_CMD               0x000c
8 #define UARTn_CMD_TXEN                  0x0004
10 #define UARTn_STATUS            0x0010
11 #define UARTn_STATUS_TXC                0x0020
12 #define UARTn_STATUS_TXBL               0x0040
14 #define UARTn_TXDATA            0x0034
16                 .macro  addruart, rx, tmp, tmp2
17                 ldr     \rx, =(CONFIG_DEBUG_UART_PHYS)
19                 /*
20                  * enable TX. The driver might disable it to save energy. We
21                  * don't care about disabling at the end as during debug power
22                  * consumption isn't that important.
23                  */
24                 ldr     \tmp, =(UARTn_CMD_TXEN)
25                 str     \tmp, [\rx, #UARTn_CMD]
26                 .endm
28                 .macro  senduart,rd,rx
29                 strb    \rd, [\rx, #UARTn_TXDATA]
30                 .endm
32                 .macro  waituart,rd,rx
33 1001:           ldr     \rd, [\rx, #UARTn_STATUS]
34                 tst     \rd, #UARTn_STATUS_TXBL
35                 beq     1001b
36                 .endm
38                 .macro  busyuart,rd,rx
39 1001:           ldr     \rd, [\rx, UARTn_STATUS]
40                 tst     \rd, #UARTn_STATUS_TXC
41                 bne     1001b
42                 .endm