diff options
| author | Samuel Holland <[email protected]> | 2024-11-11 14:02:53 -0800 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2024-11-28 17:48:17 +0530 |
| commit | 6d9ad492dbfdda00add7ff15a8599736f46d040a (patch) | |
| tree | 46b9f4122d3efaea86438c34499e9d5294fab0df /platform | |
| parent | 1f8db2f18ffb4babb27c2070419b7100f998c7f4 (diff) | |
lib: utils/reset: Use fdt_driver for initialization
The reset driver subsystem does not need any extra data, so it can use
`struct fdt_driver` directly. The generic fdt_reset_init() performs a
best-effort initialization of all matching DT nodes. Platform-specific
logic expects exactly one DT node to match a single driver. This is
accomplished by using fdt_driver_init_one() with a local list containing
that one driver.
Signed-off-by: Samuel Holland <[email protected]>
Reviewed-by: Anup Patel <[email protected]>
Diffstat (limited to 'platform')
| -rw-r--r-- | platform/generic/sifive/fu740.c | 9 | ||||
| -rw-r--r-- | platform/generic/starfive/jh7110.c | 9 |
2 files changed, 14 insertions, 4 deletions
diff --git a/platform/generic/sifive/fu740.c b/platform/generic/sifive/fu740.c index 46dc02ae..52ca12ff 100644 --- a/platform/generic/sifive/fu740.c +++ b/platform/generic/sifive/fu740.c @@ -209,11 +209,16 @@ static const struct fdt_match da9063_reset_match[] = { { }, }; -struct fdt_reset fdt_reset_da9063 = { +const struct fdt_driver fdt_reset_da9063 = { .match_table = da9063_reset_match, .init = da9063_reset_init, }; +static const struct fdt_driver *const sifive_fu740_reset_drivers[] = { + &fdt_reset_da9063, + NULL +}; + static u64 sifive_fu740_tlbr_flush_limit(const struct fdt_match *match) { /* @@ -232,7 +237,7 @@ static int sifive_fu740_final_init(bool cold_boot, void *fdt, int rc; if (cold_boot) { - rc = fdt_reset_driver_init(fdt, &fdt_reset_da9063); + rc = fdt_driver_init_one(fdt, sifive_fu740_reset_drivers); if (rc) sbi_printf("%s: failed to find da9063 for reset\n", __func__); diff --git a/platform/generic/starfive/jh7110.c b/platform/generic/starfive/jh7110.c index 264fe99c..6d95758f 100644 --- a/platform/generic/starfive/jh7110.c +++ b/platform/generic/starfive/jh7110.c @@ -227,11 +227,16 @@ static const struct fdt_match pm_reset_match[] = { { }, }; -static struct fdt_reset fdt_reset_pmic = { +static const struct fdt_driver fdt_reset_pmic = { .match_table = pm_reset_match, .init = pm_reset_init, }; +static const struct fdt_driver *const starfive_jh7110_reset_drivers[] = { + &fdt_reset_pmic, + NULL +}; + static int starfive_jh7110_inst_init(const void *fdt) { int noff, rc = 0; @@ -281,7 +286,7 @@ static int starfive_jh7110_final_init(bool cold_boot, void *fdt, const struct fdt_match *match) { if (cold_boot) { - fdt_reset_driver_init(fdt, &fdt_reset_pmic); + fdt_driver_init_one(fdt, starfive_jh7110_reset_drivers); } return 0; |
