From: Mayuresh Chitale <mchitale@ventanamicro.com>
To: opensbi@lists.infradead.org
Subject: [PATCH] platform: generic: add overrides for vendor extensions
Date: Fri, 10 Jun 2022 10:19:20 +0530 [thread overview]
Message-ID: <20220610044920.547047-1-mchitale@ventanamicro.com> (raw)
Allow the vendor_ext_check and vendor_ext_provider APIs of the
generic platform to be overridden by other platforms
Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com>
---
platform/generic/include/platform_override.h | 7 ++++++
platform/generic/platform.c | 25 ++++++++++++++++++++
2 files changed, 32 insertions(+)
diff --git a/platform/generic/include/platform_override.h b/platform/generic/include/platform_override.h
index 4af8754..e55da25 100644
--- a/platform/generic/include/platform_override.h
+++ b/platform/generic/include/platform_override.h
@@ -11,6 +11,7 @@
#define __PLATFORM_OVERRIDE_H__
#include <sbi/sbi_types.h>
+#include <sbi/sbi_trap.h>
struct platform_override {
const struct fdt_match *match_table;
@@ -21,6 +22,12 @@ 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 (*vendor_ext_check)(long extid, const struct fdt_match *match);
+ int (*vendor_ext_provider)(long extid, long funcid,
+ const struct sbi_trap_regs *regs,
+ unsigned long *out_value,
+ struct sbi_trap_info *out_trap,
+ const struct fdt_match *match);
};
#endif
diff --git a/platform/generic/platform.c b/platform/generic/platform.c
index 7651273..bf93af6 100644
--- a/platform/generic/platform.c
+++ b/platform/generic/platform.c
@@ -168,6 +168,29 @@ static int generic_final_init(bool cold_boot)
return 0;
}
+static int generic_vendor_ext_check(long extid)
+{
+ if (generic_plat && generic_plat->vendor_ext_check)
+ return generic_plat->vendor_ext_check(extid,
+ generic_plat_match);
+
+ return 0;
+}
+
+static int generic_vendor_ext_provider(long extid, long funcid,
+ const struct sbi_trap_regs *regs,
+ unsigned long *out_value,
+ struct sbi_trap_info *out_trap)
+{
+ if (generic_plat && generic_plat->vendor_ext_provider) {
+ return generic_plat->vendor_ext_provider(extid, funcid, regs,
+ out_value, out_trap,
+ generic_plat_match);
+ }
+
+ return SBI_ENOTSUPP;
+}
+
static void generic_early_exit(void)
{
if (generic_plat && generic_plat->early_exit)
@@ -236,6 +259,8 @@ const struct sbi_platform_operations platform_ops = {
.get_tlbr_flush_limit = generic_tlbr_flush_limit,
.timer_init = fdt_timer_init,
.timer_exit = fdt_timer_exit,
+ .vendor_ext_check = generic_vendor_ext_check,
+ .vendor_ext_provider = generic_vendor_ext_provider,
};
struct sbi_platform platform = {
--
2.25.1
next reply other threads:[~2022-06-10 4:49 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-10 4:49 Mayuresh Chitale [this message]
2022-06-12 4:30 ` [PATCH] platform: generic: add overrides for vendor extensions Anup Patel
2022-06-13 6:11 ` Anup Patel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220610044920.547047-1-mchitale@ventanamicro.com \
--to=mchitale@ventanamicro.com \
--cc=opensbi@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox