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>
This commit is contained in:
Jiri Slaby 2022-03-03 09:08:31 +01:00 committed by Greg Kroah-Hartman
parent 47b95e8ab7
commit 3f8bab174c
62 changed files with 77 additions and 76 deletions

View File

@ -434,7 +434,7 @@ static int goldfish_tty_remove(struct platform_device *pdev)
} }
#ifdef CONFIG_GOLDFISH_TTY_EARLY_CONSOLE #ifdef CONFIG_GOLDFISH_TTY_EARLY_CONSOLE
static void gf_early_console_putchar(struct uart_port *port, int ch) static void gf_early_console_putchar(struct uart_port *port, unsigned char ch)
{ {
__raw_writel(ch, port->membase); __raw_writel(ch, port->membase);
} }

View File

@ -15,7 +15,7 @@
#define DCC_STATUS_RX (1 << 30) #define DCC_STATUS_RX (1 << 30)
#define DCC_STATUS_TX (1 << 29) #define DCC_STATUS_TX (1 << 29)
static void dcc_uart_console_putchar(struct uart_port *port, int ch) static void dcc_uart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
while (__dcc_getstatus() & DCC_STATUS_TX) while (__dcc_getstatus() & DCC_STATUS_TX)
cpu_relax(); cpu_relax();

View File

