summaryrefslogtreecommitdiffstats
path: root/drivers/tty
diff options
context:
space:
mode:
authorPaul Cercueil <paul@crapouillou.net>2017-12-28 14:07:09 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-01-09 16:49:14 +0100
commitea507ce3e05a462e170db4b6af1002fb0ed72916 (patch)
tree3c6882dc0f651337d8677ae719e468f7e73f046b /drivers/tty
parentaed3d7012ca79f102bf98cca808c7ff5ceb26c57 (diff)
downloadlinux-ea507ce3e05a462e170db4b6af1002fb0ed72916.tar.gz
linux-ea507ce3e05a462e170db4b6af1002fb0ed72916.tar.bz2
linux-ea507ce3e05a462e170db4b6af1002fb0ed72916.zip
serial: 8250_ingenic: Parse earlycon options
In the devicetree, it is possible to specify the baudrate, parity, bits, flow of the early console, by passing a configuration string like this: aliases { serial0 = &uart0; }; chosen { stdout-path = "serial0:57600n8"; }; This, for instance, will configure the early console for a baudrate of 57600 bps, no parity, and 8 bits per baud. This patches implements parsing of this configuration string in the 8250_ingenic driver, which previously just ignored it. Signed-off-by: Paul Cercueil <paul@crapouillou.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty')
-rw-r--r--drivers/tty/serial/8250/8250_ingenic.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/tty/serial/8250/8250_ingenic.c b/drivers/tty/serial/8250/8250_ingenic.c
index 165b4bb3de93..15a8c8dfa92b 100644
--- a/drivers/tty/serial/8250/8250_ingenic.c
+++ b/drivers/tty/serial/8250/8250_ingenic.c
@@ -91,14 +91,22 @@ static int __init ingenic_early_console_setup(struct earlycon_device *dev,
const char *opt)
{
struct uart_port *port = &dev->port;
- unsigned int baud, divisor;
+ unsigned int divisor;
+ int baud = 115200;
if (!dev->port.membase)
return -ENODEV;
+ if (opt) {
+ unsigned int parity, bits, flow; /* unused for now */
+
+ uart_parse_options(opt, &baud, &parity, &bits, &flow);
+ }
+
ingenic_early_console_setup_clock(dev);
- baud = dev->baud ?: 115200;
+ if (dev->baud)
+ baud = dev->baud;
divisor = DIV_ROUND_CLOSEST(port->uartclk, 16 * baud);
early_out(port, UART_IER, 0);