[PATCH] bsps: Improve riscv console FDT parsing
Alan Cudmore
alan.cudmore at gmail.com
Tue Oct 11 03:37:24 UTC 2022
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.
Thanks,
Alan
On Thu, Sep 29, 2022 at 12:12 PM Alan Cudmore <alan.cudmore at gmail.com>
wrote:
> This fixes a problem with parsing the FDT compatible property by
> replacing the RISCV_CONSOLE_IS_COMPATIBLE macro with calls to
> the fdt_stringlist_contains function. The macro only works when
> the compatible FDT entry is a single string and not a list of
> strings. The new call will compare each item in the string list.
>
> Close #4728.
> ---
> bsps/riscv/riscv/console/console-config.c | 14 +++++---------
> 1 file changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/bsps/riscv/riscv/console/console-config.c
> b/bsps/riscv/riscv/console/console-config.c
> index d962a5a418..7908c2f325 100644
> --- a/bsps/riscv/riscv/console/console-config.c
> +++ b/bsps/riscv/riscv/console/console-config.c
> @@ -139,10 +139,6 @@ static void riscv_console_set_reg_32(uintptr_t addr,
> uint8_t i, uint8_t val)
> }
> #endif
>
> -#define RISCV_CONSOLE_IS_COMPATIBLE(actual, actual_len, desired) \
> - (actual_len == sizeof(desired) \
> - && memcmp(actual, desired, sizeof(desired) - 1) == 0)
> -
> static void riscv_console_probe(void)
> {
> const void *fdt;
> @@ -170,7 +166,7 @@ static void riscv_console_probe(void)
> }
>
> #if RISCV_ENABLE_HTIF_SUPPORT != 0
> - if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ucb,htif0")) {
> + if (fdt_stringlist_contains(compat, compat_len, "ucb,htif0")) {
> htif_console_context_init(&htif_console_instance.base, node);
>
> riscv_console.context = &htif_console_instance.base;
> @@ -181,8 +177,8 @@ static void riscv_console_probe(void)
>
> #if RISCV_CONSOLE_MAX_NS16550_DEVICES > 0
> if (
> - (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16550a")
> - || RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16750"))
> + (fdt_stringlist_contains(compat, compat_len, "ns16550a")
> + || fdt_stringlist_contains(compat, compat_len, "ns16750"))
> && ns16550_devices < RISCV_CONSOLE_MAX_NS16550_DEVICES
> ) {
> ns16550_context *ctx;
> @@ -203,7 +199,7 @@ static void riscv_console_probe(void)
> ctx->set_reg = riscv_console_set_reg_8;
> }
>
> - if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "ns16750")) {
> + if (fdt_stringlist_contains(compat, compat_len, "ns16750")) {
> ctx->has_precision_clock_synthesizer = true;
> }
>
> @@ -243,7 +239,7 @@ static void riscv_console_probe(void)
> #endif
>
> #if RISCV_ENABLE_FRDME310ARTY_SUPPORT != 0
> - if (RISCV_CONSOLE_IS_COMPATIBLE(compat, compat_len, "sifive,uart0")) {
> + if (fdt_stringlist_contains(compat, compat_len, "sifive,uart0")) {
> fe310_uart_context *ctx;
>
> ctx = &fe310_uart_instance;
> --
> 2.34.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20221010/aa147f4b/attachment.htm>
More information about the devel
mailing list