/** @file * * Copyright (c) 2017, Linaro, Ltd. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * **/ #include #include #include #include /** Return a pool allocated copy of the DTB image that is appropriate for booting the current platform via DT. @param[out] Dtb Pointer to the DTB copy @param[out] DtbSize Size of the DTB copy @retval EFI_SUCCESS Operation completed successfully @retval EFI_NOT_FOUND No suitable DTB image could be located @retval EFI_OUT_OF_RESOURCES No pool memory available **/ EFI_STATUS EFIAPI DtPlatformLoadDtb ( OUT VOID **Dtb, OUT UINTN *DtbSize ) { EFI_STATUS Status; VOID *OrigDtb; VOID *CopyDtb; UINTN OrigDtbSize; Status = GetSectionFromAnyFv ( &gDtPlatformDefaultDtbFileGuid, EFI_SECTION_RAW, 0, &OrigDtb, &OrigDtbSize ); if (EFI_ERROR (Status)) { return EFI_NOT_FOUND; } CopyDtb = AllocateCopyPool (OrigDtbSize, OrigDtb); if (CopyDtb == NULL) { return EFI_OUT_OF_RESOURCES; } *Dtb = CopyDtb; *DtbSize = OrigDtbSize; return EFI_SUCCESS; }