platform: generic: add extensions_init handler and

A patch from »Add support for T-HEAD C9xx PMU extensions« in state Accepted for opensbi

From: Heiko Stuebner <heiko@...> Date: Wed, 20 Jul 2022 11:32:51 +0200

Commit-Message

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@...>

Patch-Comment

platform/generic/include/platform_override.h | 3 +++ platform/generic/platform.c | 10 ++++++++++ 2 files changed, 13 insertions(+)

Statistics

  • 13 lines added
  • 0 lines removed

Changes

----------------- platform/generic/include/platform_override.h -----------------
index e55da25..7f1558d 100644
@@ -10,6 +10,7 @@
#ifndef __PLATFORM_OVERRIDE_H__
#define __PLATFORM_OVERRIDE_H__
+#include <sbi/sbi_hart.h>
#include <sbi/sbi_types.h>
#include <sbi/sbi_trap.h>
@@ -22,6 +23,8 @@ 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,
+ struct sbi_hart_features *hfeatures);
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,
------------------------- platform/generic/platform.c --------------------------
index bf51aba..595b0fd 100644
@@ -204,6 +204,15 @@ static void generic_final_exit(void)
generic_plat->final_exit(generic_plat_match);
}
+static int generic_extensions_init(struct sbi_hart_features *hfeatures)
+{
+ if (generic_plat && generic_plat->extensions_init)
+ return generic_plat->extensions_init(generic_plat_match,
+ hfeatures);
+
+ return 0;
+}
+
static int generic_domains_init(void)
{
return fdt_domains_populate(fdt_get_address());
@@ -257,6 +266,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 = generic_console_init,
.irqchip_init = fdt_irqchip_init,
 
 

Recent Patches

About Us

Sed lacus. Donec lectus. Nullam pretium nibh ut turpis. Nam bibendum. In nulla tortor, elementum vel, tempor at, varius non, purus. Mauris vitae nisl nec metus placerat consectetuer.

Read More...