ARM: 9005/1: debug: Select flow control for all debug UARTs
authorLinus Walleij <linus.walleij@linaro.org>
Thu, 27 Aug 2020 22:28:56 +0000 (23:28 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Tue, 15 Sep 2020 13:35:28 +0000 (14:35 +0100)
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>
arch/arm/Kconfig.debug
arch/arm/boot/compressed/debug.S
arch/arm/include/debug/8250.S
arch/arm/include/debug/tegra.S
arch/arm/kernel/debug.S

index 80000a66a4e3549a5e5a5c2bae33037a8fb725f3..87912e5c225641dfc2f17e84e98464b831d01d41 100644 (file)
@@ -1546,6 +1546,17 @@ config DEBUG_SIRFSOC_UART
        bool
        depends on ARCH_SIRF
 
+config DEBUG_UART_FLOW_CONTROL
+       bool "Enable flow control (CTS) for the debug UART"
+       depends on DEBUG_LL
+       default y if ARCH_EBSA110 || DEBUG_FOOTBRIDGE_COM1 || DEBUG_GEMINI || ARCH_RPC
+       help
+         Some UART ports are connected to terminals that will use modem
+         control signals to indicate whether they are ready to receive text.
+         In practice this means that the terminal is asserting the special
+         control signal CTS (Clear To Send). If your debug UART supports
+         this and your debug terminal will require it, enable this option.
+
 config DEBUG_LL_INCLUDE
        string
        default "debug/sa1100.S" if DEBUG_SA1100
@@ -1893,11 +1904,6 @@ config DEBUG_UART_8250_PALMCHIP
          except for having a different register layout.  Say Y here if
          the debug UART is of this type.
 
-config DEBUG_UART_8250_FLOW_CONTROL
-       bool "Enable flow control for 8250 UART"
-       depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
-       default y if ARCH_EBSA110 || DEBUG_FOOTBRIDGE_COM1 || DEBUG_GEMINI || ARCH_RPC
-
 config DEBUG_UNCOMPRESS
        bool "Enable decompressor debugging via DEBUG_LL output"
        depends on ARCH_MULTIPLATFORM || PLAT_SAMSUNG || ARM_SINGLE_ARMV7M
index 97f4e74692e897cdc0a90544efe6a7bf526e7bc4..fac40a717fcf67b73ad73486971fc7a126ea407f 100644 (file)
@@ -8,7 +8,9 @@
 
 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
index 769246d87fffbdb2ea186b89c93d76d1221b7800..e3692a37cede3c51328e4b2f617a3108e5d4722e 100644 (file)
@@ -49,9 +49,7 @@
                .endm
 
                .macro  waituartcts,rd,rx
-#ifdef CONFIG_DEBUG_UART_8250_FLOW_CONTROL
 1001:          load    \rd, [\rx, #UART_MSR << UART_SHIFT]
                tst     \rd, #UART_MSR_CTS
                beq     1001b
-#endif
                .endm
index 2bca6358cdd06a2c138d2783962bb2e84a3d5a25..98daa7f483148bf5a972743dc4d569446fb3e023 100644 (file)
                .endm
 
                .macro  waituartcts, rd, rx
-#ifdef FLOW_CONTROL
                cmp     \rx, #0
                beq     1002f
 1001:          ldrb    \rd, [\rx, #UART_MSR << UART_SHIFT]
                tst     \rd, #UART_MSR_CTS
                beq     1001b
 1002:
-#endif
                .endm
 
                .macro  waituarttxrdy,rd,rx
index e7c87522c1766d7cf50a8ce55bf6f313daf40a92..d92f44bdf4380c6adf85008e2ebbcce00d71b0b1 100644 (file)
@@ -89,12 +89,17 @@ ENTRY(printascii)
 2:             teq     r1, #'\n'
                bne     3f
                mov     r1, #'\r'
+#ifdef CONFIG_DEBUG_UART_FLOW_CONTROL
                waituartcts r2, r3
+#endif
                waituarttxrdy r2, r3
                senduart r1, r3
                busyuart r2, r3
                mov     r1, #'\n'
-3:             waituartcts r2, r3
+3:
+#ifdef CONFIG_DEBUG_UART_FLOW_CONTROL
+               waituartcts r2, r3
+#endif
                waituarttxrdy r2, r3
                senduart r1, r3
                busyuart r2, r3