MdePkg: add SBI-based SerialPortLib for RISC-V

These are implementations of SerialPortLib using SBI console services.
- BaseSerialPortLibRiscVSbiLib is appropriate for SEC/PEI (XIP)
  environments
- BaseSerialPortLibRiscVSbiLibRam is appropriate for PrePI/DXE
  environments

Tested with:
- Qemu RiscVVirt (non-DBCN case, backed by UART)
- TinyEMU + RiscVVirt (non-DBCN case, HTIF)
- TinyEMU + RiscVVirt (DBCN case, HTIF)

Cc: Daniel Schaefer <git@danielschaefer.me>
Cc: Sunil V L <sunilvl@ventanamicro.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>
Signed-off-by: Andrei Warkentin <andrei.warkentin@intel.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
This commit is contained in:
Andrei Warkentin
2023-02-28 17:32:03 -06:00
committed by mergify[bot]
parent 2900e75511
commit 45da4e3135
8 changed files with 767 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
## @file
# Serial Port Library backed by SBI console.
#
# Meant for SEC and PEI (XIP) environments.
#
# Due to limitations of SBI console interface and XIP environments
# (on use of globals), this library instance does not implement reading
# and polling the serial port. See PrePiDxeSerialPortLibRiscVSbiRam.inf
# for the full-featured variant meant for PrePi and DXE environments.
#
# Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##
[Defines]
INF_VERSION = 0x0001001B
BASE_NAME = BaseSerialPortLibRiscVSbiLib
MODULE_UNI_FILE = BaseSerialPortLibRiscVSbiLib.uni
FILE_GUID = 639fad38-4bfd-4eb9-9f09-e97c7947d480
MODULE_TYPE = BASE
VERSION_STRING = 1.0
LIBRARY_CLASS = SerialPortLib | SEC PEI_CORE PEIM
#
# VALID_ARCHITECTURES = RISCV64
#
[Sources]
BaseSerialPortLibRiscVSbiLib.c
Common.c
Common.h
[Packages]
MdePkg/MdePkg.dec
[LibraryClasses]
RiscVSbiLib