From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web10.30787.1677866666579516306 for ; Fri, 03 Mar 2023 10:04:28 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=aN4PoRWN; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: andrei.warkentin@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1677866668; x=1709402668; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=nauSJoLHxGaJSrQsioD1Vs4mUZ8aVfAYL9KNY9LLvno=; b=aN4PoRWNYEllHp7d+03JFR25dPXDo1Btr93M1Lgjk1Sv/tyfMIjb0piv UjHRAiGmN0174C1PrhMfLmVV5BTyWFrWmA6XRHjF3rHN/YWEUaQV3I0h5 QiBNSrUMN2JFegoYqSWiOCw5AA89QqbpFNYHHasOHqawJA0EoYj5++/1D DxbaCfqKPilkETUx0l2gyoU4JTy+5F1Y6xfA4lD1MgbWG0PoEHa3LCN57 6pd1v8J5lMBzw4PpV4jN00VhehV67gw02Qhf+xxrTDknTacxJ34GpYiL9 y6jwpvlo4hzZlM0j4RyBTXKp2CT6/g59ff5C6itBkUzw2l18EL1ZS5q+d g==; X-IronPort-AV: E=McAfee;i="6500,9779,10638"; a="332593495" X-IronPort-AV: E=Sophos;i="5.98,231,1673942400"; d="scan'208";a="332593495" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2023 10:04:23 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10638"; a="849541896" X-IronPort-AV: E=Sophos;i="5.98,231,1673942400"; d="scan'208";a="849541896" Received: from snainar-mobl1.amr.corp.intel.com (HELO awarkent-mobl1.amr.corp.intel.com) ([10.212.75.200]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Mar 2023 10:04:22 -0800 From: "Andrei Warkentin" To: devel@edk2.groups.io Cc: Andrei Warkentin , Daniel Schaefer , Sunil V L , Gerd Hoffmann Subject: [edk2 2/3] [PATCH v3] MdePkg: add SBI-based SeriaPortLib for RISC-V Date: Fri, 3 Mar 2023 12:04:09 -0600 Message-Id: <20230303180410.6344-3-andrei.warkentin@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230303180410.6344-1-andrei.warkentin@intel.com> References: <20230303180410.6344-1-andrei.warkentin@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit These are implementations of SerialPortLib using SBI console services. - SecPeiRiscVSerialPortLibSbi is appropriate for SEC/PEI (XIP) environments - PrePiDxeRiscVSerialPortLibSbi 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 Cc: Sunil V L Acked-by: Gerd Hoffmann Signed-off-by: Andrei Warkentin --- MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.inf | 36 +++ MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.inf | 39 +++ MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.c | 285 ++++++++++++++++++++ MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.c | 233 ++++++++++++++++ MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.uni | 16 ++ MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.uni | 16 ++ 6 files changed, 625 insertions(+) diff --git a/MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.inf b/MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.inf new file mode 100644 index 000000000000..1d8544756bb9 --- /dev/null +++ b/MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.inf @@ -0,0 +1,36 @@ +## @file +# Serial Port Library backed by SBI console. +# +# Meant for PrePi and DXE environments (where globals are allowed). See +# SecPeiSerialPortLibRiscVSbi for a reduced variant appropriate for SEC +# and PEI (XIP) environments. +# +# Copyright (c) 2023, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x0001001B + BASE_NAME = PrePiDxeRiscVSerialPortLibSbi + MODULE_UNI_FILE = PrePiDxeRiscVSerialPortLibSbi.uni + FILE_GUID = 872af743-ab56-45b4-a065-602567f4820c + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = SerialPortLib | SEC DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_DRIVER UEFI_APPLICATION + + +# +# VALID_ARCHITECTURES = RISCV64 +# + +[Sources] + PrePiDxeRiscVSerialPortLibSbi.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + RiscVSbiLib diff --git a/MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.inf b/MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.inf new file mode 100644 index 000000000000..7bc7cd47c11c --- /dev/null +++ b/MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.inf @@ -0,0 +1,39 @@ +## @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 PrePiDxeSerialPortLibRiscVSbi for +# the full-featured variant meant for PrePi and DXE environments. +# +# Copyright (c) 2023, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +# +## + +[Defines] + INF_VERSION = 0x0001001B + BASE_NAME = SecPeiRiscVSerialPortLibSbi + MODULE_UNI_FILE = SecPeiRiscVSerialPortLibSbi.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] + SecPeiRiscVSerialPortLibSbi.c + +[Packages] + MdePkg/MdePkg.dec + +[LibraryClasses] + RiscVSbiLib diff --git a/MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.c b/MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.c new file mode 100644 index 000000000000..cedda04ee5aa --- /dev/null +++ b/MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.c @@ -0,0 +1,285 @@ +/** @file + Serial Port Library backed by SBI console. + + Meant for PrePi and DXE environments (where globals are allowed). See + SecPeiSerialPortLibRiscVSbi for a reduced variant appropriate for SEC + and PEI (XIP) environments. + + Copyright (c) 2023, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +STATIC BOOLEAN mHaveDbcn = FALSE; +STATIC BOOLEAN mHaveLegacyPutchar = FALSE; +STATIC BOOLEAN mHaveLegacyGetchar = FALSE; +STATIC INT64 mLastGetChar = -1; + +/** + Initialize the serial device hardware. + + If no initialization is required, then return RETURN_SUCCESS. + If the serial device was successfully initialized, then return RETURN_SUCCESS. + If the serial device could not be initialized, then return RETURN_DEVICE_ERROR. + + @retval RETURN_SUCCESS The serial device was initialized. + @retval RETURN_DEVICE_ERROR The serial device could not be initialized. + +**/ +RETURN_STATUS +EFIAPI +SerialPortInitialize ( + VOID + ) +{ + SBI_RET Ret; + + Ret = SbiCall (SBI_EXT_BASE, SBI_EXT_BASE_PROBE_EXT, 1, SBI_EXT_DBCN); + if ((TranslateError (Ret.Error) == EFI_SUCCESS) && + (Ret.Value != 0)) + { + mHaveDbcn = TRUE; + } else { + Ret = SbiCall (SBI_EXT_BASE, SBI_EXT_BASE_PROBE_EXT, 1, SBI_EXT_0_1_CONSOLE_PUTCHAR); + if ((TranslateError (Ret.Error) == EFI_SUCCESS) && + (Ret.Value != 0)) + { + mHaveLegacyPutchar = TRUE; + } + + Ret = SbiCall (SBI_EXT_BASE, SBI_EXT_BASE_PROBE_EXT, 1, SBI_EXT_0_1_CONSOLE_GETCHAR); + if ((TranslateError (Ret.Error) == EFI_SUCCESS) && + (Ret.Value != 0)) + { + mHaveLegacyGetchar = TRUE; + } + } + + return RETURN_SUCCESS; +} + +/** + Write data from buffer to serial device. + + Writes NumberOfBytes data bytes from Buffer to the serial device. + The number of bytes actually written to the serial device is returned. + If the return value is less than NumberOfBytes, then the write operation failed. + If Buffer is NULL, then ASSERT(). + If NumberOfBytes is zero, then return 0. + + @param Buffer The pointer to the data buffer to be written. + @param NumberOfBytes The number of bytes to written to the serial device. + + @retval 0 NumberOfBytes is 0. + @retval >0 The number of bytes written to the serial device. + If this value is less than NumberOfBytes, then the write operation failed. + +**/ +UINTN +EFIAPI +SerialPortWrite ( + IN UINT8 *Buffer, + IN UINTN NumberOfBytes + ) +{ + UINTN Index; + + if (mHaveDbcn) { + SBI_RET Ret; + Ret = SbiCall ( + SBI_EXT_DBCN, + SBI_EXT_DBCN_WRITE, + 3, + NumberOfBytes, + ((UINTN)Buffer), + 0 + ); + if (TranslateError (Ret.Error) != EFI_SUCCESS) { + return 0; + } + + return Ret.Value; + } else if (mHaveLegacyPutchar) { + for (Index = 0; Index < NumberOfBytes; Index++) { + SbiCall (SBI_EXT_0_1_CONSOLE_PUTCHAR, 0, 1, Buffer[Index]); + } + + return Index; + } + + /* + * Neither DBCN or legacy extension were present. + */ + return NumberOfBytes; +} + +/** + Read data from serial device and save the datas in buffer. + + Reads NumberOfBytes data bytes from a serial device into the buffer + specified by Buffer. The number of bytes actually read is returned. + If the return value is less than NumberOfBytes, then the rest operation failed. + If Buffer is NULL, then ASSERT(). + If NumberOfBytes is zero, then return 0. + + @param Buffer The pointer to the data buffer to store the data read from the serial device. + @param NumberOfBytes The number of bytes which will be read. + + @retval 0 Read data failed; No data is to be read. + @retval >0 The actual number of bytes read from serial device. + +**/ +UINTN +EFIAPI +SerialPortRead ( + OUT UINT8 *Buffer, + IN UINTN NumberOfBytes + ) +{ + UINTN Index = 0; + + while ((Index < NumberOfBytes) && SerialPortPoll ()) { + Buffer[Index++] = (UINT8)mLastGetChar; + mLastGetChar = -1; + } + + return Index; +} + +/** + Polls a serial device to see if there is any data waiting to be read. + + Polls a serial device to see if there is any data waiting to be read. + If there is data waiting to be read from the serial device, then TRUE is returned. + If there is no data waiting to be read from the serial device, then FALSE is returned. + + @retval TRUE Data is waiting to be read from the serial device. + @retval FALSE There is no data waiting to be read from the serial device. + +**/ +BOOLEAN +EFIAPI +SerialPortPoll ( + VOID + ) +{ + /* + * Careful. OpenSBI with HTIF console will return -1 followed by -2 + * if there is no character received. So just check for values >= 0. + */ + + if (mLastGetChar >= 0) { + return TRUE; + } + + if (mHaveDbcn) { + UINT8 Buffer; + SBI_RET Ret = SbiCall ( + SBI_EXT_DBCN, + SBI_EXT_DBCN_READ, + 3, + 1, + ((UINTN)&Buffer), + 0 + ); + if ((TranslateError (Ret.Error) == EFI_SUCCESS) && + (Ret.Value == 1)) + { + mLastGetChar = Buffer; + } + } else if (mHaveLegacyGetchar) { + mLastGetChar = (INT64)SbiCall (SBI_EXT_0_1_CONSOLE_GETCHAR, 0, 0).Error; + } + + return mLastGetChar >= 0; +} + +/** + Sets the control bits on a serial device. + + @param Control Sets the bits of Control that are settable. + + @retval RETURN_SUCCESS The new control bits were set on the serial device. + @retval RETURN_UNSUPPORTED The serial device does not support this operation. + @retval RETURN_DEVICE_ERROR The serial device is not functioning correctly. + +**/ +RETURN_STATUS +EFIAPI +SerialPortSetControl ( + IN UINT32 Control + ) +{ + return RETURN_SUCCESS; +} + +/** + Retrieve the status of the control bits on a serial device. + + @param Control A pointer to return the current control signals from the serial device. + + @retval RETURN_SUCCESS The control bits were read from the serial device. + @retval RETURN_UNSUPPORTED The serial device does not support this operation. + @retval RETURN_DEVICE_ERROR The serial device is not functioning correctly. + +**/ +RETURN_STATUS +EFIAPI +SerialPortGetControl ( + OUT UINT32 *Control + ) +{ + *Control = 0; + return RETURN_SUCCESS; +} + +/** + Sets the baud rate, receive FIFO depth, transmit/receice time out, parity, + data bits, and stop bits on a serial device. + + @param BaudRate The requested baud rate. A BaudRate value of 0 will use the + device's default interface speed. + On output, the value actually set. + @param ReveiveFifoDepth The requested depth of the FIFO on the receive side of the + serial interface. A ReceiveFifoDepth value of 0 will use + the device's default FIFO depth. + On output, the value actually set. + @param Timeout The requested time out for a single character in microseconds. + This timeout applies to both the transmit and receive side of the + interface. A Timeout value of 0 will use the device's default time + out value. + On output, the value actually set. + @param Parity The type of parity to use on this serial device. A Parity value of + DefaultParity will use the device's default parity value. + On output, the value actually set. + @param DataBits The number of data bits to use on the serial device. A DataBits + vaule of 0 will use the device's default data bit setting. + On output, the value actually set. + @param StopBits The number of stop bits to use on this serial device. A StopBits + value of DefaultStopBits will use the device's default number of + stop bits. + On output, the value actually set. + + @retval RETURN_SUCCESS The new attributes were set on the serial device. + @retval RETURN_UNSUPPORTED The serial device does not support this operation. + @retval RETURN_INVALID_PARAMETER One or more of the attributes has an unsupported value. + @retval RETURN_DEVICE_ERROR The serial device is not functioning correctly. + +**/ +RETURN_STATUS +EFIAPI +SerialPortSetAttributes ( + IN OUT UINT64 *BaudRate, + IN OUT UINT32 *ReceiveFifoDepth, + IN OUT UINT32 *Timeout, + IN OUT EFI_PARITY_TYPE *Parity, + IN OUT UINT8 *DataBits, + IN OUT EFI_STOP_BITS_TYPE *StopBits + ) +{ + return RETURN_SUCCESS; +} diff --git a/MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.c b/MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.c new file mode 100644 index 000000000000..0ad5931be3ae --- /dev/null +++ b/MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.c @@ -0,0 +1,233 @@ +/** @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 PrePiDxeSerialPortLibRiscVSbi for + the full-featured variant meant for PrePi and DXE environments. + + Copyright (c) 2023, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include +#include +#include + +/** + Initialize the serial device hardware. + + If no initialization is required, then return RETURN_SUCCESS. + If the serial device was successfully initialized, then return RETURN_SUCCESS. + If the serial device could not be initialized, then return RETURN_DEVICE_ERROR. + + @retval RETURN_SUCCESS The serial device was initialized. + @retval RETURN_DEVICE_ERROR The serial device could not be initialized. + +**/ +RETURN_STATUS +EFIAPI +SerialPortInitialize ( + VOID + ) +{ + return RETURN_SUCCESS; +} + +/** + Write data from buffer to serial device. + + Writes NumberOfBytes data bytes from Buffer to the serial device. + The number of bytes actually written to the serial device is returned. + If the return value is less than NumberOfBytes, then the write operation failed. + If Buffer is NULL, then ASSERT(). + If NumberOfBytes is zero, then return 0. + + @param Buffer The pointer to the data buffer to be written. + @param NumberOfBytes The number of bytes to written to the serial device. + + @retval 0 NumberOfBytes is 0. + @retval >0 The number of bytes written to the serial device. + If this value is less than NumberOfBytes, then the write operation failed. + +**/ +UINTN +EFIAPI +SerialPortWrite ( + IN UINT8 *Buffer, + IN UINTN NumberOfBytes + ) +{ + SBI_RET Ret; + UINTN Index; + + Ret = SbiCall (SBI_EXT_BASE, SBI_EXT_BASE_PROBE_EXT, 1, SBI_EXT_DBCN); + if ((TranslateError (Ret.Error) == EFI_SUCCESS) && + (Ret.Value != 0)) + { + Ret = SbiCall ( + SBI_EXT_DBCN, + SBI_EXT_DBCN_WRITE, + 3, + NumberOfBytes, + ((UINTN)Buffer), + 0 + ); + if (TranslateError (Ret.Error) != EFI_SUCCESS) { + return 0; + } + + return Ret.Value; + } + + Ret = SbiCall (SBI_EXT_BASE, SBI_EXT_BASE_PROBE_EXT, 1, SBI_EXT_0_1_CONSOLE_PUTCHAR); + if ((TranslateError (Ret.Error) == EFI_SUCCESS) && + (Ret.Value != 0)) + { + for (Index = 0; Index < NumberOfBytes; Index++) { + SbiCall (SBI_EXT_0_1_CONSOLE_PUTCHAR, 0, 1, Buffer[Index]); + } + + return Index; + } + + /* + * Neither DBCN or legacy extension were present. + */ + return NumberOfBytes; +} + +/** + Read data from serial device and save the datas in buffer. + + Reads NumberOfBytes data bytes from a serial device into the buffer + specified by Buffer. The number of bytes actually read is returned. + If the return value is less than NumberOfBytes, then the rest operation failed. + If Buffer is NULL, then ASSERT(). + If NumberOfBytes is zero, then return 0. + + @param Buffer The pointer to the data buffer to store the data read from the serial device. + @param NumberOfBytes The number of bytes which will be read. + + @retval 0 Read data failed; No data is to be read. + @retval >0 The actual number of bytes read from serial device. + +**/ +UINTN +EFIAPI +SerialPortRead ( + OUT UINT8 *Buffer, + IN UINTN NumberOfBytes + ) +{ + return 0; +} + +/** + Polls a serial device to see if there is any data waiting to be read. + + Polls a serial device to see if there is any data waiting to be read. + If there is data waiting to be read from the serial device, then TRUE is returned. + If there is no data waiting to be read from the serial device, then FALSE is returned. + + @retval TRUE Data is waiting to be read from the serial device. + @retval FALSE There is no data waiting to be read from the serial device. + +**/ +BOOLEAN +EFIAPI +SerialPortPoll ( + VOID + ) +{ + return FALSE; +} + +/** + Sets the control bits on a serial device. + + @param Control Sets the bits of Control that are settable. + + @retval RETURN_SUCCESS The new control bits were set on the serial device. + @retval RETURN_UNSUPPORTED The serial device does not support this operation. + @retval RETURN_DEVICE_ERROR The serial device is not functioning correctly. + +**/ +RETURN_STATUS +EFIAPI +SerialPortSetControl ( + IN UINT32 Control + ) +{ + return RETURN_SUCCESS; +} + +/** + Retrieve the status of the control bits on a serial device. + + @param Control A pointer to return the current control signals from the serial device. + + @retval RETURN_SUCCESS The control bits were read from the serial device. + @retval RETURN_UNSUPPORTED The serial device does not support this operation. + @retval RETURN_DEVICE_ERROR The serial device is not functioning correctly. + +**/ +RETURN_STATUS +EFIAPI +SerialPortGetControl ( + OUT UINT32 *Control + ) +{ + *Control = 0; + return RETURN_SUCCESS; +} + +/** + Sets the baud rate, receive FIFO depth, transmit/receice time out, parity, + data bits, and stop bits on a serial device. + + @param BaudRate The requested baud rate. A BaudRate value of 0 will use the + device's default interface speed. + On output, the value actually set. + @param ReveiveFifoDepth The requested depth of the FIFO on the receive side of the + serial interface. A ReceiveFifoDepth value of 0 will use + the device's default FIFO depth. + On output, the value actually set. + @param Timeout The requested time out for a single character in microseconds. + This timeout applies to both the transmit and receive side of the + interface. A Timeout value of 0 will use the device's default time + out value. + On output, the value actually set. + @param Parity The type of parity to use on this serial device. A Parity value of + DefaultParity will use the device's default parity value. + On output, the value actually set. + @param DataBits The number of data bits to use on the serial device. A DataBits + vaule of 0 will use the device's default data bit setting. + On output, the value actually set. + @param StopBits The number of stop bits to use on this serial device. A StopBits + value of DefaultStopBits will use the device's default number of + stop bits. + On output, the value actually set. + + @retval RETURN_SUCCESS The new attributes were set on the serial device. + @retval RETURN_UNSUPPORTED The serial device does not support this operation. + @retval RETURN_INVALID_PARAMETER One or more of the attributes has an unsupported value. + @retval RETURN_DEVICE_ERROR The serial device is not functioning correctly. + +**/ +RETURN_STATUS +EFIAPI +SerialPortSetAttributes ( + IN OUT UINT64 *BaudRate, + IN OUT UINT32 *ReceiveFifoDepth, + IN OUT UINT32 *Timeout, + IN OUT EFI_PARITY_TYPE *Parity, + IN OUT UINT8 *DataBits, + IN OUT EFI_STOP_BITS_TYPE *StopBits + ) +{ + return RETURN_SUCCESS; +} diff --git a/MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.uni b/MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.uni new file mode 100644 index 000000000000..7b22caa5a090 --- /dev/null +++ b/MdePkg/Library/PrePiDxeRiscVSerialPortLibSbi/PrePiDxeRiscVSerialPortLibSbi.uni @@ -0,0 +1,16 @@ +// /** @file +// Serial Port Library backed by SBI console. +// +// Serial Port Library backed by SBI console. +// +// Copyright (c) 2023, Intel Corporation. All rights reserved.
+// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + + +#string STR_MODULE_ABSTRACT #language en-US "Serial Port Library backed by SBI console" + +#string STR_MODULE_DESCRIPTION #language en-US "Serial Port Library backed by SBI console." + diff --git a/MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.uni b/MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.uni new file mode 100644 index 000000000000..7b22caa5a090 --- /dev/null +++ b/MdePkg/Library/SecPeiRiscVSerialPortLibSbi/SecPeiRiscVSerialPortLibSbi.uni @@ -0,0 +1,16 @@ +// /** @file +// Serial Port Library backed by SBI console. +// +// Serial Port Library backed by SBI console. +// +// Copyright (c) 2023, Intel Corporation. All rights reserved.
+// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + + +#string STR_MODULE_ABSTRACT #language en-US "Serial Port Library backed by SBI console" + +#string STR_MODULE_DESCRIPTION #language en-US "Serial Port Library backed by SBI console." + -- 2.25.1