summaryrefslogtreecommitdiffstats
path: root/bsps/riscv/riscv/console/fe310-uart.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--bsps/riscv/riscv/console/fe310-uart.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/bsps/riscv/riscv/console/fe310-uart.c b/bsps/riscv/riscv/console/fe310-uart.c
index 4ae62d7176..ddabcff4c8 100644
--- a/bsps/riscv/riscv/console/fe310-uart.c
+++ b/bsps/riscv/riscv/console/fe310-uart.c
@@ -34,11 +34,13 @@
int fe310_uart_read(rtems_termios_device_context *base)
{
fe310_uart_context * ctx = (fe310_uart_context*) base;
+ int32_t rxdata;
- if ((ctx->regs->rxdata & TXRXREADY) != 0) {
+ rxdata = ctx->regs->rxdata;
+ if ((rxdata & TXRXREADY) != 0) {
return -1;
} else {
- return ctx->regs->rxdata;
+ return rxdata & 0xFF;
}
}
@@ -51,7 +53,7 @@ static void fe310_uart_write (
fe310_uart_context * ctx = (fe310_uart_context*) base;
size_t i;
- ctx->regs->div = riscv_get_core_frequency() / 115200 - 1;
+ ctx->regs->div = (riscv_get_core_frequency() / 115200 - 1) & 0xFFFF;
ctx->regs->txctrl |= 1;
ctx->regs->rxctrl |= 1;
@@ -91,6 +93,7 @@ static bool fe310_uart_first_open (
(ctx->regs)->div = riscv_get_core_frequency() / 115200 - 1;
(ctx->regs)->txctrl |= 1;
(ctx->regs)->rxctrl |= 1;
+ (ctx->regs)->ie = 0;
return true;
};