0001
0002
0003
0004
0005
0006
0007 #include <linux/serial_reg.h>
0008
0009 .macro addruart, rp, rv, tmp
0010 ldr \rp, =CONFIG_DEBUG_UART_PHYS
0011 ldr \rv, =CONFIG_DEBUG_UART_VIRT
0012 .endm
0013
0014 #ifdef CONFIG_DEBUG_UART_8250_WORD
0015 .macro store, rd, rx:vararg
0016 ARM_BE8(rev \rd, \rd)
0017 str \rd, \rx
0018 ARM_BE8(rev \rd, \rd)
0019 .endm
0020
0021 .macro load, rd, rx:vararg
0022 ldr \rd, \rx
0023 ARM_BE8(rev \rd, \rd)
0024 .endm
0025 #else
0026 .macro store, rd, rx:vararg
0027 strb \rd, \rx
0028 .endm
0029
0030 .macro load, rd, rx:vararg
0031 ldrb \rd, \rx
0032 .endm
0033 #endif
0034
0035 #define UART_SHIFT CONFIG_DEBUG_UART_8250_SHIFT
0036
0037 .macro senduart,rd,rx
0038 store \rd, [\rx, #UART_TX << UART_SHIFT]
0039 .endm
0040
0041 .macro busyuart,rd,rx
0042 1002: load \rd, [\rx, #UART_LSR << UART_SHIFT]
0043 and \rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE
0044 teq \rd, #UART_LSR_TEMT | UART_LSR_THRE
0045 bne 1002b
0046 .endm
0047
0048 .macro waituarttxrdy,rd,rx
0049 .endm
0050
0051 .macro waituartcts,rd,rx
0052 1001: load \rd, [\rx, #UART_MSR << UART_SHIFT]
0053 tst \rd, #UART_MSR_CTS
0054 beq 1001b
0055 .endm