From 31f90a2ff4cb40b830c2cbcc184315e424fc8e12 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 6 Jul 2018 13:52:22 +0200 Subject: 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 06b5d69662..2cbb2091cd 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 6b9cdedc21..b7cb29c6fd 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 c200a6f388..b0d83652b7 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; -- cgit v1.2.3