[rtems commit] leon, apbuart: Inherit HW parameters on sysconsole
Daniel Hellstrom
danielh at rtems.org
Tue May 2 10:38:43 UTC 2017
Module: rtems
Branch: master
Commit: f164a294706afeea3507559ef4cb4b273ef4a96b
Changeset: http://git.rtems.org/rtems/commit/?id=f164a294706afeea3507559ef4cb4b273ef4a96b
Author: Martin Aberg <maberg at gaisler.com>
Date: Fri Mar 10 15:32:38 2017 +0100
leon, apbuart: Inherit HW parameters on sysconsole
The cons layer decides which of the registered console device is granted as
system console. When a device specific console driver performs its first_open,
it inherits UART parameters from boot loader only if it is the system console.
---
c/src/lib/libbsp/sparc/shared/include/cons.h | 8 +++++---
c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c | 10 ++++++----
c/src/lib/libbsp/sparc/shared/uart/cons.c | 4 ++++
3 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/c/src/lib/libbsp/sparc/shared/include/cons.h b/c/src/lib/libbsp/sparc/shared/include/cons.h
index 9a26a26..c30e41c 100644
--- a/c/src/lib/libbsp/sparc/shared/include/cons.h
+++ b/c/src/lib/libbsp/sparc/shared/include/cons.h
@@ -20,12 +20,14 @@
struct console_dev;
-#define CONSOLE_FLAG_SYSCON 0x01
+#define CONSOLE_FLAG_SYSCON 0x01
+#define CONSOLE_FLAG_SYSCON_GRANT 0x02
struct console_dev {
rtems_termios_device_context base;
- /* Set to CONSOLE_FLAG_SYSCON if this UART should be system console and/or
- * debug console.
+ /* Set CONSOLE_FLAG_SYSCON to request this device to be system console
+ * and/or debug console. CONSOLE_FLAG_SYSCON_GRANT will be set on the
+ * device which was selected as system console.
*/
int flags;
char *fsname; /* File system prefix */
diff --git a/c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c b/c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c
index 5f8de74..3b74ae1 100644
--- a/c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c
+++ b/c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c
@@ -440,10 +440,12 @@ static bool first_open(
uart->tty = tty;
- /* Preserve values set by bootloader */
- get_attributes(base, term);
- term->c_oflag |= ONLCR;
- set_attributes(base, term);
+ /* Inherit UART hardware parameters from bootloader on system console */
+ if (uart->condev.flags & CONSOLE_FLAG_SYSCON_GRANT) {
+ get_attributes(base, term);
+ term->c_oflag |= ONLCR;
+ set_attributes(base, term);
+ }
/* Enable TX/RX */
uart->regs->ctrl |= APBUART_CTRL_RE | APBUART_CTRL_TE;
diff --git a/c/src/lib/libbsp/sparc/shared/uart/cons.c b/c/src/lib/libbsp/sparc/shared/uart/cons.c
index 8426add..37f448c 100644
--- a/c/src/lib/libbsp/sparc/shared/uart/cons.c
+++ b/c/src/lib/libbsp/sparc/shared/uart/cons.c
@@ -89,6 +89,10 @@ void console_dev_register(struct console_dev *dev)
/* Not enough console structures */
return;
}
+ dev->flags &= ~CONSOLE_FLAG_SYSCON_GRANT;
+ if (con->flags & FLAG_SYSCON) {
+ dev->flags |= CONSOLE_FLAG_SYSCON_GRANT;
+ }
/* Assign Console */
con->dev = dev;
More information about the vc
mailing list