[PATCH v2 00/11] Deduplicate driver initialization code

Ben Dooks ben.dooks at codethink.co.uk
Thu Nov 28 06:21:39 PST 2024


On 11/11/2024 22:02, Samuel Holland wrote:
> Upstreaming support for some of SiFive's security and power management
> features will require adding some new driver subsystems (e.g. caches,
> WorldGuard gadgets, power management domains, etc.). To avoid copy-and-
> pasting the FDT-based driver matching code to each new subsystem, this
> series refactors it into some efficient and easily-reusable helper
> functions.
> 
> Version 2 of this series converts everything but the irqchip subsystem
> to use the new helpers. Once the irqchip subsystem is converted, the old
> fdt_find_match() helper can be removed. The following series prepares
> the irqchip subsystem for conversion to use the fdt_driver helpers:
> http://lists.infradead.org/pipermail/opensbi/2024-November/007555.html

Is there a branch with this on?

> Changes in v2:
>   - Shell script cleanup in carray.sh
>   - Update carray.sh to support embedding struct fdt_driver
>   - Add conversion of gpio drivers
>   - Add conversion of ipi drivers
>   - Add conversion of regmap drivers
>   - Add conversion of timer drivers
> 
> Samuel Holland (11):
>    treewide: Make carray arrays const and NULL-terminated
>    lib: utils/fdt: Add helpers for generic driver initialization
>    scripts/carray.sh: Avoid useless use of cat
>    scripts/carray.sh: Allow referencing a struct member
>    lib: utils/gpio: Use fdt_driver for initialization
>    lib: utils/i2c: Use fdt_driver for initialization
>    lib: utils/ipi: Use fdt_driver for initialization
>    lib: utils/regmap: Use fdt_driver for initialization
>    lib: utils/reset: Use fdt_driver for initialization
>    lib: utils/serial: Use fdt_driver for initialization
>    lib: utils/timer: Use fdt_driver for initialization
> 
>   include/sbi_utils/fdt/fdt_driver.h           | 59 +++++++++++++++
>   include/sbi_utils/gpio/fdt_gpio.h            |  5 +-
>   include/sbi_utils/gpio/gpio.h                |  2 +-
>   include/sbi_utils/i2c/fdt_i2c.h              |  8 +-
>   include/sbi_utils/ipi/fdt_ipi.h              |  6 +-
>   include/sbi_utils/regmap/fdt_regmap.h        |  8 +-
>   include/sbi_utils/reset/fdt_reset.h          | 15 +---
>   include/sbi_utils/serial/fdt_serial.h        |  6 +-
>   include/sbi_utils/timer/fdt_timer.h          |  6 +-
>   lib/sbi/sbi_ecall.c                          |  5 +-
>   lib/sbi/tests/sbi_unit_test.c                |  5 +-
>   lib/utils/fdt/fdt_driver.c                   | 80 ++++++++++++++++++++
>   lib/utils/fdt/objects.mk                     |  1 +
>   lib/utils/gpio/fdt_gpio.c                    | 28 +------
>   lib/utils/gpio/fdt_gpio_designware.c         | 10 ++-
>   lib/utils/gpio/fdt_gpio_drivers.carray       |  4 +-
>   lib/utils/gpio/fdt_gpio_sifive.c             | 10 ++-
>   lib/utils/gpio/fdt_gpio_starfive.c           | 10 ++-
>   lib/utils/i2c/fdt_i2c.c                      | 31 +-------
>   lib/utils/i2c/fdt_i2c_adapter_drivers.carray |  2 +-
>   lib/utils/i2c/fdt_i2c_dw.c                   |  2 +-
>   lib/utils/i2c/fdt_i2c_sifive.c               |  2 +-
>   lib/utils/ipi/fdt_ipi.c                      | 43 +----------
>   lib/utils/ipi/fdt_ipi_drivers.carray         |  2 +-
>   lib/utils/ipi/fdt_ipi_mswi.c                 |  4 +-
>   lib/utils/ipi/fdt_ipi_plicsw.c               |  4 +-
>   lib/utils/irqchip/fdt_irqchip.c              |  5 +-
>   lib/utils/regmap/fdt_regmap.c                | 29 +------
>   lib/utils/regmap/fdt_regmap_drivers.carray   |  2 +-
>   lib/utils/regmap/fdt_regmap_syscon.c         |  2 +-
>   lib/utils/reset/fdt_reset.c                  | 37 +--------
>   lib/utils/reset/fdt_reset_atcwdt200.c        |  2 +-
>   lib/utils/reset/fdt_reset_drivers.carray     |  2 +-
>   lib/utils/reset/fdt_reset_gpio.c             |  4 +-
>   lib/utils/reset/fdt_reset_htif.c             |  2 +-
>   lib/utils/reset/fdt_reset_sg2042_hwmon_mcu.c |  2 +-
>   lib/utils/reset/fdt_reset_sunxi_wdt.c        |  2 +-
>   lib/utils/reset/fdt_reset_syscon.c           |  4 +-
>   lib/utils/serial/fdt_serial.c                | 53 ++-----------
>   lib/utils/serial/fdt_serial_cadence.c        |  2 +-
>   lib/utils/serial/fdt_serial_drivers.carray   |  2 +-
>   lib/utils/serial/fdt_serial_gaisler.c        |  2 +-
>   lib/utils/serial/fdt_serial_htif.c           |  2 +-
>   lib/utils/serial/fdt_serial_litex.c          |  2 +-
>   lib/utils/serial/fdt_serial_renesas_scif.c   |  2 +-
>   lib/utils/serial/fdt_serial_shakti.c         |  2 +-
>   lib/utils/serial/fdt_serial_sifive.c         |  2 +-
>   lib/utils/serial/fdt_serial_uart8250.c       |  2 +-
>   lib/utils/serial/fdt_serial_xlnx_uartlite.c  |  2 +-
>   lib/utils/timer/fdt_timer.c                  | 40 +---------
>   lib/utils/timer/fdt_timer_drivers.carray     |  2 +-
>   lib/utils/timer/fdt_timer_mtimer.c           |  4 +-
>   lib/utils/timer/fdt_timer_plmt.c             |  4 +-
>   platform/generic/platform.c                  |  5 +-
>   platform/generic/sifive/fu740.c              |  9 ++-
>   platform/generic/starfive/jh7110.c           |  9 ++-
>   scripts/carray.sh                            | 22 ++++--
>   57 files changed, 267 insertions(+), 352 deletions(-)
>   create mode 100644 include/sbi_utils/fdt/fdt_driver.h
>   create mode 100644 lib/utils/fdt/fdt_driver.c
> 


-- 
Ben Dooks				http://www.codethink.co.uk/
Senior Engineer				Codethink - Providing Genius

https://www.codethink.co.uk/privacy.html



More information about the opensbi mailing list