Re: [PATCH] bsps/riscv: UART - Read reg-shift from DTB to properly set/get registers

2019-10-30 Thread Sebastian Huber

Looks good.

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

[PATCH] bsps/riscv: UART - Read reg-shift from DTB to properly set/get registers

2019-10-29 Thread Hesham Almatary
---
 bsps/riscv/riscv/console/console-config.c | 15 +--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/bsps/riscv/riscv/console/console-config.c 
b/bsps/riscv/riscv/console/console-config.c
index 464b4b0e26..5226285272 100644
--- a/bsps/riscv/riscv/console/console-config.c
+++ b/bsps/riscv/riscv/console/console-config.c
@@ -145,12 +145,19 @@ static void riscv_console_probe(void)
   ns16550_context *ctx;
   fdt32_t *val;
   int len;
+  int reg_shift;

   ctx = _instances[ns16550_devices];
   ctx->initial_baud = BSP_CONSOLE_BAUD;

-  if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16750")) {
-ctx->has_precision_clock_synthesizer = true;
+  /* Get register shift property of the UART device */
+  val = (fdt32_t *) fdt_getprop(fdt, node, "reg-shift", );
+
+  if (val) {
+reg_shift = fdt32_to_cpu(val[0]);
+  }
+
+  if (reg_shift == 2) {
 ctx->get_reg = riscv_console_get_reg_32;
 ctx->set_reg = riscv_console_set_reg_32;
   } else {
@@ -158,6 +165,10 @@ static void riscv_console_probe(void)
 ctx->set_reg = riscv_console_set_reg_8;
   }

+  if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16750")) {
+ctx->has_precision_clock_synthesizer = true;
+  }
+
   ctx->port = (uintptr_t) riscv_fdt_get_address(fdt, node);

   if (ctx->port == 0) {
--
2.17.1

___
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel