lib: utils/reset: Generate FDT reset driver list at compile-time

Instead of having FDT reset driver list hard-coded in the C source,
we generate it using carray.sh at compile-time.

Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Atish Patra <atishp@rivosinc.com>
This commit is contained in:
Anup Patel
2022-05-13 09:26:06 +05:30
committed by Anup Patel
parent 7fb474b9dd
commit 73cf511914
3 changed files with 20 additions and 17 deletions

View File

@@ -13,21 +13,9 @@
#include <sbi_utils/fdt/fdt_helper.h> #include <sbi_utils/fdt/fdt_helper.h>
#include <sbi_utils/reset/fdt_reset.h> #include <sbi_utils/reset/fdt_reset.h>
extern struct fdt_reset fdt_poweroff_gpio; /* List of FDT reset drivers generated at compile time */
extern struct fdt_reset fdt_reset_gpio; extern struct fdt_reset *fdt_reset_drivers[];
extern struct fdt_reset fdt_reset_htif; extern unsigned long fdt_reset_drivers_size;
extern struct fdt_reset fdt_reset_sifive_test;
extern struct fdt_reset fdt_reset_sunxi_wdt;
extern struct fdt_reset fdt_reset_thead;
static struct fdt_reset *reset_drivers[] = {
&fdt_poweroff_gpio,
&fdt_reset_gpio,
&fdt_reset_htif,
&fdt_reset_sifive_test,
&fdt_reset_sunxi_wdt,
&fdt_reset_thead,
};
int fdt_reset_driver_init(void *fdt, struct fdt_reset *drv) int fdt_reset_driver_init(void *fdt, struct fdt_reset *drv)
{ {
@@ -54,6 +42,6 @@ void fdt_reset_init(void)
int pos; int pos;
void *fdt = fdt_get_address(); void *fdt = fdt_get_address();
for (pos = 0; pos < array_size(reset_drivers); pos++) for (pos = 0; pos < fdt_reset_drivers_size; pos++)
fdt_reset_driver_init(fdt, reset_drivers[pos]); fdt_reset_driver_init(fdt, fdt_reset_drivers[pos]);
} }

View File

@@ -0,0 +1,3 @@
HEADER: sbi_utils/reset/fdt_reset.h
TYPE: struct fdt_reset
NAME: fdt_reset_drivers

View File

@@ -8,9 +8,21 @@
# #
libsbiutils-objs-y += reset/fdt_reset.o libsbiutils-objs-y += reset/fdt_reset.o
libsbiutils-objs-y += 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 libsbiutils-objs-y += reset/fdt_reset_gpio.o
carray-fdt_reset_drivers-y += fdt_reset_htif
libsbiutils-objs-y += reset/fdt_reset_htif.o libsbiutils-objs-y += reset/fdt_reset_htif.o
carray-fdt_reset_drivers-y += fdt_reset_sifive_test
libsbiutils-objs-y += reset/fdt_reset_sifive_test.o libsbiutils-objs-y += reset/fdt_reset_sifive_test.o
carray-fdt_reset_drivers-y += fdt_reset_sunxi_wdt
libsbiutils-objs-y += reset/fdt_reset_sunxi_wdt.o libsbiutils-objs-y += 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.o
libsbiutils-objs-y += reset/fdt_reset_thead_asm.o libsbiutils-objs-y += reset/fdt_reset_thead_asm.o