mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 06:12:08 +00:00
4df24fef09
Instead of a flow control selection mechanism specifically for 8250, make this available for all debug UARTs. If the debug UART supports waiting for CTS to be asserted, then this code can be activated for terminals that need it. We keep the defaults for EBSA110, Footbridge, Gemini and RPC so that this still works as expected for these older platforms: they assume that flow control shall be enabled for debug prints. I switch the location of the check for ifdef CONFIG_DEBUG_UART_FLOW_CONTROL from the actual debug UART drivers: the code would get compiled-out for 8250 and Tegra unless their custom config (or passing -DFLOW_CONTROL in the Tegra case) was not set. Instead this is conditional at the three places where we print debug messages. The idea is that debug UARTs can be implemented without this ifdef boilerplate so they look cleaner, alas the ifdef has to be somewhere. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
56 lines
1.0 KiB
ArmAsm
56 lines
1.0 KiB
ArmAsm
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* arch/arm/include/debug/8250.S
|
|
*
|
|
* Copyright (C) 1994-2013 Russell King
|
|
*/
|
|
#include <linux/serial_reg.h>
|
|
|
|
.macro addruart, rp, rv, tmp
|
|
ldr \rp, =CONFIG_DEBUG_UART_PHYS
|
|
ldr \rv, =CONFIG_DEBUG_UART_VIRT
|
|
.endm
|
|
|
|
#ifdef CONFIG_DEBUG_UART_8250_WORD
|
|
.macro store, rd, rx:vararg
|
|
ARM_BE8(rev \rd, \rd)
|
|
str \rd, \rx
|
|
ARM_BE8(rev \rd, \rd)
|
|
.endm
|
|
|
|
.macro load, rd, rx:vararg
|
|
ldr \rd, \rx
|
|
ARM_BE8(rev \rd, \rd)
|
|
.endm
|
|
#else
|
|
.macro store, rd, rx:vararg
|
|
strb \rd, \rx
|
|
.endm
|
|
|
|
.macro load, rd, rx:vararg
|
|
ldrb \rd, \rx
|
|
.endm
|
|
#endif
|
|
|
|
#define UART_SHIFT CONFIG_DEBUG_UART_8250_SHIFT
|
|
|
|
.macro senduart,rd,rx
|
|
store \rd, [\rx, #UART_TX << UART_SHIFT]
|
|
.endm
|
|
|
|
.macro busyuart,rd,rx
|
|
1002: load \rd, [\rx, #UART_LSR << UART_SHIFT]
|
|
and \rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE
|
|
teq \rd, #UART_LSR_TEMT | UART_LSR_THRE
|
|
bne 1002b
|
|
.endm
|
|
|
|
.macro waituarttxrdy,rd,rx
|
|
.endm
|
|
|
|
.macro waituartcts,rd,rx
|
|
1001: load \rd, [\rx, #UART_MSR << UART_SHIFT]
|
|
tst \rd, #UART_MSR_CTS
|
|
beq 1001b
|
|
.endm
|