summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-06 13:52:22 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-07-06 14:27:29 +0200
commit31f90a2ff4cb40b830c2cbcc184315e424fc8e12 (patch)
treec48f042b0c4a1cf288338ccf93f9c3ea2fede8a1
parentriscv: Add LADDR assembler define (diff)
downloadrtems-31f90a2ff4cb40b830c2cbcc184315e424fc8e12.tar.bz2
bsp/riscv: Simplify printk() support
This is a prepartion to add NS16550 driver support to the console driver. Update #3433.
-rw-r--r--bsps/riscv/riscv/console/console-config.c14
-rw-r--r--bsps/riscv/riscv/console/htif.c13
-rw-r--r--bsps/riscv/riscv/include/dev/serial/htif.h8
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;