serial: cadence: Add generic earlycon support
Add earlycon support for the cadence serial port. This is based on recent patches: "tty/serial: pl011: add generic earlycon support" (sha1:0d3c673e78
) "tty/serial: add arm/arm64 semihosting earlycon" (sha1:d50d7269eb
) Signed-off-by: Michal Simek <michal.simek@xilinx.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a4688bcd34
commit
6fa62fc46e
@ -921,6 +921,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
|
|
||||||
earlycon= [KNL] Output early console device and options.
|
earlycon= [KNL] Output early console device and options.
|
||||||
|
|
||||||
|
cdns,<addr>
|
||||||
|
Start an early, polled-mode console on a cadence serial
|
||||||
|
port at the specified address. The cadence serial port
|
||||||
|
must already be setup and configured. Options are not
|
||||||
|
yet supported.
|
||||||
|
|
||||||
uart[8250],io,<addr>[,options]
|
uart[8250],io,<addr>[,options]
|
||||||
uart[8250],mmio,<addr>[,options]
|
uart[8250],mmio,<addr>[,options]
|
||||||
uart[8250],mmio32,<addr>[,options]
|
uart[8250],mmio32,<addr>[,options]
|
||||||
|
@ -1429,6 +1429,7 @@ config SERIAL_XILINX_PS_UART_CONSOLE
|
|||||||
bool "Cadence UART console support"
|
bool "Cadence UART console support"
|
||||||
depends on SERIAL_XILINX_PS_UART=y
|
depends on SERIAL_XILINX_PS_UART=y
|
||||||
select SERIAL_CORE_CONSOLE
|
select SERIAL_CORE_CONSOLE
|
||||||
|
select SERIAL_EARLYCON
|
||||||
help
|
help
|
||||||
Enable a Cadence UART port to be the system console.
|
Enable a Cadence UART port to be the system console.
|
||||||
|
|
||||||
|
@ -1051,6 +1051,25 @@ static void cdns_uart_console_putchar(struct uart_port *port, int ch)
|
|||||||
cdns_uart_writel(ch, CDNS_UART_FIFO_OFFSET);
|
cdns_uart_writel(ch, CDNS_UART_FIFO_OFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cdns_early_write(struct console *con, const char *s, unsigned n)
|
||||||
|
{
|
||||||
|
struct earlycon_device *dev = con->data;
|
||||||
|
|
||||||
|
uart_console_write(&dev->port, s, n, cdns_uart_console_putchar);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __init cdns_early_console_setup(struct earlycon_device *device,
|
||||||
|
const char *opt)
|
||||||
|
{
|
||||||
|
if (!device->port.membase)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
device->con->write = cdns_early_write;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EARLYCON_DECLARE(cdns, cdns_early_console_setup);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cdns_uart_console_write - perform write operation
|
* cdns_uart_console_write - perform write operation
|
||||||
* @co: Console handle
|
* @co: Console handle
|
||||||
|
Loading…
Reference in New Issue
Block a user