diff options
Diffstat (limited to 'platform/generic/starfive/jh8100.c')
-rw-r--r-- | platform/generic/starfive/jh8100.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/platform/generic/starfive/jh8100.c b/platform/generic/starfive/jh8100.c new file mode 100644 index 0000000..b11ffcf --- /dev/null +++ b/platform/generic/starfive/jh8100.c @@ -0,0 +1,48 @@ +/* + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2022 StarFive Technology Co., Ltd. + * + * Author: Jun Liang Tan <junliang.tan@linux.starfivetech.com> + * + */ + +#include <cache.h> +#include <jh8100.h> +#include <platform_override.h> +#include <sbi/sbi_console.h> +#include <sbi_utils/fdt/fdt_helper.h> + +static int starfive_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) +{ + int ret = 0; + + switch (funcid) { + case SBI_EXT_STARFIVE_DUBHE_L2_FLUSH: + __sbi_dubhe_L2_flush_range(regs->a0, regs->a1); + break; + case SBI_EXT_STARFIVE_DUBHE_L2_INVALIDATE: + __sbi_dubhe_L2_inv_range(regs->a0, regs->a1); + break; + default: + sbi_printf("Unsupported vendor sbi call : %ld\n", funcid); + asm volatile("ebreak"); + } + + return ret; +} + +static const struct fdt_match starfive_jh8xxx_match[] = { + { .compatible = "starfive,dubhe" }, + { .compatible = "starfive,jh8100" }, + { }, +}; + +const struct platform_override starfive_jh8xxx = { + .match_table = starfive_jh8xxx_match, + .vendor_ext_provider = starfive_vendor_ext_provider, +}; |