Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * arch/arm/include/debug/8250.S
0004  *
0005  *  Copyright (C) 1994-2013 Russell King
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