1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* arch/arm/mach-imx/include/mach/debug-macro.S |
3 | * |
4 | * Debugging macro include header |
5 | * |
6 | * Copyright (C) 1994-1999 Russell King |
7 | * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks |
8 | */ |
9 | |
10 | #include <asm/assembler.h> |
11 | #include "imx-uart.h" |
12 | |
13 | /* |
14 | * FIXME: This is a copy of IMX_IO_P2V in hardware.h, and needs to |
15 | * stay sync with that. It's hard to maintain, and should be fixed |
16 | * globally for multi-platform build to use a fixed virtual address |
17 | * for low-level debug uart port across platforms. |
18 | */ |
19 | #define IMX_IO_P2V(x) ( \ |
20 | (((x) & 0x80000000) >> 7) | \ |
21 | (0xf4000000 + \ |
22 | (((x) & 0x50000000) >> 6) + \ |
23 | (((x) & 0x0b000000) >> 4) + \ |
24 | (((x) & 0x000fffff)))) |
25 | |
26 | #define UART_VADDR IMX_IO_P2V(UART_PADDR) |
27 | |
28 | .macro addruart, rp, rv, tmp |
29 | ldr \rp, =UART_PADDR @ physical |
30 | ldr \rv, =UART_VADDR @ virtual |
31 | .endm |
32 | |
33 | .macro senduart,rd,rx |
34 | ARM_BE8(rev \rd, \rd) |
35 | str \rd, [\rx, #0x40] @ TXDATA |
36 | .endm |
37 | |
38 | .macro waituartcts,rd,rx |
39 | .endm |
40 | |
41 | .macro waituarttxrdy,rd,rx |
42 | .endm |
43 | |
44 | .macro busyuart,rd,rx |
45 | 1002: ldr \rd, [\rx, #0x98] @ SR2 |
46 | ARM_BE8(rev \rd, \rd) |
47 | tst \rd, #1 << 3 @ TXDC |
48 | beq 1002b @ wait until transmit done |
49 | .endm |
50 | |