ArmVirtPkg: Move the FdtSerialPortAddressLib to OvmfPkg
Move the FdtSerialPortAddressLib to Ovmfpkg so that other ARCH can easily use it. Build-tested only (with "ArmVirtQemu.dsc and OvmfPkgX64.dsc"). BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4584 Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Leif Lindholm <quic_llindhol@quicinc.com> Cc: Sami Mujawar <sami.mujawar@arm.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Signed-off-by: Chao Li <lichao@loongson.cn> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
83
OvmfPkg/Include/Library/FdtSerialPortAddressLib.h
Normal file
83
OvmfPkg/Include/Library/FdtSerialPortAddressLib.h
Normal file
@@ -0,0 +1,83 @@
|
||||
/** @file
|
||||
Determine the base addresses of serial ports from the Device Tree.
|
||||
|
||||
Copyright (C) Red Hat
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
|
||||
#ifndef FDT_SERIAL_PORT_ADDRESS_LIB_H_
|
||||
#define FDT_SERIAL_PORT_ADDRESS_LIB_H_
|
||||
|
||||
#include <Base.h>
|
||||
|
||||
typedef struct {
|
||||
UINTN NumberOfPorts;
|
||||
UINT64 BaseAddress[2];
|
||||
} FDT_SERIAL_PORTS;
|
||||
|
||||
/**
|
||||
Collect the first ARRAY_SIZE (Ports->BaseAddress) serial ports into Ports from
|
||||
DeviceTree.
|
||||
|
||||
@param[in] DeviceTree The flat device tree (FDT) to scan.
|
||||
|
||||
@param[in] Compatible Look for Compatible in the "compatible" property of the
|
||||
scanned nodes.
|
||||
|
||||
@param[out] Ports On successful return, Ports->NumberOfPorts contains the
|
||||
number of serial ports found; it is (a) positive and
|
||||
(b) at most ARRAY_SIZE (Ports->BaseAddress). If the FDT
|
||||
had more serial ports, those are not reported. On
|
||||
error, the contents of Ports are indeterminate.
|
||||
|
||||
@retval RETURN_INVALID_PARAMETER DeviceTree does not point to a valid FDT
|
||||
header.
|
||||
|
||||
@retval RETURN_NOT_FOUND No compatible and enabled serial port has
|
||||
been found.
|
||||
|
||||
@retval RETURN_SUCCESS At least one compatible and enabled serial
|
||||
port has been found; Ports has been filled
|
||||
in.
|
||||
**/
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
FdtSerialGetPorts (
|
||||
IN CONST VOID *DeviceTree,
|
||||
IN CONST CHAR8 *Compatible,
|
||||
OUT FDT_SERIAL_PORTS *Ports
|
||||
);
|
||||
|
||||
/**
|
||||
Fetch the base address of the serial port identified in the "stdout-path"
|
||||
property of the "/chosen" node in DeviceTree.
|
||||
|
||||
@param[in] DeviceTree The flat device tree (FDT) to scan.
|
||||
|
||||
@param[out] BaseAddress On success, the base address of the preferred serial
|
||||
port (to be used as console). On error, BaseAddress
|
||||
is not modified.
|
||||
|
||||
@retval RETURN_INVALID_PARAMETER DeviceTree does not point to a valid FDT
|
||||
header.
|
||||
|
||||
@retval RETURN_NOT_FOUND No enabled console port has been found.
|
||||
|
||||
@retval RETURN_PROTOCOL_ERROR The first (or only) node path in the
|
||||
"stdout-path" property is an empty string.
|
||||
|
||||
@retval RETURN_PROTOCOL_ERROR The console port has been found in the FDT,
|
||||
but its base address is not correctly
|
||||
represented.
|
||||
|
||||
@retval RETURN_SUCCESS BaseAddress has been populated.
|
||||
**/
|
||||
RETURN_STATUS
|
||||
EFIAPI
|
||||
FdtSerialGetConsolePort (
|
||||
IN CONST VOID *DeviceTree,
|
||||
OUT UINT64 *BaseAddress
|
||||
);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user