<div dir="ltr"><div>Ping for this RISC-V console fix - it builds without error on 310ARTY, Polarfire, and generic RISCV variants. I tested it on the generic QEMU riscv platform and Padmarao tested it on the PolarFire.</div><div>Thanks,</div><div>Alan</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Sep 29, 2022 at 12:12 PM Alan Cudmore <<a href="mailto:alan.cudmore@gmail.com">alan.cudmore@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">This fixes a problem with parsing the FDT compatible property by<br>
replacing the RISCV_CONSOLE_IS_COMPATIBLE macro with calls to<br>
the fdt_stringlist_contains function. The macro only works when<br>
the compatible FDT entry is a single string and not a list of<br>
strings. The new call will compare each item in the string list.<br>
<br>
Close #4728.<br>
---<br>
 bsps/riscv/riscv/console/console-config.c | 14 +++++---------<br>
 1 file changed, 5 insertions(+), 9 deletions(-)<br>
<br>
diff --git a/bsps/riscv/riscv/console/console-config.c b/bsps/riscv/riscv/console/console-config.c<br>
index d962a5a418..7908c2f325 100644<br>
--- a/bsps/riscv/riscv/console/console-config.c<br>
+++ b/bsps/riscv/riscv/console/console-config.c<br>
@@ -139,10 +139,6 @@ static void riscv_console_set_reg_32(uintptr_t addr, uint8_t i, uint8_t val)<br>
 }<br>
 #endif<br>
<br>
-#define RISCV_CONSOLE_IS_COMPATIBLE(actual, actual_len, desired) \<br>
-  (actual_len == sizeof(desired) \<br>
-     && memcmp(actual, desired, sizeof(desired) - 1) == 0)<br>
-<br>
 static void riscv_console_probe(void)<br>
 {<br>
   const void *fdt;<br>
@@ -170,7 +166,7 @@ static void riscv_console_probe(void)<br>
     }<br>
<br>
 #if RISCV_ENABLE_HTIF_SUPPORT != 0<br>
-    if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ucb,htif0")) {<br>
+    if (fdt_stringlist_contains(compat, compat_len, "ucb,htif0")) {<br>
       htif_console_context_init(&htif_console_instance.base, node);<br>
<br>
       riscv_console.context = &htif_console_instance.base;<br>
@@ -181,8 +177,8 @@ static void riscv_console_probe(void)<br>
<br>
 #if RISCV_CONSOLE_MAX_NS16550_DEVICES > 0<br>
     if (<br>
-      (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16550a")<br>
-          || RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16750"))<br>
+        (fdt_stringlist_contains(compat, compat_len, "ns16550a")<br>
+        || fdt_stringlist_contains(compat, compat_len, "ns16750"))<br>
         && ns16550_devices < RISCV_CONSOLE_MAX_NS16550_DEVICES<br>
     ) {<br>
       ns16550_context *ctx;<br>
@@ -203,7 +199,7 @@ static void riscv_console_probe(void)<br>
         ctx->set_reg = riscv_console_set_reg_8;<br>
       }<br>
<br>
-      if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16750")) {<br>
+      if (fdt_stringlist_contains(compat, compat_len, "ns16750")) {<br>
         ctx->has_precision_clock_synthesizer = true;<br>
       }<br>
<br>
@@ -243,7 +239,7 @@ static void riscv_console_probe(void)<br>
 #endif<br>
<br>
 #if RISCV_ENABLE_FRDME310ARTY_SUPPORT != 0<br>
-    if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "sifive,uart0")) {<br>
+    if (fdt_stringlist_contains(compat, compat_len, "sifive,uart0")) {<br>
       fe310_uart_context *ctx;<br>
<br>
       ctx = &fe310_uart_instance;<br>
-- <br>
2.34.1<br>
<br>
</blockquote></div></div>