mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 14:50:19 +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>
49 lines
801 B
ArmAsm
49 lines
801 B
ArmAsm
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#include <linux/linkage.h>
|
|
#include <asm/assembler.h>
|
|
|
|
#ifndef CONFIG_DEBUG_SEMIHOSTING
|
|
|
|
#include CONFIG_DEBUG_LL_INCLUDE
|
|
|
|
ENTRY(putc)
|
|
addruart r1, r2, r3
|
|
#ifdef CONFIG_DEBUG_UART_FLOW_CONTROL
|
|
waituartcts r3, r1
|
|
#endif
|
|
waituarttxrdy r3, r1
|
|
senduart r0, r1
|
|
busyuart r3, r1
|
|
mov pc, lr
|
|
ENDPROC(putc)
|
|
|
|
#else
|
|
|
|
ENTRY(putc)
|
|
adr r1, 1f
|
|
ldmia r1, {r2, r3}
|
|
add r2, r2, r1
|
|
ldr r1, [r2, r3]
|
|
strb r0, [r1]
|
|
mov r0, #0x03 @ SYS_WRITEC
|
|
ARM( svc #0x123456 )
|
|
#ifdef CONFIG_CPU_V7M
|
|
THUMB( bkpt #0xab )
|
|
#else
|
|
THUMB( svc #0xab )
|
|
#endif
|
|
mov pc, lr
|
|
.align 2
|
|
1: .word _GLOBAL_OFFSET_TABLE_ - .
|
|
.word semi_writec_buf(GOT)
|
|
ENDPROC(putc)
|
|
|
|
.bss
|
|
.global semi_writec_buf
|
|
.type semi_writec_buf, %object
|
|
semi_writec_buf:
|
|
.space 4
|
|
.size semi_writec_buf, 4
|
|
|
|
#endif
|