Commit Graph

14 Commits

Author SHA1 Message Date
Andrew Halaney 49bfe16689 serial: rda: Use port lock wrappers
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 7c572c17ca898870822bf7d3a6c32f357527f132
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Thu Sep 14 20:44:07 2023 +0206

    serial: rda: 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-51-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:10 -04:00
Andrew Halaney 9edd2e41d7 serial: rda: Use uart_xmit_advance()
JIRA: https://issues.redhat.com/browse/RHEL-24205

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

    serial: rda: 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-28-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:13 -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 cf821388cc serial: Convert SERIAL_XMIT_SIZE to UART_XMIT_SIZE
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit eb47b59afb7e46c952d7b03884245364990d4910
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Fri Jun 24 23:54:23 2022 +0300

    serial: Convert SERIAL_XMIT_SIZE to UART_XMIT_SIZE

    Both UART_XMIT_SIZE and SERIAL_XMIT_SIZE are defined. Make them all
    UART_XMIT_SIZE.

    Reviewed-by: Jiri Slaby <jirislaby@kernel.org>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220624205424.12686-6-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:24:58 -04:00
Andrew Halaney cb3fa19c17 serial: rda-uart: Don't allow CS5-6
JIRA: https://issues.redhat.com/browse/RHEL-24205

commit 098333a9c7d12bb3ce44c82f08b4d810c44d31b0
Author: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Date:   Thu May 19 11:18:02 2022 +0300

    serial: rda-uart: Don't allow CS5-6

    Only CS7 and CS8 are supported but CSIZE is not sanitized after
    fallthrough from CS5 or CS6 to CS7.

    Set CSIZE correctly so that userspace knows the effective value.
    Incorrect CSIZE also results in miscalculation of the frame bits in
    tty_get_char_size() or in its predecessor where the roughly the same
    code is directly within uart_update_timeout().

    Fixes: c10b13325c (tty: serial: Add RDA8810PL UART driver)
    Cc: Manivannan Sadhasivam <mani@kernel.org>
    Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
    Link: https://lore.kernel.org/r/20220519081808.3776-4-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:24:47 -04:00
Andrew Halaney da678439de Revert "serial: Make ->set_termios() old ktermios const"
JIRA: https://issues.redhat.com/browse/RHEL-24205
Upstream Status: RHEL only

This reverts commit 99946b9b6b.

This commit causes a lot of conflicts during the upgrade to v6.6. Let's
revert it and reapply it cleanly later.

Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
2024-05-09 11:23:16 -04:00
Alessandro Carminati 99946b9b6b serial: Make ->set_termios() old ktermios const
Bugzilla: https://bugzilla.redhat.com/2162957

Conflicts: drivers/tty/serial/sunplus-uart.c is not part of CS9

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: Alessandro Carminati <acarmina@redhat.com>
2023-01-25 15:35:37 +01:00
Alessandro Carminati 36d2e0758d serial: make uart_console_write->putchar()'s character an unsigned char
Bugzilla: https://bugzilla.redhat.com/2162957

Conflicts: drivers/tty/serial/sunplus-uart.c is not part of CS9

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: Alessandro Carminati <acarmina@redhat.com>
2023-01-25 15:35:37 +01:00
Johan Hovold 2225ee132c serial: rda: drop low-latency workaround
The rda driver has always carried an unnecessary workaround for the
infamous low_latency behaviour of tty_flip_buffer_push(), which had
been removed years before the driver was added by commit c10b13325c
("tty: serial: Add RDA8810PL UART driver").

Specifically, since commit a9c3f68f3c ("tty: Fix low_latency BUG"),
tty_flip_buffer_push() always schedules a work item to push data to the
line discipline and there's no need to keep any low_latency hacks around.

Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://lore.kernel.org/r/20210421095509.3024-19-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-04-22 12:09:26 +02:00
Gustavo A. R. Silva df561f6688 treewide: Use fallthrough pseudo-keyword
Replace the existing /* fall through */ comments and its variants with
the new pseudo-keyword macro fallthrough[1]. Also, remove unnecessary
fall-through markings when it is the case.

[1] https://www.kernel.org/doc/html/v5.7/process/deprecated.html?highlight=fallthrough#implicit-switch-case-fall-through

Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
2020-08-23 17:36:59 -05:00
Christoph Hellwig 4bdc0d676a remove ioremap_nocache and devm_ioremap_nocache
ioremap has provided non-cached semantics by default since the Linux 2.6
days, so remove the additional ioremap_nocache interface.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Arnd Bergmann <arnd@arndb.de>
2020-01-06 09:45:59 +01:00
Christophe JAILLET 5080d12712 tty: serial: rda: Fix the link time qualifier of 'rda_uart_exit()'
'exit' functions should be marked as __exit, not __init.

Fixes: c10b13325c ("tty: serial: Add RDA8810PL UART driver")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/20190910041702.7357-1-christophe.jaillet@wanadoo.fr
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-10-04 15:01:15 +02:00
Stephen Boyd 1df2178681 tty: Remove dev_err() usage after platform_get_irq()
We don't need dev_err() messages when platform_get_irq() fails now that
platform_get_irq() prints an error message itself when something goes
wrong. Let's remove these prints with a simple semantic patch.

// <smpl>
@@
expression ret;
struct platform_device *E;
@@

ret =
(
platform_get_irq(E, ...)
|
platform_get_irq_byname(E, ...)
);

if ( \( ret < 0 \| ret <= 0 \) )
{
(
-if (ret != -EPROBE_DEFER)
-{ ...
-dev_err(...);
-... }
|
...
-dev_err(...);
)
...
}
// </smpl>

While we're here, remove braces on if statements that only have one
statement (manually).

Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiri Slaby <jslaby@suse.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Link: https://lore.kernel.org/r/20190730181557.90391-45-swboyd@chromium.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-09-04 12:43:49 +02:00
Manivannan Sadhasivam c10b13325c tty: serial: Add RDA8810PL UART driver
Add UART driver for RDA Micro RDA8810PL SoC.

Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Olof Johansson <olof@lixom.net>
2018-12-31 13:10:01 -08:00