[PATCH 3/3] lib: utils: Initialize miscellaneous drivers in one pass

Anup Patel anup at brainfault.org
Wed Feb 12 08:54:59 PST 2025


On Mon, Jan 20, 2025 at 12:34 AM Samuel Holland
<samuel.holland at sifive.com> wrote:
>
> For driver subsystems that are not tightly integrated into the OpenSBI
> init sequence, it is not important that the drivers are initialized in
> any particular order. By putting all of these drivers in one array, they
> can all be initialized with a single pass through the devicetree. This
> saves about 10 ms of boot time on HiFive Unmatched.
>
> Signed-off-by: Samuel Holland <samuel.holland at sifive.com>

LGTM.

Reviewed-by: Anup Patel <anup at brainfault.org>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
>
>  include/sbi_utils/cppc/fdt_cppc.h            | 26 ----------------
>  include/sbi_utils/fdt/fdt_driver.h           |  3 ++
>  include/sbi_utils/hsm/fdt_hsm.h              | 26 ----------------
>  include/sbi_utils/reset/fdt_reset.h          | 31 --------------------
>  include/sbi_utils/suspend/fdt_suspend.h      | 26 ----------------
>  lib/utils/cppc/fdt_cppc.c                    | 22 --------------
>  lib/utils/cppc/fdt_cppc_drivers.carray       |  3 --
>  lib/utils/cppc/fdt_cppc_rpmi.c               |  2 +-
>  lib/utils/cppc/objects.mk                    |  5 +---
>  lib/utils/fdt/fdt_early_drivers.carray       |  3 ++
>  lib/utils/fdt/objects.mk                     |  2 ++
>  lib/utils/hsm/fdt_hsm.c                      | 22 --------------
>  lib/utils/hsm/fdt_hsm_drivers.carray         |  3 --
>  lib/utils/hsm/fdt_hsm_rpmi.c                 |  4 +--
>  lib/utils/hsm/objects.mk                     |  5 +---
>  lib/utils/reset/fdt_reset.c                  | 18 ------------
>  lib/utils/reset/fdt_reset_atcwdt200.c        |  2 +-
>  lib/utils/reset/fdt_reset_drivers.carray     |  3 --
>  lib/utils/reset/fdt_reset_gpio.c             |  2 +-
>  lib/utils/reset/fdt_reset_htif.c             |  2 +-
>  lib/utils/reset/fdt_reset_rpmi.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           |  2 +-
>  lib/utils/reset/objects.mk                   | 21 ++++++-------
>  lib/utils/suspend/fdt_suspend.c              | 22 --------------
>  lib/utils/suspend/fdt_suspend_drivers.carray |  3 --
>  lib/utils/suspend/fdt_suspend_rpmi.c         |  2 +-
>  lib/utils/suspend/objects.mk                 |  5 +---
>  platform/generic/platform.c                  | 16 ++++------
>  platform/generic/sifive/fu740.c              |  4 +--
>  platform/generic/starfive/jh7110.c           |  2 +-
>  32 files changed, 39 insertions(+), 254 deletions(-)
>  delete mode 100644 include/sbi_utils/cppc/fdt_cppc.h
>  delete mode 100644 include/sbi_utils/hsm/fdt_hsm.h
>  delete mode 100644 include/sbi_utils/reset/fdt_reset.h
>  delete mode 100644 include/sbi_utils/suspend/fdt_suspend.h
>  delete mode 100644 lib/utils/cppc/fdt_cppc.c
>  delete mode 100644 lib/utils/cppc/fdt_cppc_drivers.carray
>  create mode 100644 lib/utils/fdt/fdt_early_drivers.carray
>  delete mode 100644 lib/utils/hsm/fdt_hsm.c
>  delete mode 100644 lib/utils/hsm/fdt_hsm_drivers.carray
>  delete mode 100644 lib/utils/reset/fdt_reset.c
>  delete mode 100644 lib/utils/reset/fdt_reset_drivers.carray
>  delete mode 100644 lib/utils/suspend/fdt_suspend.c
>  delete mode 100644 lib/utils/suspend/fdt_suspend_drivers.carray
>
> diff --git a/include/sbi_utils/cppc/fdt_cppc.h b/include/sbi_utils/cppc/fdt_cppc.h
> deleted file mode 100644
> index 433c6d32..00000000
> --- a/include/sbi_utils/cppc/fdt_cppc.h
> +++ /dev/null
> @@ -1,26 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2024 Ventana Micro Systems Inc.
> - *
> - * Authors:
> - *   Anup Patel <apatel at ventanamicro.com>
> - */
> -
> -#ifndef __FDT_CPPC_H__
> -#define __FDT_CPPC_H__
> -
> -#include <sbi/sbi_types.h>
> -#include <sbi_utils/fdt/fdt_driver.h>
> -
> -#ifdef CONFIG_FDT_CPPC
> -
> -void fdt_cppc_init(const void *fdt);
> -
> -#else
> -
> -static inline void fdt_cppc_init(const void *fdt) { }
> -
> -#endif
> -
> -#endif
> diff --git a/include/sbi_utils/fdt/fdt_driver.h b/include/sbi_utils/fdt/fdt_driver.h
> index 12ffe3f9..5b5bda90 100644
> --- a/include/sbi_utils/fdt/fdt_driver.h
> +++ b/include/sbi_utils/fdt/fdt_driver.h
> @@ -18,6 +18,9 @@ struct fdt_driver {
>         bool experimental;
>  };
>
> +/* List of early FDT drivers generated at compile time */
> +extern const struct fdt_driver *const fdt_early_drivers[];
> +
>  /**
>   * Initialize a driver instance for a specific DT node
>   *
> diff --git a/include/sbi_utils/hsm/fdt_hsm.h b/include/sbi_utils/hsm/fdt_hsm.h
> deleted file mode 100644
> index 58061afc..00000000
> --- a/include/sbi_utils/hsm/fdt_hsm.h
> +++ /dev/null
> @@ -1,26 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2024 Ventana Micro Systems Inc.
> - *
> - * Authors:
> - *   Anup Patel <apatel at ventanamicro.com>
> - */
> -
> -#ifndef __FDT_HSM_H__
> -#define __FDT_HSM_H__
> -
> -#include <sbi/sbi_types.h>
> -#include <sbi_utils/fdt/fdt_driver.h>
> -
> -#ifdef CONFIG_FDT_HSM
> -
> -void fdt_hsm_init(const void *fdt);
> -
> -#else
> -
> -static inline void fdt_hsm_init(const void *fdt) { }
> -
> -#endif
> -
> -#endif
> diff --git a/include/sbi_utils/reset/fdt_reset.h b/include/sbi_utils/reset/fdt_reset.h
> deleted file mode 100644
> index 5fba3886..00000000
> --- a/include/sbi_utils/reset/fdt_reset.h
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2020 Western Digital Corporation or its affiliates.
> - *
> - * Authors:
> - *   Anup Patel <anup.patel at wdc.com>
> - */
> -
> -#ifndef __FDT_RESET_H__
> -#define __FDT_RESET_H__
> -
> -#include <sbi/sbi_types.h>
> -#include <sbi_utils/fdt/fdt_driver.h>
> -
> -#ifdef CONFIG_FDT_RESET
> -
> -/**
> - * fdt_reset_init() - initialize reset drivers based on the device-tree
> - *
> - * This function shall be invoked in final init.
> - */
> -void fdt_reset_init(const void *fdt);
> -
> -#else
> -
> -static inline void fdt_reset_init(const void *fdt) { }
> -
> -#endif
> -
> -#endif
> diff --git a/include/sbi_utils/suspend/fdt_suspend.h b/include/sbi_utils/suspend/fdt_suspend.h
> deleted file mode 100644
> index bfc6c69a..00000000
> --- a/include/sbi_utils/suspend/fdt_suspend.h
> +++ /dev/null
> @@ -1,26 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2024 Ventana Micro Systems Inc.
> - *
> - * Authors:
> - *   Anup Patel <apatel at ventanamicro.com>
> - */
> -
> -#ifndef __FDT_SUSPEND_H__
> -#define __FDT_SUSPEND_H__
> -
> -#include <sbi/sbi_types.h>
> -#include <sbi_utils/fdt/fdt_driver.h>
> -
> -#ifdef CONFIG_FDT_SUSPEND
> -
> -void fdt_suspend_init(const void *fdt);
> -
> -#else
> -
> -static inline void fdt_suspend_init(const void *fdt) { }
> -
> -#endif
> -
> -#endif
> diff --git a/lib/utils/cppc/fdt_cppc.c b/lib/utils/cppc/fdt_cppc.c
> deleted file mode 100644
> index 0e1ecb24..00000000
> --- a/lib/utils/cppc/fdt_cppc.c
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2024 Ventana Micro Systems Inc.
> - *
> - * Authors:
> - *   Anup Patel <apatel at ventanamicro.com>
> - */
> -
> -#include <sbi_utils/cppc/fdt_cppc.h>
> -
> -/* List of FDT CPPC drivers generated at compile time */
> -extern const struct fdt_driver *const fdt_cppc_drivers[];
> -
> -void fdt_cppc_init(const void *fdt)
> -{
> -       /*
> -        * Platforms might have multiple CPPC devices or might
> -        * not have any so probe all and don't fail.
> -        */
> -       fdt_driver_init_all(fdt, fdt_cppc_drivers);
> -}
> diff --git a/lib/utils/cppc/fdt_cppc_drivers.carray b/lib/utils/cppc/fdt_cppc_drivers.carray
> deleted file mode 100644
> index b25c7888..00000000
> --- a/lib/utils/cppc/fdt_cppc_drivers.carray
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -HEADER: sbi_utils/cppc/fdt_cppc.h
> -TYPE: const struct fdt_driver
> -NAME: fdt_cppc_drivers
> diff --git a/lib/utils/cppc/fdt_cppc_rpmi.c b/lib/utils/cppc/fdt_cppc_rpmi.c
> index 95328404..39342198 100644
> --- a/lib/utils/cppc/fdt_cppc_rpmi.c
> +++ b/lib/utils/cppc/fdt_cppc_rpmi.c
> @@ -12,7 +12,7 @@
>  #include <sbi/sbi_cppc.h>
>  #include <sbi/sbi_ecall_interface.h>
>  #include <sbi/sbi_scratch.h>
> -#include <sbi_utils/cppc/fdt_cppc.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
>  #include <sbi_utils/mailbox/fdt_mailbox.h>
>  #include <sbi_utils/mailbox/rpmi_mailbox.h>
> diff --git a/lib/utils/cppc/objects.mk b/lib/utils/cppc/objects.mk
> index 07dc7d89..ece1791b 100644
> --- a/lib/utils/cppc/objects.mk
> +++ b/lib/utils/cppc/objects.mk
> @@ -7,8 +7,5 @@
>  #   Anup Patel <apatel at ventanamicro.com>
>  #
>
> -libsbiutils-objs-$(CONFIG_FDT_CPPC) += cppc/fdt_cppc.o
> -libsbiutils-objs-$(CONFIG_FDT_CPPC) += cppc/fdt_cppc_drivers.carray.o
> -
> -carray-fdt_cppc_drivers-$(CONFIG_FDT_CPPC_RPMI) += fdt_cppc_rpmi
> +carray-fdt_early_drivers-$(CONFIG_FDT_CPPC_RPMI) += fdt_cppc_rpmi
>  libsbiutils-objs-$(CONFIG_FDT_CPPC_RPMI) += cppc/fdt_cppc_rpmi.o
> diff --git a/lib/utils/fdt/fdt_early_drivers.carray b/lib/utils/fdt/fdt_early_drivers.carray
> new file mode 100644
> index 00000000..969e10b1
> --- /dev/null
> +++ b/lib/utils/fdt/fdt_early_drivers.carray
> @@ -0,0 +1,3 @@
> +HEADER: sbi_utils/fdt/fdt_driver.h
> +TYPE: const struct fdt_driver
> +NAME: fdt_early_drivers
> diff --git a/lib/utils/fdt/objects.mk b/lib/utils/fdt/objects.mk
> index 1a2298be..31cf1c5a 100644
> --- a/lib/utils/fdt/objects.mk
> +++ b/lib/utils/fdt/objects.mk
> @@ -4,6 +4,8 @@
>  # Copyright (C) 2020 Bin Meng <bmeng.cn at gmail.com>
>  #
>
> +libsbiutils-objs-$(CONFIG_FDT) += fdt/fdt_early_drivers.carray.o
> +
>  libsbiutils-objs-$(CONFIG_FDT_DOMAIN) += fdt/fdt_domain.o
>  libsbiutils-objs-$(CONFIG_FDT_PMU) += fdt/fdt_pmu.o
>  libsbiutils-objs-$(CONFIG_FDT) += fdt/fdt_helper.o
> diff --git a/lib/utils/hsm/fdt_hsm.c b/lib/utils/hsm/fdt_hsm.c
> deleted file mode 100644
> index 162b9867..00000000
> --- a/lib/utils/hsm/fdt_hsm.c
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2024 Ventana Micro Systems Inc.
> - *
> - * Authors:
> - *   Anup Patel <apatel at ventanamicro.com>
> - */
> -
> -#include <sbi_utils/hsm/fdt_hsm.h>
> -
> -/* List of FDT HSM drivers generated at compile time */
> -extern const struct fdt_driver *const fdt_hsm_drivers[];
> -
> -void fdt_hsm_init(const void *fdt)
> -{
> -       /*
> -        * Platforms might have multiple HSM devices or might
> -        * not have any so probe all and don't fail.
> -        */
> -       fdt_driver_init_all(fdt, fdt_hsm_drivers);
> -}
> diff --git a/lib/utils/hsm/fdt_hsm_drivers.carray b/lib/utils/hsm/fdt_hsm_drivers.carray
> deleted file mode 100644
> index 73680a25..00000000
> --- a/lib/utils/hsm/fdt_hsm_drivers.carray
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -HEADER: sbi_utils/hsm/fdt_hsm.h
> -TYPE: const struct fdt_driver
> -NAME: fdt_hsm_drivers
> diff --git a/lib/utils/hsm/fdt_hsm_rpmi.c b/lib/utils/hsm/fdt_hsm_rpmi.c
> index 66fa0fe2..5142c3e6 100644
> --- a/lib/utils/hsm/fdt_hsm_rpmi.c
> +++ b/lib/utils/hsm/fdt_hsm_rpmi.c
> @@ -12,9 +12,9 @@
>  #include <sbi/sbi_heap.h>
>  #include <sbi/sbi_hsm.h>
>  #include <sbi/sbi_scratch.h>
> -#include <sbi_utils/fdt/fdt_helper.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_fixup.h>
> -#include <sbi_utils/hsm/fdt_hsm.h>
> +#include <sbi_utils/fdt/fdt_helper.h>
>  #include <sbi_utils/mailbox/fdt_mailbox.h>
>  #include <sbi_utils/mailbox/mailbox.h>
>  #include <sbi_utils/mailbox/rpmi_mailbox.h>
> diff --git a/lib/utils/hsm/objects.mk b/lib/utils/hsm/objects.mk
> index b54b6f6c..c13d81f7 100644
> --- a/lib/utils/hsm/objects.mk
> +++ b/lib/utils/hsm/objects.mk
> @@ -7,8 +7,5 @@
>  #   Anup Patel <apatel at ventanamicro.com>
>  #
>
> -libsbiutils-objs-$(CONFIG_FDT_HSM) += hsm/fdt_hsm.o
> -libsbiutils-objs-$(CONFIG_FDT_HSM) += hsm/fdt_hsm_drivers.carray.o
> -
> -carray-fdt_hsm_drivers-$(CONFIG_FDT_HSM_RPMI) += fdt_hsm_rpmi
> +carray-fdt_early_drivers-$(CONFIG_FDT_HSM_RPMI) += fdt_hsm_rpmi
>  libsbiutils-objs-$(CONFIG_FDT_HSM_RPMI) += hsm/fdt_hsm_rpmi.o
> diff --git a/lib/utils/reset/fdt_reset.c b/lib/utils/reset/fdt_reset.c
> deleted file mode 100644
> index 633a25cd..00000000
> --- a/lib/utils/reset/fdt_reset.c
> +++ /dev/null
> @@ -1,18 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2020 Western Digital Corporation or its affiliates.
> - *
> - * Authors:
> - *   Anup Patel <anup.patel at wdc.com>
> - */
> -
> -#include <sbi_utils/reset/fdt_reset.h>
> -
> -/* List of FDT reset drivers generated at compile time */
> -extern const struct fdt_driver *const fdt_reset_drivers[];
> -
> -void fdt_reset_init(const void *fdt)
> -{
> -       fdt_driver_init_all(fdt, fdt_reset_drivers);
> -}
> diff --git a/lib/utils/reset/fdt_reset_atcwdt200.c b/lib/utils/reset/fdt_reset_atcwdt200.c
> index d3e38e61..97ec7431 100644
> --- a/lib/utils/reset/fdt_reset_atcwdt200.c
> +++ b/lib/utils/reset/fdt_reset_atcwdt200.c
> @@ -14,8 +14,8 @@
>  #include <sbi/sbi_hart.h>
>  #include <sbi/sbi_platform.h>
>  #include <sbi/sbi_system.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
> -#include <sbi_utils/reset/fdt_reset.h>
>  #include <sbi_utils/sys/atcsmu.h>
>
>  #define ATCWDT200_WP_NUM 0x5aa5
> diff --git a/lib/utils/reset/fdt_reset_drivers.carray b/lib/utils/reset/fdt_reset_drivers.carray
> deleted file mode 100644
> index 2e9e86af..00000000
> --- a/lib/utils/reset/fdt_reset_drivers.carray
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -HEADER: sbi_utils/reset/fdt_reset.h
> -TYPE: const struct fdt_driver
> -NAME: fdt_reset_drivers
> diff --git a/lib/utils/reset/fdt_reset_gpio.c b/lib/utils/reset/fdt_reset_gpio.c
> index cf751254..fabeee58 100644
> --- a/lib/utils/reset/fdt_reset_gpio.c
> +++ b/lib/utils/reset/fdt_reset_gpio.c
> @@ -15,9 +15,9 @@
>  #include <sbi/sbi_hart.h>
>  #include <sbi/sbi_system.h>
>  #include <sbi/sbi_timer.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
>  #include <sbi_utils/gpio/fdt_gpio.h>
> -#include <sbi_utils/reset/fdt_reset.h>
>
>  struct gpio_reset {
>         struct gpio_pin pin;
> diff --git a/lib/utils/reset/fdt_reset_htif.c b/lib/utils/reset/fdt_reset_htif.c
> index 61c907fa..a1066dac 100644
> --- a/lib/utils/reset/fdt_reset_htif.c
> +++ b/lib/utils/reset/fdt_reset_htif.c
> @@ -7,7 +7,7 @@
>   *   Anup Patel <anup.patel at wdc.com>
>   */
>
> -#include <sbi_utils/reset/fdt_reset.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
>  #include <sbi_utils/sys/htif.h>
>
> diff --git a/lib/utils/reset/fdt_reset_rpmi.c b/lib/utils/reset/fdt_reset_rpmi.c
> index 70826b96..15d3c6d5 100644
> --- a/lib/utils/reset/fdt_reset_rpmi.c
> +++ b/lib/utils/reset/fdt_reset_rpmi.c
> @@ -10,8 +10,8 @@
>  #include <sbi/sbi_error.h>
>  #include <sbi/sbi_system.h>
>  #include <sbi/sbi_console.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
> -#include <sbi_utils/reset/fdt_reset.h>
>  #include <sbi_utils/mailbox/fdt_mailbox.h>
>  #include <sbi_utils/mailbox/rpmi_msgprot.h>
>  #include <sbi_utils/mailbox/rpmi_mailbox.h>
> diff --git a/lib/utils/reset/fdt_reset_sg2042_hwmon_mcu.c b/lib/utils/reset/fdt_reset_sg2042_hwmon_mcu.c
> index 66826830..94ac4162 100644
> --- a/lib/utils/reset/fdt_reset_sg2042_hwmon_mcu.c
> +++ b/lib/utils/reset/fdt_reset_sg2042_hwmon_mcu.c
> @@ -10,8 +10,8 @@
>  #include <sbi/sbi_error.h>
>  #include <sbi/sbi_system.h>
>  #include <sbi/sbi_console.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
> -#include <sbi_utils/reset/fdt_reset.h>
>  #include <sbi_utils/i2c/fdt_i2c.h>
>
>  #define MANGO_BOARD_TYPE_MASK          0x80
> diff --git a/lib/utils/reset/fdt_reset_sunxi_wdt.c b/lib/utils/reset/fdt_reset_sunxi_wdt.c
> index 708bf25c..7e7b1118 100644
> --- a/lib/utils/reset/fdt_reset_sunxi_wdt.c
> +++ b/lib/utils/reset/fdt_reset_sunxi_wdt.c
> @@ -9,8 +9,8 @@
>  #include <sbi/sbi_bitops.h>
>  #include <sbi/sbi_error.h>
>  #include <sbi/sbi_system.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
> -#include <sbi_utils/reset/fdt_reset.h>
>
>  #define WDT_KEY_VAL                    0x16aa0000
>
> diff --git a/lib/utils/reset/fdt_reset_syscon.c b/lib/utils/reset/fdt_reset_syscon.c
> index d1a3bc0e..50badcd0 100644
> --- a/lib/utils/reset/fdt_reset_syscon.c
> +++ b/lib/utils/reset/fdt_reset_syscon.c
> @@ -12,9 +12,9 @@
>  #include <sbi/sbi_error.h>
>  #include <sbi/sbi_hart.h>
>  #include <sbi/sbi_system.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
>  #include <sbi_utils/regmap/fdt_regmap.h>
> -#include <sbi_utils/reset/fdt_reset.h>
>
>  struct syscon_reset {
>         struct regmap *rmap;
> diff --git a/lib/utils/reset/objects.mk b/lib/utils/reset/objects.mk
> index 8f3774c5..ac38b49d 100644
> --- a/lib/utils/reset/objects.mk
> +++ b/lib/utils/reset/objects.mk
> @@ -7,28 +7,25 @@
>  #   Anup Patel <anup.patel at wdc.com>
>  #
>
> -libsbiutils-objs-$(CONFIG_FDT_RESET) += reset/fdt_reset.o
> -libsbiutils-objs-$(CONFIG_FDT_RESET) += reset/fdt_reset_drivers.carray.o
> -
> -carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_ATCWDT200) += fdt_reset_atcwdt200
> +carray-fdt_early_drivers-$(CONFIG_FDT_RESET_ATCWDT200) += fdt_reset_atcwdt200
>  libsbiutils-objs-$(CONFIG_FDT_RESET_ATCWDT200) += reset/fdt_reset_atcwdt200.o
>
> -carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_GPIO) += fdt_poweroff_gpio
> -carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_GPIO) += fdt_reset_gpio
> +carray-fdt_early_drivers-$(CONFIG_FDT_RESET_GPIO) += fdt_poweroff_gpio
> +carray-fdt_early_drivers-$(CONFIG_FDT_RESET_GPIO) += fdt_reset_gpio
>  libsbiutils-objs-$(CONFIG_FDT_RESET_GPIO) += reset/fdt_reset_gpio.o
>
> -carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_HTIF) += fdt_reset_htif
> +carray-fdt_early_drivers-$(CONFIG_FDT_RESET_HTIF) += fdt_reset_htif
>  libsbiutils-objs-$(CONFIG_FDT_RESET_HTIF) += reset/fdt_reset_htif.o
>
> -carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_SG2042_HWMON_MCU) += fdt_reset_sg2042_mcu
> +carray-fdt_early_drivers-$(CONFIG_FDT_RESET_SG2042_HWMON_MCU) += fdt_reset_sg2042_mcu
>  libsbiutils-objs-$(CONFIG_FDT_RESET_SG2042_HWMON_MCU) += reset/fdt_reset_sg2042_hwmon_mcu.o
>
> -carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_SUNXI_WDT) += fdt_reset_sunxi_wdt
> +carray-fdt_early_drivers-$(CONFIG_FDT_RESET_SUNXI_WDT) += fdt_reset_sunxi_wdt
>  libsbiutils-objs-$(CONFIG_FDT_RESET_SUNXI_WDT) += reset/fdt_reset_sunxi_wdt.o
>
> -carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_SYSCON) += fdt_syscon_poweroff
> -carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_SYSCON) += fdt_syscon_reboot
> +carray-fdt_early_drivers-$(CONFIG_FDT_RESET_SYSCON) += fdt_syscon_poweroff
> +carray-fdt_early_drivers-$(CONFIG_FDT_RESET_SYSCON) += fdt_syscon_reboot
>  libsbiutils-objs-$(CONFIG_FDT_RESET_SYSCON) += reset/fdt_reset_syscon.o
>
> -carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_RPMI) += fdt_reset_rpmi
> +carray-fdt_early_drivers-$(CONFIG_FDT_RESET_RPMI) += fdt_reset_rpmi
>  libsbiutils-objs-$(CONFIG_FDT_RESET_RPMI) += reset/fdt_reset_rpmi.o
> diff --git a/lib/utils/suspend/fdt_suspend.c b/lib/utils/suspend/fdt_suspend.c
> deleted file mode 100644
> index bd4691a0..00000000
> --- a/lib/utils/suspend/fdt_suspend.c
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -/*
> - * SPDX-License-Identifier: BSD-2-Clause
> - *
> - * Copyright (c) 2024 Ventana Micro Systems Inc.
> - *
> - * Authors:
> - *   Anup Patel <apatel at ventanamicro.com>
> - */
> -
> -#include <sbi_utils/suspend/fdt_suspend.h>
> -
> -/* List of FDT suspend drivers generated at compile time */
> -extern const struct fdt_driver *const fdt_suspend_drivers[];
> -
> -void fdt_suspend_init(const void *fdt)
> -{
> -       /*
> -        * Platforms might have multiple system suspend devices or
> -        * might not have any so probe all and don't fail.
> -        */
> -       fdt_driver_init_all(fdt, fdt_suspend_drivers);
> -}
> diff --git a/lib/utils/suspend/fdt_suspend_drivers.carray b/lib/utils/suspend/fdt_suspend_drivers.carray
> deleted file mode 100644
> index a0c857fc..00000000
> --- a/lib/utils/suspend/fdt_suspend_drivers.carray
> +++ /dev/null
> @@ -1,3 +0,0 @@
> -HEADER: sbi_utils/suspend/fdt_suspend.h
> -TYPE: const struct fdt_driver
> -NAME: fdt_suspend_drivers
> diff --git a/lib/utils/suspend/fdt_suspend_rpmi.c b/lib/utils/suspend/fdt_suspend_rpmi.c
> index 07ff5198..b08c33e9 100644
> --- a/lib/utils/suspend/fdt_suspend_rpmi.c
> +++ b/lib/utils/suspend/fdt_suspend_rpmi.c
> @@ -10,11 +10,11 @@
>  #include <libfdt.h>
>  #include <sbi/sbi_system.h>
>  #include <sbi/riscv_asm.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
>  #include <sbi_utils/mailbox/fdt_mailbox.h>
>  #include <sbi_utils/mailbox/mailbox.h>
>  #include <sbi_utils/mailbox/rpmi_mailbox.h>
> -#include <sbi_utils/suspend/fdt_suspend.h>
>
>  struct rpmi_syssusp {
>         struct mbox_chan *chan;
> diff --git a/lib/utils/suspend/objects.mk b/lib/utils/suspend/objects.mk
> index 657670a8..9c386248 100644
> --- a/lib/utils/suspend/objects.mk
> +++ b/lib/utils/suspend/objects.mk
> @@ -7,8 +7,5 @@
>  #   Anup Patel <apatel at ventanamicro.com>
>  #
>
> -libsbiutils-objs-$(CONFIG_FDT_SUSPEND) += suspend/fdt_suspend.o
> -libsbiutils-objs-$(CONFIG_FDT_SUSPEND) += suspend/fdt_suspend_drivers.carray.o
> -
> -carray-fdt_suspend_drivers-$(CONFIG_FDT_SUSPEND_RPMI) += fdt_suspend_rpmi
> +carray-fdt_early_drivers-$(CONFIG_FDT_SUSPEND_RPMI) += fdt_suspend_rpmi
>  libsbiutils-objs-$(CONFIG_FDT_SUSPEND_RPMI) += suspend/fdt_suspend_rpmi.o
> diff --git a/platform/generic/platform.c b/platform/generic/platform.c
> index c03ed88e..ffcf3fc7 100644
> --- a/platform/generic/platform.c
> +++ b/platform/generic/platform.c
> @@ -17,21 +17,18 @@
>  #include <sbi/sbi_string.h>
>  #include <sbi/sbi_system.h>
>  #include <sbi/sbi_tlb.h>
> -#include <sbi_utils/mpxy/fdt_mpxy.h>
> -#include <sbi_utils/cppc/fdt_cppc.h>
>  #include <sbi_utils/fdt/fdt_domain.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_fixup.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
>  #include <sbi_utils/fdt/fdt_pmu.h>
> -#include <sbi_utils/hsm/fdt_hsm.h>
> +#include <sbi_utils/ipi/fdt_ipi.h>
>  #include <sbi_utils/irqchip/fdt_irqchip.h>
>  #include <sbi_utils/irqchip/imsic.h>
> +#include <sbi_utils/mpxy/fdt_mpxy.h>
>  #include <sbi_utils/serial/fdt_serial.h>
> -#include <sbi_utils/suspend/fdt_suspend.h>
> -#include <sbi_utils/timer/fdt_timer.h>
> -#include <sbi_utils/ipi/fdt_ipi.h>
> -#include <sbi_utils/reset/fdt_reset.h>
>  #include <sbi_utils/serial/semihosting.h>
> +#include <sbi_utils/timer/fdt_timer.h>
>
>  /* List of platform override modules generated at compile time */
>  extern const struct platform_override *const platform_override_modules[];
> @@ -257,10 +254,7 @@ static int generic_early_init(bool cold_boot)
>                 if (rc)
>                         return rc;
>
> -               fdt_cppc_init(fdt);
> -               fdt_hsm_init(fdt);
> -               fdt_reset_init(fdt);
> -               fdt_suspend_init(fdt);
> +               fdt_driver_init_all(fdt, fdt_early_drivers);
>         }
>
>         if (!generic_plat || !generic_plat->early_init)
> diff --git a/platform/generic/sifive/fu740.c b/platform/generic/sifive/fu740.c
> index 52ca12ff..7a6c0319 100644
> --- a/platform/generic/sifive/fu740.c
> +++ b/platform/generic/sifive/fu740.c
> @@ -15,9 +15,9 @@
>  #include <sbi/sbi_hart.h>
>  #include <sbi/sbi_system.h>
>  #include <sbi/sbi_console.h>
> -#include <sbi_utils/fdt/fdt_helper.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_fixup.h>
> -#include <sbi_utils/reset/fdt_reset.h>
> +#include <sbi_utils/fdt/fdt_helper.h>
>  #include <sbi_utils/i2c/fdt_i2c.h>
>
>  #define DA9063_REG_PAGE_CON            0x00
> diff --git a/platform/generic/starfive/jh7110.c b/platform/generic/starfive/jh7110.c
> index 6d95758f..cd8ce27d 100644
> --- a/platform/generic/starfive/jh7110.c
> +++ b/platform/generic/starfive/jh7110.c
> @@ -16,8 +16,8 @@
>  #include <sbi/sbi_console.h>
>  #include <sbi/sbi_timer.h>
>  #include <sbi/riscv_io.h>
> +#include <sbi_utils/fdt/fdt_driver.h>
>  #include <sbi_utils/fdt/fdt_helper.h>
> -#include <sbi_utils/reset/fdt_reset.h>
>  #include <sbi_utils/i2c/fdt_i2c.h>
>
>  struct pmic {
> --
> 2.47.0
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list