LGTM. We also need to update the docs accordingly. On Wed, 11 Jan 2023 at 07:45, Sebastian Huber <sebastian.hu...@embedded-brains.de> wrote: > > Low-end configurations may want to have the HTIF support removed. > Enable the option by default. Fix formatting. Fix node validity > checks. > > Updates #4779. > --- > bsps/riscv/noel/include/bsp/riscv.h | 2 -- > bsps/riscv/riscv/console/console-config.c | 9 ++++++++- > bsps/riscv/riscv/console/htif.c | 4 ++++ > bsps/riscv/riscv/include/bsp/riscv.h | 2 ++ > bsps/riscv/riscv/irq/irq.c | 18 +++++++++++------- > bsps/riscv/riscv/start/bsp_fatal_halt.c | 7 +++++-- > spec/build/bsps/riscv/riscv/opthtif.yml | 4 ++-- > 7 files changed, 32 insertions(+), 14 deletions(-) > > diff --git a/bsps/riscv/noel/include/bsp/riscv.h > b/bsps/riscv/noel/include/bsp/riscv.h > index 3ab75573f0..0fdf64747b 100644 > --- a/bsps/riscv/noel/include/bsp/riscv.h > +++ b/bsps/riscv/noel/include/bsp/riscv.h > @@ -50,8 +50,6 @@ extern uint32_t riscv_hart_count; > > uint32_t riscv_get_hart_index_by_phandle(uint32_t phandle); > > -void htif_poweroff(void); > - > #ifdef __cplusplus > } > #endif > diff --git a/bsps/riscv/riscv/console/console-config.c > b/bsps/riscv/riscv/console/console-config.c > index fe339c2353..4916191e0b 100644 > --- a/bsps/riscv/riscv/console/console-config.c > +++ b/bsps/riscv/riscv/console/console-config.c > @@ -60,7 +60,9 @@ > static fe310_uart_context fe310_uart_instance; > #endif > > +#ifdef RISCV_ENABLE_HTIF_SUPPORT > static htif_console_context htif_console_instance; > +#endif > > #if RISCV_CONSOLE_MAX_NS16550_DEVICES > 0 > static ns16550_context ns16550_instances[RISCV_CONSOLE_MAX_NS16550_DEVICES]; > @@ -163,6 +165,7 @@ static void riscv_console_probe(void) > compat_len = 0; > } > > +#ifdef RISCV_ENABLE_HTIF_SUPPORT > /* Search for HTIF (eg. on Spike) and use it if found */ > if (fdt_stringlist_contains(compat, compat_len, "ucb,htif0")) { > htif_console_context_init(&htif_console_instance.base, node); > @@ -171,6 +174,7 @@ static void riscv_console_probe(void) > riscv_console.putchar = htif_console_putchar; > riscv_console.getchar = htif_console_getchar; > }; > +#endif > > #if RISCV_CONSOLE_MAX_NS16550_DEVICES > 0 > if ( > @@ -277,9 +281,10 @@ rtems_status_code console_initialize( > void *arg > ) > { > +#ifdef RISCV_ENABLE_HTIF_SUPPORT > rtems_termios_device_context *base; > char htif_path[] = "/dev/ttyShtif"; > - > +#endif > #if RISCV_CONSOLE_MAX_NS16550_DEVICES > 0 > char path[] = "/dev/ttyS?"; > size_t i; > @@ -292,12 +297,14 @@ rtems_status_code console_initialize( > > rtems_termios_initialize(); > > +#ifdef RISCV_ENABLE_HTIF_SUPPORT > base = &htif_console_instance.base; > rtems_termios_device_install(htif_path, &htif_console_handler, NULL, base); > > if (base == riscv_console.context) { > link(htif_path, CONSOLE_DEVICE_NAME); > } > +#endif > > #if RISCV_CONSOLE_MAX_NS16550_DEVICES > 0 > for (i = 0; i < RISCV_CONSOLE_MAX_NS16550_DEVICES; ++i) { > diff --git a/bsps/riscv/riscv/console/htif.c b/bsps/riscv/riscv/console/htif.c > index 750abe6e3e..159d9d72fb 100644 > --- a/bsps/riscv/riscv/console/htif.c > +++ b/bsps/riscv/riscv/console/htif.c > @@ -29,6 +29,8 @@ > > #include <bsp/riscv.h> > > +#ifdef RISCV_ENABLE_HTIF_SUPPORT > + > #include <dev/serial/htif.h> > > #include <assert.h> > @@ -137,3 +139,5 @@ const rtems_termios_device_handler htif_console_handler = > { > .poll_read = htif_console_getchar, > .mode = TERMIOS_POLLED > }; > + > +#endif /* RISCV_ENABLE_HTIF_SUPPORT */ > diff --git a/bsps/riscv/riscv/include/bsp/riscv.h > b/bsps/riscv/riscv/include/bsp/riscv.h > index a11ae4291e..bbaaa246c1 100644 > --- a/bsps/riscv/riscv/include/bsp/riscv.h > +++ b/bsps/riscv/riscv/include/bsp/riscv.h > @@ -52,7 +52,9 @@ extern uint32_t riscv_hart_count; > > uint32_t riscv_get_hart_index_by_phandle(uint32_t phandle); > > +#ifdef RISCV_ENABLE_HTIF_SUPPORT > void htif_poweroff(void); > +#endif > > #ifdef __cplusplus > } > diff --git a/bsps/riscv/riscv/irq/irq.c b/bsps/riscv/riscv/irq/irq.c > index f0ccc6f5f0..e8d297052b 100644 > --- a/bsps/riscv/riscv/irq/irq.c > +++ b/bsps/riscv/riscv/irq/irq.c > @@ -249,14 +249,18 @@ static void riscv_plic_init(const void *fdt) > plic = riscv_fdt_get_address(fdt, node); > > if (plic == NULL) { > - node = fdt_node_offset_by_compatible(fdt, -1, "ucb,htif0"); > +#ifdef RISCV_ENABLE_HTIF_SUPPORT > + node = fdt_node_offset_by_compatible(fdt, -1, "ucb,htif0"); > > - /* Spike platform has HTIF and does not have a PLIC */ > - if (node != -1) { > - return; > - } else { > - bsp_fatal(RISCV_FATAL_NO_PLIC_REG_IN_DEVICE_TREE); > - } > + /* Spike platform has HTIF and does not have a PLIC */ > + if (node >= 0) { > + return; > + } else { > + bsp_fatal(RISCV_FATAL_NO_PLIC_REG_IN_DEVICE_TREE); > + } > +#else > + bsp_fatal(RISCV_FATAL_NO_PLIC_REG_IN_DEVICE_TREE); > +#endif > } > > riscv_plic = plic; > diff --git a/bsps/riscv/riscv/start/bsp_fatal_halt.c > b/bsps/riscv/riscv/start/bsp_fatal_halt.c > index cd7c5f20c5..e4db1f03ca 100644 > --- a/bsps/riscv/riscv/start/bsp_fatal_halt.c > +++ b/bsps/riscv/riscv/start/bsp_fatal_halt.c > @@ -40,10 +40,13 @@ void _CPU_Fatal_halt( uint32_t source, CPU_Uint32ptr > error ) > > fdt = bsp_fdt_get(); > > +#ifdef RISCV_ENABLE_HTIF_SUPPORT > node = fdt_node_offset_by_compatible(fdt, -1, "ucb,htif0"); > > - if (node != -1) > - htif_poweroff(); > + if (node >= 0) { > + htif_poweroff(); > + } > +#endif > > #if RISCV_ENABLE_MPFS_SUPPORT != 0 > for(;;); > diff --git a/spec/build/bsps/riscv/riscv/opthtif.yml > b/spec/build/bsps/riscv/riscv/opthtif.yml > index 9161716869..af174f82ea 100644 > --- a/spec/build/bsps/riscv/riscv/opthtif.yml > +++ b/spec/build/bsps/riscv/riscv/opthtif.yml > @@ -5,10 +5,10 @@ actions: > build-type: option > copyrights: > - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) > -default: false > +default: true > default-by-variant: [] > description: | > - enables the HTIF support if defined to a non-zero value, otherwise it is > disabled (disabled by default) > + Enable the Host/Target Interface (HTIF) support. > enabled-by: true > links: [] > name: RISCV_ENABLE_HTIF_SUPPORT > -- > 2.35.3 > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel
-- Regards, Hesham _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel