[rtems commit] bsp/riscv: Simplify printk() support

Sebastian Huber sebh at rtems.org
Fri Jul 6 12:28:47 UTC 2018


Module:    rtems
Branch:    master
Commit:    31f90a2ff4cb40b830c2cbcc184315e424fc8e12
Changeset: http://git.rtems.org/rtems/commit/?id=31f90a2ff4cb40b830c2cbcc184315e424fc8e12

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Jul  6 13:52:22 2018 +0200

bsp/riscv: Simplify printk() support

This is a prepartion to add NS16550 driver support to the console
driver.

Update #3433.

---

 bsps/riscv/riscv/console/console-config.c  | 14 +++++---------
 bsps/riscv/riscv/console/htif.c            | 13 +++++++++----
 bsps/riscv/riscv/include/dev/serial/htif.h |  8 ++------
 3 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/bsps/riscv/riscv/console/console-config.c b/bsps/riscv/riscv/console/console-config.c
index 06b5d69..2cbb209 100644
--- a/bsps/riscv/riscv/console/console-config.c
+++ b/bsps/riscv/riscv/console/console-config.c
@@ -31,17 +31,13 @@ static htif_console_context htif_console_instance;
 
 static struct {
   rtems_termios_device_context *context;
-  void (*write_polled)(
-    rtems_termios_device_context *base,
-    const char *buf,
-    size_t len
-  );
-  int (*poll_char)(rtems_termios_device_context *base);
+  void (*putchar)(rtems_termios_device_context *base, char c);
+  int (*getchar)(rtems_termios_device_context *base);
 } riscv_console;
 
 static void riscv_output_char(char c)
 {
-  (*riscv_console.write_polled)(riscv_console.context, &c, 1);
+  (*riscv_console.putchar)(riscv_console.context, c);
 }
 
 static int riscv_get_console_node(const void *fdt)
@@ -76,8 +72,8 @@ static void riscv_console_probe(void)
       htif_console_context_init(&htif_console_instance.base, node);
 
       riscv_console.context = &htif_console_instance.base;
-      riscv_console.write_polled = htif_console_write_polled;
-      riscv_console.poll_char = htif_console_poll_char;
+      riscv_console.putchar = htif_console_putchar;
+      riscv_console.getchar = htif_console_getchar;
     };
 #endif
 
diff --git a/bsps/riscv/riscv/console/htif.c b/bsps/riscv/riscv/console/htif.c
index 6b9cded..b7cb29c 100644
--- a/bsps/riscv/riscv/console/htif.c
+++ b/bsps/riscv/riscv/console/htif.c
@@ -73,7 +73,7 @@ static void __set_tohost(uintptr_t dev, uintptr_t cmd, uintptr_t data)
   tohost = TOHOST_CMD(dev, cmd, data);
 }
 
-int htif_console_poll_char(rtems_termios_device_context *base)
+int htif_console_getchar(rtems_termios_device_context *base)
 {
   __check_fromhost();
   int ch = htif_console_buf;
@@ -85,7 +85,12 @@ int htif_console_poll_char(rtems_termios_device_context *base)
   return ch - 1;
 }
 
-void htif_console_write_polled(
+void htif_console_putchar(rtems_termios_device_context *base, char c)
+{
+  __set_tohost(1, 1, c);
+}
+
+static void htif_console_write_polled(
   rtems_termios_device_context *base,
   const char *buf,
   size_t len
@@ -94,7 +99,7 @@ void htif_console_write_polled(
   size_t i;
 
   for (i = 0; i < len; ++i) {
-    __set_tohost(1, 1, buf[i]);
+    htif_console_putchar(base, buf[i]);
   }
 }
 
@@ -127,6 +132,6 @@ static bool htif_console_first_open(
 const rtems_termios_device_handler htif_console_handler = {
   .first_open = htif_console_first_open,
   .write = htif_console_write_polled,
-  .poll_read = htif_console_poll_char,
+  .poll_read = htif_console_getchar,
   .mode = TERMIOS_POLLED
 };
diff --git a/bsps/riscv/riscv/include/dev/serial/htif.h b/bsps/riscv/riscv/include/dev/serial/htif.h
index c200a6f..b0d83652 100644
--- a/bsps/riscv/riscv/include/dev/serial/htif.h
+++ b/bsps/riscv/riscv/include/dev/serial/htif.h
@@ -41,13 +41,9 @@ void htif_console_context_init(
   int device_tree_node
 );
 
-void htif_console_write_polled(
-  rtems_termios_device_context *base,
-  const char *buf,
-  size_t len
-);
+void htif_console_putchar(rtems_termios_device_context *base, char c);
 
-int htif_console_poll_char(rtems_termios_device_context *base);
+int htif_console_getchar(rtems_termios_device_context *base);
 
 const rtems_termios_device_handler htif_console_handler;
 




More information about the vc mailing list