[PATCH v3 4/5] platform: generic: add extensions_init handler and platform-override
Heiko Stuebner
heiko at sntech.de
Thu Sep 8 06:42:41 PDT 2022
Init of non-standard extensions is a platform-specific thing,
so allow generic platforms to do this via a platform-override.
Signed-off-by: Heiko Stuebner <heiko at sntech.de>
---
platform/generic/include/platform_override.h | 1 +
platform/generic/platform.c | 9 +++++++++
2 files changed, 10 insertions(+)
diff --git a/platform/generic/include/platform_override.h b/platform/generic/include/platform_override.h
index e55da25..06a26dd 100644
--- a/platform/generic/include/platform_override.h
+++ b/platform/generic/include/platform_override.h
@@ -22,6 +22,7 @@ struct platform_override {
void (*early_exit)(const struct fdt_match *match);
void (*final_exit)(const struct fdt_match *match);
int (*fdt_fixup)(void *fdt, const struct fdt_match *match);
+ int (*extensions_init)(const struct fdt_match *match);
int (*vendor_ext_check)(long extid, const struct fdt_match *match);
int (*vendor_ext_provider)(long extid, long funcid,
const struct sbi_trap_regs *regs,
diff --git a/platform/generic/platform.c b/platform/generic/platform.c
index cc3620f..de406e3 100644
--- a/platform/generic/platform.c
+++ b/platform/generic/platform.c
@@ -203,6 +203,14 @@ static void generic_final_exit(void)
generic_plat->final_exit(generic_plat_match);
}
+static int generic_extensions_init(void)
+{
+ if (generic_plat && generic_plat->extensions_init)
+ return generic_plat->extensions_init(generic_plat_match);
+
+ return 0;
+}
+
static int generic_domains_init(void)
{
return fdt_domains_populate(fdt_get_address());
@@ -248,6 +256,7 @@ const struct sbi_platform_operations platform_ops = {
.final_init = generic_final_init,
.early_exit = generic_early_exit,
.final_exit = generic_final_exit,
+ .extensions_init = generic_extensions_init,
.domains_init = generic_domains_init,
.console_init = fdt_serial_init,
.irqchip_init = fdt_irqchip_init,
--
2.35.1
More information about the opensbi
mailing list