2 Kvmtool platform PEI library.
4 Copyright (c) 2020, ARM Limited. All rights reserved.
6 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #include <Guid/Early16550UartBaseAddress.h>
13 #include <Guid/FdtHob.h>
15 #include <Library/MemoryAllocationLib.h>
16 #include <Library/DebugLib.h>
17 #include <Library/HobLib.h>
18 #include <Library/PcdLib.h>
19 #include <Library/PeiServicesLib.h>
22 /** Initialise Platform HOBs
24 @retval EFI_SUCCESS Success.
25 @retval EFI_INVALID_PARAMETER A parameter is invalid.
26 @retval EFI_OUT_OF_RESOURCES Out of resources.
41 Base
= (VOID
*)(UINTN
)PcdGet64 (PcdDeviceTreeInitialBaseAddress
);
42 if ((Base
== NULL
) || (fdt_check_header (Base
) != 0)) {
44 return EFI_INVALID_PARAMETER
;
47 FdtSize
= fdt_totalsize (Base
) + PcdGet32 (PcdDeviceTreeAllocationPadding
);
48 FdtPages
= EFI_SIZE_TO_PAGES (FdtSize
);
49 NewBase
= AllocatePages (FdtPages
);
50 if (NewBase
== NULL
) {
52 return EFI_OUT_OF_RESOURCES
;
55 fdt_open_into (Base
, NewBase
, EFI_PAGES_TO_SIZE (FdtPages
));
57 FdtHobData
= BuildGuidHob (&gFdtHobGuid
, sizeof (*FdtHobData
));
58 if (FdtHobData
== NULL
) {
60 return EFI_OUT_OF_RESOURCES
;
63 *FdtHobData
= (UINTN
)NewBase
;
65 UartHobData
= BuildGuidHob (
66 &gEarly16550UartBaseAddressGuid
,
69 if (UartHobData
== NULL
) {
71 return EFI_OUT_OF_RESOURCES
;
74 *UartHobData
= PcdGet64 (PcdSerialRegisterBase
);
76 BuildFvHob (PcdGet64 (PcdFvBaseAddress
), PcdGet32 (PcdFvSize
));