[edk2-devel] [edk2-platforms][PATCH 12/30] Platform/RISC-V: Remove platform dependency from this library

Abner Chang abner.chang at hpe.com
Tue Oct 19 08:09:49 UTC 2021


This is the generic library for all RISC-V platforms. Remove
the dependencies of SiFive U540 platform.

Cc: Sunil V L <sunilvl at ventanamicro.com>
Cc: Daniel Schaefer <daniel.schaefer at hpe.com>

Signed-off-by: Abner Chang <abner.chang at 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.patel at 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.patel at 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.patel at 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/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list