Commit Graph

8 Commits

Author SHA1 Message Date
Andrew Halaney 8aeaef7231 serial: sunplus-uart: Use port lock wrappers
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 3ea01838fc7ba9067ab0ac803964a4dd28afa4a2
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Sep 14 20:44:23 2023 +0206

    serial: sunplus-uart: Use port lock wrappers

    When a serial port is used for kernel console output, then all
    modifications to the UART registers which are done from other contexts,
    e.g. getty, termios, are interference points for the kernel console.

    So far this has been ignored and the printk output is based on the
    principle of hope. The rework of the console infrastructure which aims to
    support threaded and atomic consoles, requires to mark sections which
    modify the UART registers as unsafe. This allows the atomic write function
    to make informed decisions and eventually to restore operational state. It
    also allows to prevent the regular UART code from modifying UART registers
    while printk output is in progress.

    All modifications of UART registers are guarded by the UART port lock,
    which provides an obvious synchronization point with the console
    infrastructure.

    To avoid adding this functionality to all UART drivers, wrap the
    spin_[un]lock*() invocations for uart_port::lock into helper functions
    which just contain the spin_[un]lock*() invocations for now. In a
    subsequent step these helpers will gain the console synchronization
    mechanisms.

    Converted with coccinelle. No functional change.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Link: https://lore.kernel.org/r/20230914183831.587273-67-john.ogness@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:26:11 -04:00
Andrew Halaney 41967fd606 serial: drivers: switch ch and flag to u8
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit fd2b55f86b8b25afc5b6e7dff53dddb3fd0dd211
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Wed Jul 12 10:18:11 2023 +0200

    serial: drivers: switch ch and flag to u8

    Now that the serial layer explicitly expects 'u8' for flags and
    characters, propagate this type to drivers' (RX) routines.

    Note that amba-pl011's, clps711x's and st-asc's 'ch' are left unchanged
    because 'ch' contains not only a character, but whole status.

    Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org>
    Cc: Tobias Klauser <tklauser@distanz.ch>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Vineet Gupta <vgupta@kernel.org>
    Cc: Richard Genoud <richard.genoud@gmail.com>
    Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
    Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: Claudiu Beznea <claudiu.beznea@microchip.com>
    Cc: Alexander Shiyan <shc_work@mail.ru>
    Cc: Baruch Siach <baruch@tkos.co.il>
    Cc: "Maciej W. Rozycki" <macro@orcam.me.uk>
    Cc: Taichi Sugaya <sugaya.taichi@socionext.com>
    Cc: Takao Orito <orito.takao@socionext.com>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: NXP Linux Team <linux-imx@nxp.com>
    Cc: Kevin Cernekee <cernekee@gmail.com>
    Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
    Cc: Alim Akhtar <alim.akhtar@samsung.com>
    Cc: Laxman Dewangan <ldewangan@nvidia.com>
    Cc: Thierry Reding <thierry.reding@gmail.com>
    Cc: Jonathan Hunter <jonathanh@nvidia.com>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Orson Zhai <orsonzhai@gmail.com>
    Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
    Cc: Chunyan Zhang <zhang.lyra@gmail.com>
    Cc: Patrice Chotard <patrice.chotard@foss.st.com>
    Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Cc: Hammer Hsieh <hammerh0314@gmail.com>
    Acked-by: Richard GENOUD <richard.genoud@gmail.com>
    Acked-by: Tobias Klauser <tklauser@distanz.ch>
    Acked-by: Thierry Reding <treding@nvidia.com>
    Acked-by: Maciej W. Rozycki <macro@orcam.me.uk>
    Link: https://lore.kernel.org/r/20230712081811.29004-11-jirislaby@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:47 -04:00
Andrew Halaney 90c91fca56 serial: sunplus-uart: Use uart_xmit_advance()
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 54ffabbe2203817d1d70ceb97407a4382633d2e5
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Wed Oct 19 12:11:43 2022 +0300

    serial: sunplus-uart: Use uart_xmit_advance()

    Take advantage of the new uart_xmit_advance() helper.

    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20221019091151.6692-37-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:14 -04:00
