diff options
| author | Samuel Holland <[email protected]> | 2025-01-19 11:03:57 -0800 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2025-02-12 21:39:25 +0530 |
| commit | 434add551c2a17cac3804ff0f587d31be03f070e (patch) | |
| tree | 3554b7e11c36b8427cfc3349daf00a5eb5d5027b /lib/utils/reset | |
| parent | e84ba966347009a2dae61d7399bc68c28892847e (diff) | |
lib: utils: Initialize miscellaneous drivers in one pass
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 <[email protected]>
Reviewed-by: Anup Patel <[email protected]>
Diffstat (limited to 'lib/utils/reset')
| -rw-r--r-- | lib/utils/reset/fdt_reset.c | 18 | ||||
| -rw-r--r-- | lib/utils/reset/fdt_reset_atcwdt200.c | 2 | ||||
| -rw-r--r-- | lib/utils/reset/fdt_reset_drivers.carray | 3 | ||||
| -rw-r--r-- | lib/utils/reset/fdt_reset_gpio.c | 2 | ||||
| -rw-r--r-- | lib/utils/reset/fdt_reset_htif.c | 2 | ||||
| -rw-r--r-- | lib/utils/reset/fdt_reset_rpmi.c | 2 | ||||
| -rw-r--r-- | lib/utils/reset/fdt_reset_sg2042_hwmon_mcu.c | 2 | ||||
| -rw-r--r-- | lib/utils/reset/fdt_reset_sunxi_wdt.c | 2 | ||||
| -rw-r--r-- | lib/utils/reset/fdt_reset_syscon.c | 2 | ||||
| -rw-r--r-- | lib/utils/reset/objects.mk | 21 |
10 files changed, 16 insertions, 40 deletions
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 <[email protected]> - */ - -#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 <[email protected]> */ -#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 <[email protected]> # -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 |
