Browse Source

SiFive/U5SeriesPkg Add U5SeriesPkg.

Initial U5SeriesPkg for U5 series platforms.

Signed-off-by: Abner Chang <abner.chang@hpe.com>
Reviewed-by:Gilbert Chen <gilbert.chen@hpe.com>
Acked-by:Leif Lindholm <leif.lindholm@linaro.org>

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>
Cc: Gilbert Chen <gilbert.chen@hpe.com>
Cc: Palmer Dabbelt <palmer@sifive.com>
Abner Chang 4 years ago
parent
commit
f2ffd271f5

+ 110 - 0
Platform/SiFive/U5SeriesPkg/Readme.md

@@ -0,0 +1,110 @@
+# Introduction
+U5SeriesPkg provides the common EFI library and driver modules for SiFive
+U5 series core platforms. Currently the supported platforms are Freedom
+U500 VC707 platform and Freedom U540 HiFive Unleashed platform.
+
+Both platforms are built with below common packages,
+- **U5SeriesPkg**, edk2 platform branch
+  (Currently is in edk2-platforms/devel-riscvplatforms branch)
+- **RiscVPlatformPkg**, edk2 master branch
+  (Currently is in edk2-staging/RISC-V-V2 branch)
+- **RiscVPkg**, edk2 master branch
+  (Currently is in edk2-staging/RISC-V-V2 branch)
+
+## U500 Platform
+This is a sample RISC-V EDK2 platform package used agaist SiFive Freedom U500
+VC707 FPGA Dev Kit, please refer to "SiFive Freedom U500 VC707 FPGA Getting
+Started Guide" on https://www.sifive.com/documentation.
+
+## U540 Platform
+This is a sample RISC-V EDK2 platform package used against SiFive Freedom U540
+HiFive Unleashed development board, please refer to "SiFive Freedom U540-C000
+Manual" on https://www.sifive.com.
+The binary built from Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/
+can run on main stream [QEMU](https://git.qemu.org/?p=qemu.git;a=summary)
+using qemu-system-riscv64 under riscv64-softmmu. Launch the binary with
+
+```
+-cpu sifive-u54 -machine sifive_u
+```
+
+## Download the sources
+```
+git clone https://github.com/tianocore/edk2-staging.git
+# Checkout RISC-V-V2 branch
+git clone https://github.com/tianocore/edk2-platforms.git
+# Checkout devel-riscvplatforms branch
+git clone https://github.com/tianocore/edk2-non-osi.git
+```
+
+## Platform Owners
+Chang, Abner <abner.chang@hpe.com>
+Chen, Gilbert <gilbert.chen@hpe.com>
+
+## Platform Status
+Currently the binary built from U500Pkg can boot SiFive Freedom U500 VC707
+FPGA to EFI shell with console in/out enabled.
+
+## Linux Build Instructions
+You can build the RISC-V platform using below script,
+`build -a RISCV64  -t GCC5 -p Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.dsc`
+
+## Supported Operating Systems
+Only support to boot to EFI Shell so far.
+
+## Known Issues and Limitations
+Only RISC-V RV64 is verified on this platform.
+
+## Related Materials
+- [RISC-V OpenSbi](https://github.com/riscv/opensbi)
+- [SiFive U500 VC707 FPGA Getting Started Guide](https://sifive.cdn.prismic.io/sifive%2Fc248fabc-5e44-4412-b1c3-6bb6aac73a2c_sifive-u500-vc707-gettingstarted-v0.2.pdf)
+- [SiFive Freedom U540-C000 Manual](https://sifive.cdn.prismic.io/sifive%2F834354f0-08e6-423c-bf1f-0cb58ef14061_fu540-c000-v1.0.pdf)
+- [SiFive RISC-V Core Document](https://www.sifive.com/documentation)
+
+## U5SeriesPkg Libraries and Drivers
+### PeiCoreInfoHobLib
+This is the library to create RISC-V core characteristics for building up
+RISC-V related SMBIOS records to support the unified boot loader and OS image.
+This library leverage the silicon libraries provided in Silicon/SiFive.
+
+### RiscVPlatformTimerLib
+This is common U5 series platform timer library which has the
+platform-specific timer implementation.
+
+### TimerDxe
+This is U5 series platform timer DXE driver whcih has the platform-specific
+timer implementation.
+
+## U500 Platform Libraries and Drivers
+### RiscVOpensbiPlatformLib
+In order to reduce the dependencies with RISC-V OpenSBI project
+(https://github.com/riscv/opensbi) and fewer burdens to EDK2 build process, the
+implementation of RISC-V EDK2 platform is leveraging platform source code from
+OpenSBI code tree. The "platform.c" under OpenSbiPlatformLib is cloned from
+RISC-V OpenSBI code tree (in EDK2 RiscVPkg) and built based on EDK2 build
+environment.
+
+### PlatformPei
+This is the platform-implementation specific library which is executed in early
+PEI phase for U500 platform initialization.
+
+## U540 Platform Libraries and Drivers
+### RiscVOpensbiPlatformLib
+In order to reduce the dependencies with RISC-V OpenSBI project
+(https://github.com/riscv/opensbi) and fewer burdens to EDK2 build process, the
+implementation of RISC-V EDK2 platform is leveraging platform source code from
+OpenSBI code tree. The "platform.c" under OpenSbiPlatformLib is cloned from
+RISC-V OpenSBI code tree (in EDK2 RiscVPkg) and built based on EDK2 build
+environment.
+
+### PlatformPei
+This is the platform-implementation specific library which is executed in early
+PEI phase for U540 platform initialization.
+
+## U5SeriesPkg Platform PCD settings
+
+| **PCD name** |**Usage**|
+|----------------|----------|
+|PcdNumberofU5Cores| Number of U5 core enabled on U5 series platform|
+|PcdE5MCSupported| Indicates whether the Monitor Core (E5) is supported on U5 series platform|
+|PcdU5UartBase|Platform serial port base address|

+ 34 - 0
Platform/SiFive/U5SeriesPkg/U5SeriesPkg.dec

@@ -0,0 +1,34 @@
+## @file  U5SeriesPkg.dec
+# This Package provides modules and libraries.for SiFive U5 series platforms.
+#
+# Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+[Defines]
+  DEC_SPECIFICATION              = 0x0001001b
+  PACKAGE_NAME                   = U5SeriesPkg
+  PACKAGE_UNI_FILE               = U5SeriesPkg.uni
+  PACKAGE_GUID                   = AD6E43CA-7FED-4CEA-8151-68B2C5F12B3A
+  PACKAGE_VERSION                = 1.0
+
+[Includes]
+  Include
+
+[LibraryClasses]
+
+[Guids]
+  gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid  = {0x725B804B, 0x10B5, 0x4326, { 0xAD, 0xFF, 0x59, 0xCE, 0x6E, 0xFD, 0x5B, 0x36 }}
+
+[PcdsFixedAtBuild]
+  gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdU5PlatformSystemClock|0x0|UINT32|0x00001000
+  gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdNumberofU5Cores|0x8|UINT32|0x00001001
+  gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdE5MCSupported|TRUE|BOOLEAN|0x00001002
+  gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdU5UartBase|0x0|UINT32|0x00001003
+
+[PcdsPatchableInModule]
+
+[UserExtensions.TianoCore."ExtraFiles"]
+  U5SeriesPkg.uni

+ 13 - 0
Platform/SiFive/U5SeriesPkg/U5SeriesPkg.uni

@@ -0,0 +1,13 @@
+// /** @file
+// SiFive U5 Series Package Localized Strings and Content.
+//
+// Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+
+#string STR_PACKAGE_ABSTRACT            #language en-US "Provides SiFIve RISC-V U5 series platform modules and libraries"
+
+#string STR_PACKAGE_DESCRIPTION         #language en-US "This Package SiFIve RISC-V U5 series platform modules and libraries."

+ 12 - 0
Platform/SiFive/U5SeriesPkg/U5SeriesPkgExtra.uni

@@ -0,0 +1,12 @@
+// /** @file
+// SiFive U5 Series Package Localized Strings and Content.
+//
+// Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
+//
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+//
+// **/
+
+#string STR_PROPERTIES_PACKAGE_NAME
+#language en-US
+"SiFive U5 series platform package"