summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorAnup Patel <apatel@ventanamicro.com>2023-02-13 07:50:30 +0300
committerAnup Patel <anup@brainfault.org>2023-02-27 08:56:35 +0300
commit81adc62f45c0baf13112358164a327197e70a7af (patch)
tree37afd08b27918809a2e3ee7090ba3108b45adc54 /platform
parent30ea8069f4c704e67017215f90f74b8588ee9bdf (diff)
downloadopensbi-81adc62f45c0baf13112358164a327197e70a7af.tar.xz
lib: sbi: Align SBI vendor extension id with mvendorid CSR
As-per the SBI specification, the lower 24bits of the SBI vendor extension id is same as lower 24bits of the mvendorid CSR. We update the SBI vendor extension id checking based on above. Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Diffstat (limited to 'platform')
-rw-r--r--platform/generic/include/platform_override.h1
-rw-r--r--platform/generic/platform.c19
2 files changed, 6 insertions, 14 deletions
diff --git a/platform/generic/include/platform_override.h b/platform/generic/include/platform_override.h
index a59b06a..350c381 100644
--- a/platform/generic/include/platform_override.h
+++ b/platform/generic/include/platform_override.h
@@ -27,7 +27,6 @@ struct platform_override {
int (*extensions_init)(const struct fdt_match *match,
struct sbi_hart_features *hfeatures);
void (*fw_init)(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,
diff --git a/platform/generic/platform.c b/platform/generic/platform.c
index a34d3b0..88c3ec7 100644
--- a/platform/generic/platform.c
+++ b/platform/generic/platform.c
@@ -180,13 +180,10 @@ static int generic_final_init(bool cold_boot)
return 0;
}
-static int generic_vendor_ext_check(long extid)
+static bool generic_vendor_ext_check(void)
{
- if (generic_plat && generic_plat->vendor_ext_check)
- return generic_plat->vendor_ext_check(extid,
- generic_plat_match);
-
- return 0;
+ return (generic_plat && generic_plat->vendor_ext_provider) ?
+ true : false;
}
static int generic_vendor_ext_provider(long extid, long funcid,
@@ -194,13 +191,9 @@ static int generic_vendor_ext_provider(long extid, long funcid,
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;
+ return generic_plat->vendor_ext_provider(extid, funcid, regs,
+ out_value, out_trap,
+ generic_plat_match);
}
static void generic_early_exit(void)