@ -403,7 +403,7 @@ static void serial21285_setup_ports(void)
} }
#ifdef CONFIG_SERIAL_21285_CONSOLE #ifdef CONFIG_SERIAL_21285_CONSOLE
static void serial21285_console_putchar(struct uart_port *port, int ch) static void serial21285_console_putchar(struct uart_port *port, unsigned char ch)
{ {
while (*CSR_UARTFLG & 0x20) while (*CSR_UARTFLG & 0x20)
barrier(); barrier();

View File

@ -86,7 +86,7 @@ static void serial8250_early_out(struct uart_port *port, int offset, int value)
#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) #define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
static void serial_putc(struct uart_port *port, int c) static void serial_putc(struct uart_port *port, unsigned char c)
{ {
unsigned int status; unsigned int status;

View File

@ -52,7 +52,7 @@ static void early_out(struct uart_port *port, int offset, uint8_t value)
writel(value, port->membase + (offset << 2)); writel(value, port->membase + (offset << 2));
} }
static void ingenic_early_console_putc(struct uart_port *port, int c) static void ingenic_early_console_putc(struct uart_port *port, unsigned char c)
{ {
uint8_t lsr; uint8_t lsr;

View File

@ -3305,7 +3305,7 @@ EXPORT_SYMBOL_GPL(serial8250_set_defaults);
#ifdef CONFIG_SERIAL_8250_CONSOLE #ifdef CONFIG_SERIAL_8250_CONSOLE
static void serial8250_console_putchar(struct uart_port *port, int ch) static void serial8250_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct uart_8250_port *up = up_to_u8250p(port); struct uart_8250_port *up = up_to_u8250p(port);

View File

@ -298,7 +298,7 @@ static struct altera_jtaguart altera_jtaguart_ports[ALTERA_JTAGUART_MAXPORTS];
#if defined(CONFIG_SERIAL_ALTERA_JTAGUART_CONSOLE) #if defined(CONFIG_SERIAL_ALTERA_JTAGUART_CONSOLE)
#if defined(CONFIG_SERIAL_ALTERA_JTAGUART_CONSOLE_BYPASS) #if defined(CONFIG_SERIAL_ALTERA_JTAGUART_CONSOLE_BYPASS)
static void altera_jtaguart_console_putc(struct uart_port *port, int c) static void altera_jtaguart_console_putc(struct uart_port *port, unsigned char c)
{ {
unsigned long status; unsigned long status;
unsigned long flags; unsigned long flags;
@ -318,7 +318,7 @@ static void altera_jtaguart_console_putc(struct uart_port *port, int c)
spin_unlock_irqrestore(&port->lock, flags); spin_unlock_irqrestore(&port->lock, flags);
} }
#else #else
static void altera_jtaguart_console_putc(struct uart_port *port, int c) static void altera_jtaguart_console_putc(struct uart_port *port, unsigned char c)
{ {
unsigned long flags; unsigned long flags;

View File

@ -438,7 +438,7 @@ static struct altera_uart altera_uart_ports[CONFIG_SERIAL_ALTERA_UART_MAXPORTS];
#if defined(CONFIG_SERIAL_ALTERA_UART_CONSOLE) #if defined(CONFIG_SERIAL_ALTERA_UART_CONSOLE)
static void altera_uart_console_putc(struct uart_port *port, int c) static void altera_uart_console_putc(struct uart_port *port, unsigned char c)
{ {
while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) & while (!(altera_uart_readl(port, ALTERA_UART_STATUS_REG) &
ALTERA_UART_STATUS_TRDY_MSK)) ALTERA_UART_STATUS_TRDY_MSK))

View File

@ -551,7 +551,7 @@ static struct uart_amba_port *amba_ports[UART_NR];
#ifdef CONFIG_SERIAL_AMBA_PL010_CONSOLE #ifdef CONFIG_SERIAL_AMBA_PL010_CONSOLE
static void pl010_console_putchar(struct uart_port *port, int ch) static void pl010_console_putchar(struct uart_port *port, unsigned char ch)
{ {
unsigned int status; unsigned int status;

View File

@ -2255,7 +2255,7 @@ static struct uart_amba_port *amba_ports[UART_NR];
#ifdef CONFIG_SERIAL_AMBA_PL011_CONSOLE #ifdef CONFIG_SERIAL_AMBA_PL011_CONSOLE
static void pl011_console_putchar(struct uart_port *port, int ch) static void pl011_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct uart_amba_port *uap = struct uart_amba_port *uap =
container_of(port, struct uart_amba_port, port); container_of(port, struct uart_amba_port, port);
@ -2471,7 +2471,7 @@ static struct console amba_console = {
#define AMBA_CONSOLE (&amba_console) #define AMBA_CONSOLE (&amba_console)
static void qdf2400_e44_putc(struct uart_port *port, int c) static void qdf2400_e44_putc(struct uart_port *port, unsigned char c)
{ {
while (readl(port->membase + UART01x_FR) & UART01x_FR_TXFF) while (readl(port->membase + UART01x_FR) & UART01x_FR_TXFF)
cpu_relax(); cpu_relax();
@ -2487,7 +2487,7 @@ static void qdf2400_e44_early_write(struct console *con, const char *s, unsigned
uart_console_write(&dev->port, s, n, qdf2400_e44_putc); uart_console_write(&dev->port, s, n, qdf2400_e44_putc);
} }
static void pl011_putc(struct uart_port *port, int c) static void pl011_putc(struct uart_port *port, unsigned char c)
{ {
while (readl(port->membase + UART01x_FR) & UART01x_FR_TXFF) while (readl(port->membase + UART01x_FR) & UART01x_FR_TXFF)
cpu_relax(); cpu_relax();

View File

@ -413,7 +413,7 @@ static void apbuart_flush_fifo(struct uart_port *port)
#ifdef CONFIG_SERIAL_GRLIB_GAISLER_APBUART_CONSOLE #ifdef CONFIG_SERIAL_GRLIB_GAISLER_APBUART_CONSOLE
static void apbuart_console_putchar(struct uart_port *port, int ch) static void apbuart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
unsigned int status; unsigned int status;
do { do {

View File

@ -613,7 +613,7 @@ static void ar933x_uart_wait_xmitr(struct ar933x_uart_port *up)
} while ((status & AR933X_UART_DATA_TX_CSR) == 0); } while ((status & AR933X_UART_DATA_TX_CSR) == 0);
} }
static void ar933x_uart_console_putchar(struct uart_port *port, int ch) static void ar933x_uart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct ar933x_uart_port *up = struct ar933x_uart_port *up =
container_of(port, struct ar933x_uart_port, port); container_of(port, struct ar933x_uart_port, port);

View File

@ -508,7 +508,7 @@ static int arc_serial_console_setup(struct console *co, char *options)
return uart_set_options(port, co, baud, parity, bits, flow); return uart_set_options(port, co, baud, parity, bits, flow);
} }
static void arc_serial_console_putchar(struct uart_port *port, int ch) static void arc_serial_console_putchar(struct uart_port *port, unsigned char ch)
{ {
while (!(UART_GET_STATUS(port) & TXEMPTY)) while (!(UART_GET_STATUS(port) & TXEMPTY))
cpu_relax(); cpu_relax();

View File

@ -2541,7 +2541,7 @@ static int atmel_init_port(struct atmel_uart_port *atmel_port,
} }
#ifdef CONFIG_SERIAL_ATMEL_CONSOLE #ifdef CONFIG_SERIAL_ATMEL_CONSOLE
static void atmel_console_putchar(struct uart_port *port, int ch) static void atmel_console_putchar(struct uart_port *port, unsigned char ch)
{ {
while (!(atmel_uart_readl(port, ATMEL_US_CSR) & ATMEL_US_TXRDY)) while (!(atmel_uart_readl(port, ATMEL_US_CSR) & ATMEL_US_TXRDY))
cpu_relax(); cpu_relax();

View File

@ -681,7 +681,7 @@ static void wait_for_xmitr(struct uart_port *port)
/* /*
* output given char * output given char
*/ */
static void bcm_console_putchar(struct uart_port *port, int ch) static void bcm_console_putchar(struct uart_port *port, unsigned char ch)
{ {
wait_for_xmitr(port); wait_for_xmitr(port);
bcm_uart_writel(port, ch, UART_FIFO_REG); bcm_uart_writel(port, ch, UART_FIFO_REG);

View File

@ -348,7 +348,7 @@ static const struct uart_ops uart_clps711x_ops = {
}; };
#ifdef CONFIG_SERIAL_CLPS711X_CONSOLE #ifdef CONFIG_SERIAL_CLPS711X_CONSOLE
static void uart_clps711x_console_putchar(struct uart_port *port, int ch) static void uart_clps711x_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct clps711x_port *s = dev_get_drvdata(port->dev); struct clps711x_port *s = dev_get_drvdata(port->dev);
u32 sysflg = 0; u32 sysflg = 0;

View File

@ -381,7 +381,7 @@ static const struct uart_ops digicolor_uart_ops = {
.request_port = digicolor_uart_request_port, .request_port = digicolor_uart_request_port,
}; };
static void digicolor_uart_console_putchar(struct uart_port *port, int ch) static void digicolor_uart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
while (digicolor_uart_tx_full(port)) while (digicolor_uart_tx_full(port))
cpu_relax(); cpu_relax();

View File

@ -802,7 +802,7 @@ static void __init dz_init_ports(void)
* restored. Welcome to the world of PDP-11! * restored. Welcome to the world of PDP-11!
* ------------------------------------------------------------------- * -------------------------------------------------------------------
*/ */
static void dz_console_putchar(struct uart_port *uport, int ch) static void dz_console_putchar(struct uart_port *uport, unsigned char ch)
{ {
struct dz_port *dport = to_dport(uport); struct dz_port *dport = to_dport(uport);
unsigned long flags; unsigned long flags;

View File

@ -21,7 +21,7 @@
/* /*
* Semihosting-based debug console * Semihosting-based debug console
*/ */
static void smh_putc(struct uart_port *port, int c) static void smh_putc(struct uart_port *port, unsigned char c)
{ {
#ifdef CONFIG_ARM64 #ifdef CONFIG_ARM64
asm volatile("mov x1, %0\n" asm volatile("mov x1, %0\n"

View File

@ -10,7 +10,7 @@
#include <linux/serial_core.h> #include <linux/serial_core.h>
#include <asm/sbi.h> #include <asm/sbi.h>
static void sbi_putc(struct uart_port *port, int c) static void sbi_putc(struct uart_port *port, unsigned char c)
{ {
sbi_console_putchar(c); sbi_console_putchar(c);
} }

View File

@ -553,7 +553,7 @@ static const struct uart_ops linflex_pops = {
static struct uart_port *linflex_ports[UART_NR]; static struct uart_port *linflex_ports[UART_NR];
#ifdef CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE #ifdef CONFIG_SERIAL_FSL_LINFLEXUART_CONSOLE
static void linflex_console_putchar(struct uart_port *port, int ch) static void linflex_console_putchar(struct uart_port *port, unsigned char ch)
{ {
unsigned long cr; unsigned long cr;
@ -578,7 +578,7 @@ static void linflex_console_putchar(struct uart_port *port, int ch)
} }
} }
static void linflex_earlycon_putchar(struct uart_port *port, int ch) static void linflex_earlycon_putchar(struct uart_port *port, unsigned char ch)
{ {
unsigned long flags; unsigned long flags;
char *ret; char *ret;

View File

@ -2333,13 +2333,13 @@ static const struct uart_ops lpuart32_pops = {
static struct lpuart_port *lpuart_ports[UART_NR]; static struct lpuart_port *lpuart_ports[UART_NR];
#ifdef CONFIG_SERIAL_FSL_LPUART_CONSOLE #ifdef CONFIG_SERIAL_FSL_LPUART_CONSOLE
static void lpuart_console_putchar(struct uart_port *port, int ch) static void lpuart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
lpuart_wait_bit_set(port, UARTSR1, UARTSR1_TDRE); lpuart_wait_bit_set(port, UARTSR1, UARTSR1_TDRE);
writeb(ch, port->membase + UARTDR); writeb(ch, port->membase + UARTDR);
} }
static void lpuart32_console_putchar(struct uart_port *port, int ch) static void lpuart32_console_putchar(struct uart_port *port, unsigned char ch)
{ {
lpuart32_wait_bit_set(port, UARTSTAT, UARTSTAT_TDRE); lpuart32_wait_bit_set(port, UARTSTAT, UARTSTAT_TDRE);
lpuart32_write(port, ch, UARTDATA); lpuart32_write(port, ch, UARTDATA);

View File

@ -1968,7 +1968,7 @@ static const struct uart_ops imx_uart_pops = {
static struct imx_port *imx_uart_ports[UART_NR]; static struct imx_port *imx_uart_ports[UART_NR];
#if IS_ENABLED(CONFIG_SERIAL_IMX_CONSOLE) #if IS_ENABLED(CONFIG_SERIAL_IMX_CONSOLE)
static void imx_uart_console_putchar(struct uart_port *port, int ch) static void imx_uart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct imx_port *sport = (struct imx_port *)port; struct imx_port *sport = (struct imx_port *)port;

View File

@ -16,7 +16,7 @@
#define UTS_TXFULL (1<<4) /* TxFIFO full */ #define UTS_TXFULL (1<<4) /* TxFIFO full */
#define IMX21_UTS 0xb4 /* UART Test Register on all other i.mx*/ #define IMX21_UTS 0xb4 /* UART Test Register on all other i.mx*/
static void imx_uart_console_early_putchar(struct uart_port *port, int ch) static void imx_uart_console_early_putchar(struct uart_port *port, unsigned char ch)
{ {
while (readl_relaxed(port->membase + IMX21_UTS) & UTS_TXFULL) while (readl_relaxed(port->membase + IMX21_UTS) & UTS_TXFULL)
cpu_relax(); cpu_relax();

View File

@ -990,7 +990,7 @@ static struct zilog_layout * __init get_zs(int chip)
#define ZS_PUT_CHAR_MAX_DELAY 2000 /* 10 ms */ #define ZS_PUT_CHAR_MAX_DELAY 2000 /* 10 ms */
#ifdef CONFIG_SERIAL_IP22_ZILOG_CONSOLE #ifdef CONFIG_SERIAL_IP22_ZILOG_CONSOLE
static void ip22zilog_put_char(struct uart_port *port, int ch) static void ip22zilog_put_char(struct uart_port *port, unsigned char ch)
{ {
struct zilog_channel *channel = ZILOG_CHANNEL_FROM_PORT(port); struct zilog_channel *channel = ZILOG_CHANNEL_FROM_PORT(port);
int loops = ZS_PUT_CHAR_MAX_DELAY; int loops = ZS_PUT_CHAR_MAX_DELAY;

View File

@ -598,7 +598,7 @@ static const struct uart_ops lqasc_pops = {
#ifdef CONFIG_SERIAL_LANTIQ_CONSOLE #ifdef CONFIG_SERIAL_LANTIQ_CONSOLE
static void static void
lqasc_console_putchar(struct uart_port *port, int ch) lqasc_console_putchar(struct uart_port *port, unsigned char ch)
{ {
int fifofree; int fifofree;

View File

@ -93,7 +93,7 @@ static void liteuart_timer(struct timer_list *t)
mod_timer(&uart->timer, jiffies + uart_poll_timeout(port)); mod_timer(&uart->timer, jiffies + uart_poll_timeout(port));
} }
static void liteuart_putchar(struct uart_port *port, int ch) static void liteuart_putchar(struct uart_port *port, unsigned char ch)
{ {
while (litex_read8(port->membase + OFF_TXFULL)) while (litex_read8(port->membase + OFF_TXFULL))
cpu_relax(); cpu_relax();

View File

@ -122,7 +122,7 @@ static void wait_for_xmit_ready(struct uart_port *port)
} }
} }
static void lpc32xx_hsuart_console_putchar(struct uart_port *port, int ch) static void lpc32xx_hsuart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
wait_for_xmit_ready(port); wait_for_xmit_ready(port);
writel((u32)ch, LPC32XX_HSUART_FIFO(port->membase)); writel((u32)ch, LPC32XX_HSUART_FIFO(port->membase));

View File

@ -513,7 +513,7 @@ static void meson_uart_enable_tx_engine(struct uart_port *port)
writel(val, port->membase + AML_UART_CONTROL); writel(val, port->membase + AML_UART_CONTROL);
} }
static void meson_console_putchar(struct uart_port *port, int ch) static void meson_console_putchar(struct uart_port *port, unsigned char ch)
{ {
if (!port->membase) if (!port->membase)
return; return;

View File

@ -400,7 +400,7 @@ static const struct uart_ops mlb_usio_ops = {
#ifdef CONFIG_SERIAL_MILBEAUT_USIO_CONSOLE #ifdef CONFIG_SERIAL_MILBEAUT_USIO_CONSOLE
static void mlb_usio_console_putchar(struct uart_port *port, int c) static void mlb_usio_console_putchar(struct uart_port *port, unsigned char c)
{ {
while (!(readb(port->membase + MLB_USIO_REG_SSR) & MLB_USIO_SSR_TDRE)) while (!(readb(port->membase + MLB_USIO_REG_SSR) & MLB_USIO_SSR_TDRE))
cpu_relax(); cpu_relax();

View File

@ -432,7 +432,7 @@ static const struct uart_ops mps2_uart_pops = {
static DEFINE_IDR(ports_idr); static DEFINE_IDR(ports_idr);
#ifdef CONFIG_SERIAL_MPS2_UART_CONSOLE #ifdef CONFIG_SERIAL_MPS2_UART_CONSOLE
static void mps2_uart_console_putchar(struct uart_port *port, int ch) static void mps2_uart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
while (mps2_uart_read8(port, UARTn_STATE) & UARTn_STATE_TX_FULL) while (mps2_uart_read8(port, UARTn_STATE) & UARTn_STATE_TX_FULL)
cpu_relax(); cpu_relax();
@ -484,7 +484,7 @@ static struct console mps2_uart_console = {
#define MPS2_SERIAL_CONSOLE (&mps2_uart_console) #define MPS2_SERIAL_CONSOLE (&mps2_uart_console)
static void mps2_early_putchar(struct uart_port *port, int ch) static void mps2_early_putchar(struct uart_port *port, unsigned char ch)
{ {
while (readb(port->membase + UARTn_STATE) & UARTn_STATE_TX_FULL) while (readb(port->membase + UARTn_STATE) & UARTn_STATE_TX_FULL)
cpu_relax(); cpu_relax();

View File

@ -676,7 +676,7 @@ static const struct uart_ops mvebu_uart_ops = {
#ifdef CONFIG_SERIAL_MVEBU_CONSOLE #ifdef CONFIG_SERIAL_MVEBU_CONSOLE
/* Early Console */ /* Early Console */
static void mvebu_uart_putc(struct uart_port *port, int c) static void mvebu_uart_putc(struct uart_port *port, unsigned char c)
{ {
unsigned int st; unsigned int st;
@ -737,7 +737,7 @@ static void wait_for_xmite(struct uart_port *port)
(val & STAT_TX_EMP), 1, 10000); (val & STAT_TX_EMP), 1, 10000);
} }
static void mvebu_uart_console_putchar(struct uart_port *port, int ch) static void mvebu_uart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
wait_for_xmitr(port); wait_for_xmitr(port);
writel(ch, port->membase + UART_TSH(port)); writel(ch, port->membase + UART_TSH(port));

View File

@ -1305,7 +1305,7 @@ static const struct uart_ops mxs_auart_ops = {
static struct mxs_auart_port *auart_port[MXS_AUART_PORTS]; static struct mxs_auart_port *auart_port[MXS_AUART_PORTS];
#ifdef CONFIG_SERIAL_MXS_AUART_CONSOLE #ifdef CONFIG_SERIAL_MXS_AUART_CONSOLE
static void mxs_auart_console_putchar(struct uart_port *port, int ch) static void mxs_auart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct mxs_auart_port *s = to_auart_port(port); struct mxs_auart_port *s = to_auart_port(port);
unsigned int to = 1000; unsigned int to = 1000;

View File

@ -1180,7 +1180,7 @@ static void omap_serial_early_out(struct uart_port *port, int offset,
writew(value, port->membase + offset); writew(value, port->membase + offset);
} }
static void omap_serial_early_putc(struct uart_port *port, int c) static void omap_serial_early_putc(struct uart_port *port, unsigned char c)
{ {
unsigned int status; unsigned int status;
@ -1224,7 +1224,7 @@ static struct uart_omap_port *serial_omap_console_ports[OMAP_MAX_HSUART_PORTS];
static struct uart_driver serial_omap_reg; static struct uart_driver serial_omap_reg;
static void serial_omap_console_putchar(struct uart_port *port, int ch) static void serial_omap_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct uart_omap_port *up = to_uart_omap_port(port); struct uart_omap_port *up = to_uart_omap_port(port);

View File

@ -516,7 +516,7 @@ static const struct uart_ops owl_uart_ops = {
#ifdef CONFIG_SERIAL_OWL_CONSOLE #ifdef CONFIG_SERIAL_OWL_CONSOLE
static void owl_console_putchar(struct uart_port *port, int ch) static void owl_console_putchar(struct uart_port *port, unsigned char ch)
{ {
if (!port->membase) if (!port->membase)
return; return;

View File

@ -1600,7 +1600,7 @@ static const struct uart_ops pch_uart_ops = {
#ifdef CONFIG_SERIAL_PCH_UART_CONSOLE #ifdef CONFIG_SERIAL_PCH_UART_CONSOLE
static void pch_console_putchar(struct uart_port *port, int ch) static void pch_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct eg20t_port *priv = struct eg20t_port *priv =
container_of(port, struct eg20t_port, port); container_of(port, struct eg20t_port, port);

View File

@ -691,7 +691,7 @@ static const struct uart_ops pic32_uart_ops = {
#ifdef CONFIG_SERIAL_PIC32_CONSOLE #ifdef CONFIG_SERIAL_PIC32_CONSOLE
/* output given char */ /* output given char */
static void pic32_console_putchar(struct uart_port *port, int ch) static void pic32_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct pic32_sport *sport = to_pic32_sport(port); struct pic32_sport *sport = to_pic32_sport(port);

View File

@ -1944,7 +1944,7 @@ static void __exit exit_pmz(void)
#ifdef CONFIG_SERIAL_PMACZILOG_CONSOLE #ifdef CONFIG_SERIAL_PMACZILOG_CONSOLE
static void pmz_console_putchar(struct uart_port *port, int ch) static void pmz_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct uart_pmac_port *uap = struct uart_pmac_port *uap =
container_of(port, struct uart_pmac_port, port); container_of(port, struct uart_pmac_port, port);

View File

@ -605,7 +605,7 @@ static void wait_for_xmitr(struct uart_pxa_port *up)
} }
} }
static void serial_pxa_console_putchar(struct uart_port *port, int ch) static void serial_pxa_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct uart_pxa_port *up = (struct uart_pxa_port *)port; struct uart_pxa_port *up = (struct uart_pxa_port *)port;

View File

@ -397,7 +397,7 @@ static void qcom_geni_serial_poll_put_char(struct uart_port *uport,
#endif #endif
#ifdef CONFIG_SERIAL_QCOM_GENI_CONSOLE #ifdef CONFIG_SERIAL_QCOM_GENI_CONSOLE
static void qcom_geni_serial_wr_char(struct uart_port *uport, int ch) static void qcom_geni_serial_wr_char(struct uart_port *uport, unsigned char ch)
{ {
struct qcom_geni_private_data *private_data = uport->private_data; struct qcom_geni_private_data *private_data = uport->private_data;

View File

@ -573,7 +573,7 @@ static const struct uart_ops rda_uart_ops = {
#ifdef CONFIG_SERIAL_RDA_CONSOLE #ifdef CONFIG_SERIAL_RDA_CONSOLE
static void rda_console_putchar(struct uart_port *port, int ch) static void rda_console_putchar(struct uart_port *port, unsigned char ch)
{ {
if (!port->membase) if (!port->membase)
return; return;

View File

@ -695,7 +695,7 @@ void __init sa1100_register_uart(int idx, int port)
#ifdef CONFIG_SERIAL_SA1100_CONSOLE #ifdef CONFIG_SERIAL_SA1100_CONSOLE
static void sa1100_console_putchar(struct uart_port *port, int ch) static void sa1100_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct sa1100_port *sport = struct sa1100_port *sport =
container_of(port, struct sa1100_port, port); container_of(port, struct sa1100_port, port);

View File

@ -2478,7 +2478,7 @@ static void s3c24xx_serial_put_poll_char(struct uart_port *port,
#endif /* CONFIG_CONSOLE_POLL */ #endif /* CONFIG_CONSOLE_POLL */
static void static void
s3c24xx_serial_console_putchar(struct uart_port *port, int ch) s3c24xx_serial_console_putchar(struct uart_port *port, unsigned char ch)
{ {
unsigned int ufcon = rd_regl(port, S3C2410_UFCON); unsigned int ufcon = rd_regl(port, S3C2410_UFCON);
@ -2965,7 +2965,7 @@ static void samsung_early_busyuart_fifo(struct uart_port *port)
; ;
} }
static void samsung_early_putc(struct uart_port *port, int c) static void samsung_early_putc(struct uart_port *port, unsigned char c)
{ {
if (readl(port->membase + S3C2410_UFCON) & S3C2410_UFCON_FIFOMODE) if (readl(port->membase + S3C2410_UFCON) & S3C2410_UFCON_FIFOMODE)
samsung_early_busyuart_fifo(port); samsung_early_busyuart_fifo(port);

View File

@ -820,7 +820,7 @@ static void __init sbd_probe_duarts(void)
* console output. The console_lock is held by the caller, so we * console output. The console_lock is held by the caller, so we
* shouldn't be interrupted for more console activity. * shouldn't be interrupted for more console activity.
*/ */
static void sbd_console_putchar(struct uart_port *uport, int ch) static void sbd_console_putchar(struct uart_port *uport, unsigned char ch)
{ {
struct sbd_port *sport = to_sport(uport); struct sbd_port *sport = to_sport(uport);

View File

@ -828,7 +828,7 @@ static const struct uart_ops sccnxp_ops = {
}; };
#ifdef CONFIG_SERIAL_SCCNXP_CONSOLE #ifdef CONFIG_SERIAL_SCCNXP_CONSOLE
static void sccnxp_console_putchar(struct uart_port *port, int c) static void sccnxp_console_putchar(struct uart_port *port, unsigned char c)
{ {
int tryes = 100000; int tryes = 100000;

View File

@ -1911,7 +1911,7 @@ static void uart_port_spin_lock_init(struct uart_port *port)
*/ */
void uart_console_write(struct uart_port *port, const char *s, void uart_console_write(struct uart_port *port, const char *s,
unsigned int count, unsigned int count,
void (*putchar)(struct uart_port *, int)) void (*putchar)(struct uart_port *, unsigned char))
{ {
unsigned int i; unsigned int i;

View File

@ -876,7 +876,7 @@ static void __init serial_txx9_register_ports(struct uart_driver *drv,
#ifdef CONFIG_SERIAL_TXX9_CONSOLE #ifdef CONFIG_SERIAL_TXX9_CONSOLE
static void serial_txx9_console_putchar(struct uart_port *port, int ch) static void serial_txx9_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct uart_txx9_port *up = to_uart_txx9_port(port); struct uart_txx9_port *up = to_uart_txx9_port(port);

View File

@ -2960,7 +2960,7 @@ static void sci_cleanup_single(struct sci_port *port)
#if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) || \ #if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) || \
defined(CONFIG_SERIAL_SH_SCI_EARLYCON) defined(CONFIG_SERIAL_SH_SCI_EARLYCON)
static void serial_console_putchar(struct uart_port *port, int ch) static void serial_console_putchar(struct uart_port *port, unsigned char ch)
{ {
sci_poll_put_char(port, ch); sci_poll_put_char(port, ch);
} }

View File

@ -756,7 +756,7 @@ static void sifive_serial_poll_put_char(struct uart_port *port,
*/ */
#ifdef CONFIG_SERIAL_EARLYCON #ifdef CONFIG_SERIAL_EARLYCON
static void early_sifive_serial_putc(struct uart_port *port, int c) static void early_sifive_serial_putc(struct uart_port *port, unsigned char c)
{ {
while (__ssp_early_readl(port, SIFIVE_SERIAL_TXDATA_OFFS) & while (__ssp_early_readl(port, SIFIVE_SERIAL_TXDATA_OFFS) &
SIFIVE_SERIAL_TXDATA_FULL_MASK) SIFIVE_SERIAL_TXDATA_FULL_MASK)
@ -800,7 +800,7 @@ OF_EARLYCON_DECLARE(sifive, "sifive,fu540-c000-uart0",
static struct sifive_serial_port *sifive_serial_console_ports[SIFIVE_SERIAL_MAX_PORTS]; static struct sifive_serial_port *sifive_serial_console_ports[SIFIVE_SERIAL_MAX_PORTS];
static void sifive_serial_console_putchar(struct uart_port *port, int ch) static void sifive_serial_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct sifive_serial_port *ssp = port_to_sifive_serial_port(port); struct sifive_serial_port *ssp = port_to_sifive_serial_port(port);

View File

@ -984,7 +984,7 @@ static void wait_for_xmitr(struct uart_port *port)
} while (status & SPRD_TX_FIFO_CNT_MASK); } while (status & SPRD_TX_FIFO_CNT_MASK);
} }
static void sprd_console_putchar(struct uart_port *port, int ch) static void sprd_console_putchar(struct uart_port *port, unsigned char ch)
{ {
wait_for_xmitr(port); wait_for_xmitr(port);
serial_out(port, SPRD_TXD, ch); serial_out(port, SPRD_TXD, ch);
@ -1058,7 +1058,7 @@ console_initcall(sprd_serial_console_init);
#define SPRD_CONSOLE (&sprd_console) #define SPRD_CONSOLE (&sprd_console)
/* Support for earlycon */ /* Support for earlycon */
static void sprd_putc(struct uart_port *port, int c) static void sprd_putc(struct uart_port *port, unsigned char c)
{ {
unsigned int timeout = SPRD_TIMEOUT; unsigned int timeout = SPRD_TIMEOUT;

View File

@ -854,7 +854,7 @@ static int asc_serial_resume(struct device *dev)
/*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/
#ifdef CONFIG_SERIAL_ST_ASC_CONSOLE #ifdef CONFIG_SERIAL_ST_ASC_CONSOLE
static void asc_console_putchar(struct uart_port *port, int ch) static void asc_console_putchar(struct uart_port *port, unsigned char ch)
{ {
unsigned int timeout = 1000000; unsigned int timeout = 1000000;

View File

@ -1641,7 +1641,7 @@ static int stm32_usart_serial_remove(struct platform_device *pdev)
} }
#ifdef CONFIG_SERIAL_STM32_CONSOLE #ifdef CONFIG_SERIAL_STM32_CONSOLE
static void stm32_usart_console_putchar(struct uart_port *port, int ch) static void stm32_usart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct stm32_port *stm32_port = to_stm32_port(port); struct stm32_port *stm32_port = to_stm32_port(port);
const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs; const struct stm32_usart_offsets *ofs = &stm32_port->info->ofs;

View File

@ -500,7 +500,8 @@ static const struct uart_ops sunplus_uart_ops = {
#ifdef CONFIG_SERIAL_SUNPLUS_CONSOLE #ifdef CONFIG_SERIAL_SUNPLUS_CONSOLE
struct sunplus_uart_port *sunplus_console_ports[SUP_UART_NR]; struct sunplus_uart_port *sunplus_console_ports[SUP_UART_NR];
static void sunplus_uart_console_putchar(struct uart_port *port, int ch) static void sunplus_uart_console_putchar(struct uart_port *port,
unsigned char ch)
{ {
wait_for_xmitr(port); wait_for_xmitr(port);
sp_uart_put_char(port, ch); sp_uart_put_char(port, ch);
@ -736,7 +737,7 @@ static void __exit sunplus_uart_exit(void)
module_exit(sunplus_uart_exit); module_exit(sunplus_uart_exit);
#ifdef CONFIG_SERIAL_EARLYCON #ifdef CONFIG_SERIAL_EARLYCON
static void sunplus_uart_putc(struct uart_port *port, int c) static void sunplus_uart_putc(struct uart_port *port, unsigned char c)
{ {
unsigned int val; unsigned int val;
int ret; int ret;

View File

@ -846,7 +846,7 @@ static struct uart_sunsab_port *sunsab_ports;
#ifdef CONFIG_SERIAL_SUNSAB_CONSOLE #ifdef CONFIG_SERIAL_SUNSAB_CONSOLE
static void sunsab_console_putchar(struct uart_port *port, int c) static void sunsab_console_putchar(struct uart_port *port, unsigned char c)
{ {
struct uart_sunsab_port *up = struct uart_sunsab_port *up =
container_of(port, struct uart_sunsab_port, port); container_of(port, struct uart_sunsab_port, port);

View File

@ -1281,7 +1281,7 @@ static void wait_for_xmitr(struct uart_sunsu_port *up)
} }
} }
static void sunsu_console_putchar(struct uart_port *port, int ch) static void sunsu_console_putchar(struct uart_port *port, unsigned char ch)
{ {
struct uart_sunsu_port *up = struct uart_sunsu_port *up =
container_of(port, struct uart_sunsu_port, port); container_of(port, struct uart_sunsu_port, port);

View File

@ -100,7 +100,7 @@ struct uart_sunzilog_port {
#endif #endif
}; };
static void sunzilog_putchar(struct uart_port *port, int ch); static void sunzilog_putchar(struct uart_port *port, unsigned char ch);
#define ZILOG_CHANNEL_FROM_PORT(PORT) ((struct zilog_channel __iomem *)((PORT)->membase)) #define ZILOG_CHANNEL_FROM_PORT(PORT) ((struct zilog_channel __iomem *)((PORT)->membase))
#define UART_ZILOG(PORT) ((struct uart_sunzilog_port *)(PORT)) #define UART_ZILOG(PORT) ((struct uart_sunzilog_port *)(PORT))
@ -1125,7 +1125,7 @@ static void sunzilog_free_tables(void)
#define ZS_PUT_CHAR_MAX_DELAY 2000 /* 10 ms */ #define ZS_PUT_CHAR_MAX_DELAY 2000 /* 10 ms */
static void __maybe_unused sunzilog_putchar(struct uart_port *port, int ch) static void __maybe_unused sunzilog_putchar(struct uart_port *port, unsigned char ch)
{ {
struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(port); struct zilog_channel __iomem *channel = ZILOG_CHANNEL_FROM_PORT(port);
int loops = ZS_PUT_CHAR_MAX_DELAY; int loops = ZS_PUT_CHAR_MAX_DELAY;

View File

@ -482,7 +482,7 @@ static void ulite_console_wait_tx(struct uart_port *port)
"timeout waiting for TX buffer empty\n"); "timeout waiting for TX buffer empty\n");
} }
static void ulite_console_putchar(struct uart_port *port, int ch) static void ulite_console_putchar(struct uart_port *port, unsigned char ch)
{ {
ulite_console_wait_tx(port); ulite_console_wait_tx(port);
uart_out32(ch, ULITE_TX, port); uart_out32(ch, ULITE_TX, port);
@ -558,7 +558,7 @@ static struct console ulite_console = {
.data = &ulite_uart_driver, .data = &ulite_uart_driver,
}; };
static void early_uartlite_putc(struct uart_port *port, int c) static void early_uartlite_putc(struct uart_port *port, unsigned char c)
{ {
/* /*
* Limit how many times we'll spin waiting for TX FIFO status. * Limit how many times we'll spin waiting for TX FIFO status.

View File

@ -730,7 +730,7 @@ static void wait_for_xmitr(struct uart_port *port)
} }
} }
static void siu_console_putchar(struct uart_port *port, int ch) static void siu_console_putchar(struct uart_port *port, unsigned char ch)
{ {
wait_for_xmitr(port); wait_for_xmitr(port);
siu_write(port, UART_TX, ch); siu_write(port, UART_TX, ch);

View File

@ -484,7 +484,7 @@ static void wait_for_xmitr(struct uart_port *port)
} while (status & 0x10); } while (status & 0x10);
} }
static void vt8500_console_putchar(struct uart_port *port, int c) static void vt8500_console_putchar(struct uart_port *port, unsigned char c)
{ {
wait_for_xmitr(port); wait_for_xmitr(port);
writeb(c, port->membase + VT8500_TXFIFO); writeb(c, port->membase + VT8500_TXFIFO);

View File

@ -1142,7 +1142,7 @@ static struct uart_driver cdns_uart_uart_driver;
* @port: Handle to the uart port structure * @port: Handle to the uart port structure
* @ch: Character to be written * @ch: Character to be written
*/ */
static void cdns_uart_console_putchar(struct uart_port *port, int ch) static void cdns_uart_console_putchar(struct uart_port *port, unsigned char ch)
{ {
while (readl(port->membase + CDNS_UART_SR) & CDNS_UART_SR_TXFULL) while (readl(port->membase + CDNS_UART_SR) & CDNS_UART_SR_TXFULL)
cpu_relax(); cpu_relax();

View File

@ -1124,7 +1124,7 @@ static int __init zs_probe_sccs(void)
#ifdef CONFIG_SERIAL_ZS_CONSOLE #ifdef CONFIG_SERIAL_ZS_CONSOLE
static void zs_console_putchar(struct uart_port *uport, int ch) static void zs_console_putchar(struct uart_port *uport, unsigned char ch)
{ {
struct zs_port *zport = to_zport(uport); struct zs_port *zport = to_zport(uport);
struct zs_scc *scc = zport->scc; struct zs_scc *scc = zport->scc;

View File

@ -399,7 +399,7 @@ int uart_set_options(struct uart_port *port, struct console *co, int baud,
struct tty_driver *uart_console_device(struct console *co, int *index); struct tty_driver *uart_console_device(struct console *co, int *index);
void uart_console_write(struct uart_port *port, const char *s, void uart_console_write(struct uart_port *port, const char *s,
unsigned int count, unsigned int count,
void (*putchar)(struct uart_port *, int)); void (*putchar)(struct uart_port *, unsigned char));
/* /*
* Port/driver registration/removal * Port/driver registration/removal