Andrew Halaney 3270e0daa4 serial: Make ->set_termios() old ktermios const
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit bec5b814d46c2a704c3c8148752e62a33e9fa6dc
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Tue Aug 16 14:57:37 2022 +0300

    serial: Make ->set_termios() old ktermios const

    There should be no reason to adjust old ktermios which is going to get
    discarded anyway.

    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220816115739.10928-7-ilpo.jarvinen@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:25:05 -04:00
Andrew Halaney 4b9d948f1f serial: sunplus-uart: change sunplus_console_ports from global to static
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit b68f42d4c99704e06c6f163af077b1bf4671f0bc
Author: Tom Rix <trix@redhat.com>
Date:   Thu Apr 21 11:25:05 2022 -0400

    serial: sunplus-uart: change sunplus_console_ports from global to static

    Smatch reports this issue
    sunplus-uart.c:501:26: warning: symbol 'sunplus_console_ports' was not declared. Should it be static?

    sunplus_console_ports is only used in sunplus-uart.c so change
    its storage-class specifier to static

    Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Tom Rix <trix@redhat.com>
    Link: https://lore.kernel.org/r/20220421152505.1531507-1-trix@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:40 -04:00
Andrew Halaney ec7cd943dc serial: make uart_console_write->putchar()'s character an unsigned char
JIRA: https://issues.redhat.com/browse/RHEL-24205
Conflicts: This applies the rest of the patch left out of the original
           backport over at
           36d2e0758d ("serial: make uart_console_write->putchar()'s character an unsigned char")

