diff options
author | Michal Simek <michal.simek@xilinx.com> | 2014-09-10 12:43:02 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-09-28 21:32:37 -0400 |
commit | 6fa62fc46e10f34aed70d2cfcf573ba8d3833e18 (patch) | |
tree | d1ba4c97c243a577b80e920a6873681eac817992 /drivers/tty | |
parent | a4688bcd34bd2f4fe7fb88856c85d3091270ab53 (diff) | |
download | op-kernel-dev-6fa62fc46e10f34aed70d2cfcf573ba8d3833e18.zip op-kernel-dev-6fa62fc46e10f34aed70d2cfcf573ba8d3833e18.tar.gz |
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: 0d3c673e7881e691991b2a4745bd4f149603baa2)
"tty/serial: add arm/arm64 semihosting earlycon"
(sha1: d50d7269ebcb438afa346cdffce0f4e2a1b9e831)
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty')
-rw-r--r-- | drivers/tty/serial/Kconfig | 1 | ||||
-rw-r--r-- | drivers/tty/serial/xilinx_uartps.c | 19 |
2 files changed, 20 insertions, 0 deletions
diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig index 81f6ee7..02a896f 100644 --- a/drivers/tty/serial/Kconfig +++ b/drivers/tty/serial/Kconfig @@ -1429,6 +1429,7 @@ config SERIAL_XILINX_PS_UART_CONSOLE bool "Cadence UART console support" depends on SERIAL_XILINX_PS_UART=y select SERIAL_CORE_CONSOLE + select SERIAL_EARLYCON help Enable a Cadence UART port to be the system console. diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c index 7f8027f..200c1af 100644 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@ -1051,6 +1051,25 @@ static void cdns_uart_console_putchar(struct uart_port *port, int ch) 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 * @co: Console handle |