1
2
3
4
5
6
7
8
9
10 #include <asm/assembler.h>
11 #include "imx-uart.h"
12
13
14
15
16
17
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 waituart,rd,rx
39 .endm
40
41 .macro busyuart,rd,rx
42 1002: ldr \rd, [\rx, #0x98] @ SR2
43 ARM_BE8(rev \rd, \rd)
44 tst \rd, #1 << 3 @ TXDC
45 beq 1002b @ wait until transmit done
46 .endm