This is the generic library for all RISC-V platforms. Remove the dependencies of SiFive U540 platform.
Cc: Sunil V L <suni...@ventanamicro.com> Cc: Daniel Schaefer <daniel.schae...@hpe.com> Signed-off-by: Abner Chang <abner.ch...@hpe.com> --- .../OpensbiPlatformLib/OpensbiPlatformLib.inf | 3 +- .../OpensbiPlatformLib/PlatformOverride.h | 30 ------------ .../Library/OpensbiPlatformLib/Platform.c | 25 +++++++--- .../Library/OpensbiPlatformLib/SifiveFu540.c | 47 ------------------- 4 files changed, 19 insertions(+), 86 deletions(-) delete mode 100644 Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/PlatformOverride.h delete mode 100644 Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/SifiveFu540.c diff --git a/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/OpensbiPlatformLib.inf b/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/OpensbiPlatformLib.inf index a408737961..909fbffa8d 100644 --- a/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/OpensbiPlatformLib.inf +++ b/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/OpensbiPlatformLib.inf @@ -25,8 +25,6 @@ [Sources] Platform.c - SifiveFu540.c - PlatformOverride.h [Packages] EmbeddedPkg/EmbeddedPkg.dec @@ -45,6 +43,7 @@ PcdLib PrintLib RiscVCpuLib + RiscVSpecialPlatformLib [FixedPcd] gUefiRiscVPlatformPkgTokenSpaceGuid.PcdBootHartId diff --git a/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/PlatformOverride.h b/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/PlatformOverride.h deleted file mode 100644 index 467ebbd4b8..0000000000 --- a/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/PlatformOverride.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2020 Western Digital Corporation or its affiliates. - * - * Authors: - * Anup Patel <anup.pa...@wdc.com> - */ - -#ifndef __PLATFORM_OVERRIDE_H__ -#define __PLATFORM_OVERRIDE_H__ - -#include <sbi/sbi_types.h> - -struct platform_override { - const struct fdt_match *match_table; - u64 (*features)(const struct fdt_match *match); - u64 (*tlbr_flush_limit)(const struct fdt_match *match); - int (*early_init)(bool cold_boot, const struct fdt_match *match); - int (*final_init)(bool cold_boot, const struct fdt_match *match); - void (*early_exit)(const struct fdt_match *match); - void (*final_exit)(const struct fdt_match *match); - int (*system_reset_check)(u32 reset_type, u32 reset_reason, - const struct fdt_match *match); - void (*system_reset)(u32 reset_type, u32 reset_reason, - const struct fdt_match *match); - int (*fdt_fixup)(void *fdt, const struct fdt_match *match); -}; - -#endif diff --git a/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/Platform.c b/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/Platform.c index 4fbb201895..06cd1a299f 100644 --- a/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/Platform.c +++ b/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/Platform.c @@ -5,10 +5,16 @@ * * Authors: * Anup Patel <anup.pa...@wdc.com> + + Copyright (c) 2021, Hewlett Packard Enterprise Development LP. All rights reserved.<BR> + + SPDX-License-Identifier: BSD-2-Clause-Patent + */ #include <libfdt.h> -#include <PlatformOverride.h> +#include <Library/RiscVSpecialPlatformLib.h> + #include <sbi/riscv_asm.h> #include <sbi/sbi_domain.h> #include <sbi/sbi_hartmask.h> @@ -24,11 +30,12 @@ #include <sbi_utils/ipi/fdt_ipi.h> #include <sbi_utils/reset/fdt_reset.h> -extern const struct platform_override sifive_fu540; - -static const struct platform_override *special_platforms[] = { - &sifive_fu540, -}; +// +// SpecialPlatformArray and NumberOfSpecialPlatform are +// provided by RiscVSpecialPlatformLib library. +// +extern const struct platform_override *special_platforms[]; +extern INTN NumberOfPlaformsInArray; static const struct platform_override *generic_plat = NULL; static const struct fdt_match *generic_plat_match = NULL; @@ -39,7 +46,11 @@ static void fw_platform_lookup_special(void *fdt, int root_offset) const struct platform_override *plat; const struct fdt_match *match; - for (pos = 0; pos < array_size(special_platforms); pos++) { + if (special_platforms == NULL || NumberOfPlaformsInArray == 0) { + return; + } + + for (pos = 0; pos < (int)NumberOfPlaformsInArray; pos++) { plat = special_platforms[pos]; if (!plat->match_table) continue; diff --git a/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/SifiveFu540.c b/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/SifiveFu540.c deleted file mode 100644 index 748b058840..0000000000 --- a/Platform/RISC-V/PlatformPkg/Library/OpensbiPlatformLib/SifiveFu540.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-2-Clause - * - * Copyright (c) 2020 Western Digital Corporation or its affiliates. - * - * Authors: - * Anup Patel <anup.pa...@wdc.com> - */ - -#include <PlatformOverride.h> -#include <sbi_utils/fdt/fdt_helper.h> -#include <sbi_utils/fdt/fdt_fixup.h> - -static u64 sifive_fu540_tlbr_flush_limit(const struct fdt_match *match) -{ - /* - * The sfence.vma by virtual address does not work on - * SiFive FU540 so we return remote TLB flush limit as zero. - */ - return 0; -} - -static int sifive_fu540_fdt_fixup(void *fdt, const struct fdt_match *match) -{ - /* - * SiFive Freedom U540 has an erratum that prevents S-mode software - * to access a PMP protected region using 1GB page table mapping, so - * always add the no-map attribute on this platform. - */ - fdt_reserved_memory_nomap_fixup(fdt); - - return 0; -} - -static const struct fdt_match sifive_fu540_match[] = { - { .compatible = "sifive,fu540" }, - { .compatible = "sifive,fu540g" }, - { .compatible = "sifive,fu540-c000" }, - { .compatible = "sifive,hifive-unleashed-a00" }, - { }, -}; - -const struct platform_override sifive_fu540 = { - .match_table = sifive_fu540_match, - .tlbr_flush_limit = sifive_fu540_tlbr_flush_limit, - .fdt_fixup = sifive_fu540_fdt_fixup, -}; -- 2.31.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#82326): https://edk2.groups.io/g/devel/message/82326 Mute This Topic: https://groups.io/mt/86435678/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-