25 EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
26 &gOvmfTpmDiscoveredPpiGuid,
31 EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
32 &gPeiTpmInitializationDonePpiGuid,
51 CONST CHAR8 *Compatible;
52 CONST CHAR8 *CompItem;
55 CONST UINT64 *RegProp;
56 CONST UINT32 *RangesProp;
61 ASSERT (Base !=
NULL);
64 FdtSize = FdtTotalSize (Base) +
PcdGet32 (PcdDeviceTreeAllocationPadding);
67 ASSERT (NewBase !=
NULL);
70 FdtHobData =
BuildGuidHob (&gFdtHobGuid,
sizeof *FdtHobData);
71 ASSERT (FdtHobData !=
NULL);
72 *FdtHobData = (
UINTN)NewBase;
74 UartHobData =
BuildGuidHob (&gEarlyPL011BaseAddressGuid,
sizeof *UartHobData);
75 ASSERT (UartHobData !=
NULL);
76 SetMem (UartHobData,
sizeof *UartHobData, 0);
79 if (!EFI_ERROR (Status)) {
80 if (Ports.NumberOfPorts == 1) {
84 UartHobData->ConsoleAddress = Ports.BaseAddress[0];
85 UartHobData->DebugAddress = Ports.BaseAddress[0];
87 UINT64 ConsoleAddress;
90 if (EFI_ERROR (Status)) {
96 UartHobData->ConsoleAddress = Ports.BaseAddress[0];
97 UartHobData->DebugAddress = Ports.BaseAddress[1];
104 UartHobData->ConsoleAddress = ConsoleAddress;
105 if (ConsoleAddress == Ports.BaseAddress[0]) {
106 UartHobData->DebugAddress = Ports.BaseAddress[1];
108 UartHobData->DebugAddress = Ports.BaseAddress[0];
115 "%a: PL011 UART (console) @ 0x%lx\n",
117 UartHobData->ConsoleAddress
121 "%a: PL011 UART (debug) @ 0x%lx\n",
123 UartHobData->DebugAddress
134 for (Prev = Depth = 0; ; Prev = Node) {
144 Compatible =
FdtGetProp (Base, Node,
"compatible", &Len);
149 for (CompItem = Compatible; CompItem !=
NULL && CompItem < Compatible + Len;
155 RegProp =
FdtGetProp (Base, Node,
"reg", &Len);
156 ASSERT (Len == 8 || Len == 16);
159 }
else if (Len == 16) {
171 RangesProp =
FdtGetProp (Base, Parent,
"ranges", &RangesLen);
172 ASSERT (RangesProp !=
NULL);
177 if (RangesLen != 0) {
181 if (RangesLen != Len + 2 *
sizeof (UINT32)) {
184 "%a: 'ranges' property has unexpected size %d\n",
200 RangesProp = (UINT32 *)((UINT8 *)RangesProp + Len / 2);
212 DEBUG ((DEBUG_INFO,
"%a: TPM @ 0x%lx\n", __func__, TpmBase));
VOID EFIAPI BuildFvHob(IN EFI_PHYSICAL_ADDRESS BaseAddress, IN UINT64 Length)
VOID *EFIAPI BuildGuidHob(IN CONST EFI_GUID *Guid, IN UINTN DataLength)
UINT64 EFIAPI ReadUnaligned64(IN CONST VOID *Buffer)
UINTN EFIAPI AsciiStrLen(IN CONST CHAR8 *String)
INTN EFIAPI AsciiStrCmp(IN CONST CHAR8 *FirstString, IN CONST CHAR8 *SecondString)
VOID *EFIAPI SetMem(OUT VOID *Buffer, IN UINTN Length, IN UINT8 Value)
EFI_STATUS EFIAPI PeiServicesInstallPpi(IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList)
UINT64 EFIAPI Fdt64ToCpu(IN UINT64 Value)
INT32 EFIAPI FdtOpenInto(IN CONST VOID *Fdt, OUT VOID *Buffer, IN INT32 BufferSize)
INT32 EFIAPI FdtNextNode(IN CONST VOID *Fdt, IN INT32 Offset, IN INT32 *Depth)
INT32 EFIAPI FdtCheckHeader(IN CONST VOID *Fdt)
UINT32 EFIAPI Fdt32ToCpu(IN UINT32 Value)
CONST VOID *EFIAPI FdtGetProp(IN CONST VOID *Fdt, IN INT32 NodeOffset, IN CONST CHAR8 *Name, IN INT32 *Length)
RETURN_STATUS EFIAPI FdtSerialGetConsolePort(IN CONST VOID *DeviceTree, OUT UINT64 *BaseAddress)
RETURN_STATUS EFIAPI FdtSerialGetPorts(IN CONST VOID *DeviceTree, IN CONST CHAR8 *Compatible, OUT FDT_SERIAL_PORTS *Ports)
#define ASSERT_EFI_ERROR(StatusParameter)
#define DEBUG(Expression)
#define PcdGet64(TokenName)
#define PcdGet32(TokenName)
#define PcdSet64S(TokenName, Value)
#define FeaturePcdGet(TokenName)
VOID *EFIAPI AllocatePages(IN UINTN Pages)
#define EFI_PAGES_TO_SIZE(Pages)
#define EFI_SIZE_TO_PAGES(Size)