summaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-11-26 13:08:28 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2014-01-22 07:53:21 +0100
commitdac65f99e8bf1fbe2e15fa96ef901623bb49dc89 (patch)
treeee748a61dd9c8eb8148bc440e8a8df5597637f4e /drivers/serial
parent1ebf5ff0c18a44c968533bc47d9f26215ffb779d (diff)
downloadbarebox-dac65f99e8bf1fbe2e15fa96ef901623bb49dc89.tar.gz
console: Set Linux console parameter automatically
Linux specifies the linux,stdout-path property in the /chosen node in the devicetree. Unfortunately this is ignored in most cases. For cases in which barebox uses this property for its own use we translate this into a Linux boot arg with: - the console name provided by the serial driver - the the instance from the 'serial' alias - the baudrate from the actual baudrate. So with this it's for devicetee enabled boards no longer necessary to manually assign a console= parameter. Should a user not want to use the automatically assigned parameter it should do: global.linux.bootargs.console= in the environment. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/serial_imx.c1
-rw-r--r--drivers/serial/serial_ns16550.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/serial/serial_imx.c b/drivers/serial/serial_imx.c
index 8468fa0..e0bd185 100644
--- a/drivers/serial/serial_imx.c
+++ b/drivers/serial/serial_imx.c
@@ -336,6 +336,7 @@ static int imx_serial_probe(struct device_d *dev)
cdev->getc = imx_serial_getc;
cdev->flush = imx_serial_flush;
cdev->setbrg = imx_serial_setbaudrate;
+ cdev->linux_console_name = "ttymxc";
imx_serial_init_port(cdev);
diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c
index a8487b0..f1da44b 100644
--- a/drivers/serial/serial_ns16550.c
+++ b/drivers/serial/serial_ns16550.c
@@ -57,6 +57,7 @@ static inline struct ns16550_priv *to_ns16550_priv(struct console_device *cdev)
struct ns16550_drvdata {
void (*init_port)(struct console_device *cdev);
+ const char *linux_console_name;
};
/**
@@ -251,6 +252,7 @@ static struct ns16550_drvdata ns16550_drvdata = {
static __maybe_unused struct ns16550_drvdata omap_drvdata = {
.init_port = ns16550_omap_init_port,
+ .linux_console_name = "ttyO",
};
/**
@@ -312,6 +314,7 @@ static int ns16550_probe(struct device_d *dev)
cdev->putc = ns16550_putc;
cdev->getc = ns16550_getc;
cdev->setbrg = ns16550_setbaudrate;
+ cdev->linux_console_name = devtype->linux_console_name;
devtype->init_port(cdev);