commit 3f8bab174cb26aa5a8053c4457cc733881e3ad88
Author: Jiri Slaby <jirislaby@kernel.org>
Date:   Thu Mar 3 09:08:31 2022 +0100

    serial: make uart_console_write->putchar()'s character an unsigned char

    Currently, uart_console_write->putchar's second parameter (the
    character) is of type int. It makes little sense, provided uart_console_write()
    accepts the input string as "const char *s" and passes its content -- the
    characters -- to putchar(). So switch the character's type to unsigned
    char.

    We don't use char as that is signed on some platforms. That would cause
    troubles for drivers which (implicitly) cast the char to u16 when
    writing to the device. Sign extension would happen in that case and the
    value written would be completely different to the provided char. DZ is
    an example of such a driver -- on MIPS, it uses u16 for dz_out in
    dz_console_putchar().

    Note we do the char -> uchar conversion implicitly in
    uart_console_write(). Provided we do not change size of the data type,
    sign extension does not happen there, so the problem is void.

    This makes the types consistent and unified with the rest of the uart
    layer, which uses unsigned char in most places already. One exception is
    xmit_buf, but that is going to be converted later.

    Cc: Paul Cercueil <paul@crapouillou.net>
    Cc: Tobias Klauser <tklauser@distanz.ch>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Vineet Gupta <vgupta@kernel.org>
    Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
    Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Cc: Ludovic Desroches <ludovic.desroches@microchip.com>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: Alexander Shiyan <shc_work@mail.ru>
    Cc: Baruch Siach <baruch@tkos.co.il>
    Cc: "Maciej W. Rozycki" <macro@orcam.me.uk>
    Cc: Paul Walmsley <paul.walmsley@sifive.com>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Albert Ou <aou@eecs.berkeley.edu>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: NXP Linux Team <linux-imx@nxp.com>
    Cc: Karol Gugala <kgugala@antmicro.com>
    Cc: Mateusz Holenko <mholenko@antmicro.com>
    Cc: Vladimir Zapolskiy <vz@mleia.com>
    Cc: Neil Armstrong <narmstrong@baylibre.com>
    Cc: Kevin Hilman <khilman@baylibre.com>
    Cc: Jerome Brunet <jbrunet@baylibre.com>
    Cc: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Cc: Taichi Sugaya <sugaya.taichi@socionext.com>
    Cc: Takao Orito <orito.takao@socionext.com>
    Cc: Liviu Dudau <liviu.dudau@arm.com>
    Cc: Sudeep Holla <sudeep.holla@arm.com>
    Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: "Andreas Färber" <afaerber@suse.de>
    Cc: Manivannan Sadhasivam <mani@kernel.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Andy Gross <agross@kernel.org>
    Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
    Cc: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Cc: Orson Zhai <orsonzhai@gmail.com>
    Cc: Baolin Wang <baolin.wang7@gmail.com>
    Cc: Chunyan Zhang <zhang.lyra@gmail.com>
    Cc: Patrice Chotard <patrice.chotard@foss.st.com>
    Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Peter Korsgaard <peter@korsgaard.com>
    Cc: Michal Simek <michal.simek@xilinx.com>
    Acked-by: Richard Genoud <richard.genoud@gmail.com> [atmel_serial]
    Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Acked-by: Paul Cercueil <paul@crapouillou.net>
    Acked-by: Neil Armstrong <narmstrong@baylibre.com> # meson_serial
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Link: https://lore.kernel.org/r/20220303080831.21783-1-jslaby@suse.cz
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:33 -04:00
Andrew Halaney dd7d5edc6d serial: sunplus-uart: Fix compile error while CONFIG_SERIAL_SUNPLUS_CONSOLE=n
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit a106848c42b6a0ed4817008373562a4ab67f9e7e
Author: Hammer Hsieh <hammerh0314@gmail.com>
Date:   Tue Mar 1 12:19:46 2022 +0800

    serial: sunplus-uart: Fix compile error while CONFIG_SERIAL_SUNPLUS_CONSOLE=n

    1. Fix implicit declaration of function 'wait_for_xmitr' issue.
    2. Fix 'sunplus_uart_console' undeclared here issue.
    3. Fix use of undeclared identifier 'sunplus_uart_console' issue.

    Fixes: 9e8d5470325f ("serial: sunplus-uart: Add Sunplus SoC UART Driver")
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Tested-by: Randy Dunlap <rdunlap@infradead.org>
    Acked-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Hammer Hsieh <hammerh0314@gmail.com>
    Link: https://lore.kernel.org/r/1646108386-29905-1-git-send-email-hammerh0314@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:33 -04:00
Andrew Halaney 2636ef9ef6 serial: sunplus-uart: Add Sunplus SoC UART Driver
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 9e8d5470325f25bed7d33f9faaae6d5e4f313650
Author: Hammer Hsieh <hammerh0314@gmail.com>
Date:   Tue Feb 22 17:36:03 2022 +0800

    serial: sunplus-uart: Add Sunplus SoC UART Driver

    Add Sunplus SoC UART Driver.
    SP7021 UART block contains 5 UARTs.
    There are UART0~4 that supported in SP7021, the features list as below.
    Support Full-duplex communication.
    Support data packet length configurable.
    Support stop bit number configurable.
    Support force break condition.
    Support baud rate configurable.
    Support error detection and report.
    Support RXD Noise Rejection Vote configurable.

    UART0 pinout only support TX/RX two pins.
    UART1 to UART4 pinout support TX/RX/CTS/RTS four pins.
    Normally UART0 used for kernel console, also can be used for normal uart.
    Command line set "console=ttySUP0,115200", SUP means Sunplus Uart Port.
    UART driver probe will create path named "/dev/ttySUPx".

    https://sunplus.atlassian.net/wiki/spaces/doc/pages/1873412290/13.+Universal+Asynchronous+Receiver+Transmitter+UART

    Signed-off-by: Hammer Hsieh <hammerh0314@gmail.com>
    Link: https://lore.kernel.org/r/1645522563-17183-3-git-send-email-hammerh0314@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:24:32 -04:00