diff --git a/include/sbi_utils/reset/fdt_reset.h b/include/sbi_utils/reset/fdt_reset.h index e7f73507..ea8063b8 100644 --- a/include/sbi_utils/reset/fdt_reset.h +++ b/include/sbi_utils/reset/fdt_reset.h @@ -17,6 +17,8 @@ struct fdt_reset { int (*init)(void *fdt, int nodeoff, const struct fdt_match *match); }; +#ifdef CONFIG_FDT_RESET + /** * fdt_reset_driver_init() - initialize reset driver based on the device-tree */ @@ -29,4 +31,14 @@ int fdt_reset_driver_init(void *fdt, struct fdt_reset *drv); */ void fdt_reset_init(void); +#else + +static inline int fdt_reset_driver_init(void *fdt, struct fdt_reset *drv) +{ + return 0; +} +static inline void fdt_reset_init(void) { } + +#endif + #endif diff --git a/lib/utils/Kconfig b/lib/utils/Kconfig index 4524a3fd..f061b7a3 100644 --- a/lib/utils/Kconfig +++ b/lib/utils/Kconfig @@ -2,6 +2,8 @@ menu "Utils and Drivers Support" +source "$(OPENSBI_SRC_DIR)/lib/utils/reset/Kconfig" + source "$(OPENSBI_SRC_DIR)/lib/utils/serial/Kconfig" endmenu diff --git a/lib/utils/reset/Kconfig b/lib/utils/reset/Kconfig new file mode 100644 index 00000000..845a1aea --- /dev/null +++ b/lib/utils/reset/Kconfig @@ -0,0 +1,33 @@ +# SPDX-License-Identifier: BSD-2-Clause + +menu "System Reset Support" + +config FDT_RESET + bool "FDT based reset drivers" + default n + +if FDT_RESET + +config FDT_RESET_GPIO + bool "GPIO FDT reset driver" + default n + +config FDT_RESET_HTIF + bool "Host transfer interface (HTIF) FDT reset driver" + default n + +config FDT_RESET_SIFIVE_TEST + bool "SiFive Test FDT reset driver" + default n + +config FDT_RESET_SUNXI_WDT + bool "Sunxi WDT FDT reset driver" + default n + +config FDT_RESET_THEAD + bool "T-HEAD FDT reset driver" + default n + +endif + +endmenu diff --git a/lib/utils/reset/objects.mk b/lib/utils/reset/objects.mk index 8cddcdfb..8a50dd04 100644 --- a/lib/utils/reset/objects.mk +++ b/lib/utils/reset/objects.mk @@ -7,22 +7,22 @@ # Anup Patel # -libsbiutils-objs-y += reset/fdt_reset.o -libsbiutils-objs-y += reset/fdt_reset_drivers.o +libsbiutils-objs-$(CONFIG_FDT_RESET) += reset/fdt_reset.o +libsbiutils-objs-$(CONFIG_FDT_RESET) += reset/fdt_reset_drivers.o -carray-fdt_reset_drivers-y += fdt_poweroff_gpio -carray-fdt_reset_drivers-y += fdt_reset_gpio -libsbiutils-objs-y += reset/fdt_reset_gpio.o +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_GPIO) += fdt_poweroff_gpio +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_GPIO) += fdt_reset_gpio +libsbiutils-objs-$(CONFIG_FDT_RESET_GPIO) += reset/fdt_reset_gpio.o -carray-fdt_reset_drivers-y += fdt_reset_htif -libsbiutils-objs-y += reset/fdt_reset_htif.o +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_HTIF) += fdt_reset_htif +libsbiutils-objs-$(CONFIG_FDT_RESET_HTIF) += reset/fdt_reset_htif.o -carray-fdt_reset_drivers-y += fdt_reset_sifive_test -libsbiutils-objs-y += reset/fdt_reset_sifive_test.o +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_SIFIVE_TEST) += fdt_reset_sifive_test +libsbiutils-objs-$(CONFIG_FDT_RESET_SIFIVE_TEST) += reset/fdt_reset_sifive_test.o -carray-fdt_reset_drivers-y += fdt_reset_sunxi_wdt -libsbiutils-objs-y += reset/fdt_reset_sunxi_wdt.o +carray-fdt_reset_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-y += fdt_reset_thead -libsbiutils-objs-y += reset/fdt_reset_thead.o -libsbiutils-objs-y += reset/fdt_reset_thead_asm.o +carray-fdt_reset_drivers-$(CONFIG_FDT_RESET_THEAD) += fdt_reset_thead +libsbiutils-objs-$(CONFIG_FDT_RESET_THEAD) += reset/fdt_reset_thead.o +libsbiutils-objs-$(CONFIG_FDT_RESET_THEAD) += reset/fdt_reset_thead_asm.o diff --git a/platform/generic/configs/defconfig b/platform/generic/configs/defconfig index ce70c597..97786654 100644 --- a/platform/generic/configs/defconfig +++ b/platform/generic/configs/defconfig @@ -1,3 +1,9 @@ +CONFIG_FDT_RESET=y +CONFIG_FDT_RESET_GPIO=y +CONFIG_FDT_RESET_HTIF=y +CONFIG_FDT_RESET_SIFIVE_TEST=y +CONFIG_FDT_RESET_SUNXI_WDT=y +CONFIG_FDT_RESET_THEAD=y CONFIG_FDT_SERIAL=y CONFIG_FDT_SERIAL_GAISLER=y CONFIG_FDT_SERIAL_HTIF=y