EmbeddedPkg: Split off FDT loading functionality from FdtLib

Split off the recently added functionality to load device tree images and
install them as configuration tables, as it introduces a dependency on
UefiBootServicesTableLib, preventing FdtLib from being used during SEC and
PEI phases.

Contributed-under: TianoCore Contribution Agreement 1.0
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16080 6f19259b-4bc3-4df7-8a09-765794883524
diff --git a/EmbeddedPkg/EmbeddedPkg.dsc b/EmbeddedPkg/EmbeddedPkg.dsc
index 9960d8f..8844f8e 100644
--- a/EmbeddedPkg/EmbeddedPkg.dsc
+++ b/EmbeddedPkg/EmbeddedPkg.dsc
@@ -262,6 +262,9 @@
 

   EmbeddedPkg/Universal/MmcDxe/MmcDxe.inf

 

+  # FDT Support

+  EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf

+

   EmbeddedPkg/Application/AndroidFastboot/AndroidFastbootApp.inf

   EmbeddedPkg/Drivers/AndroidFastbootTransportUsbDxe/FastbootTransportUsbDxe.inf

   EmbeddedPkg/Drivers/AndroidFastbootTransportTcpDxe/FastbootTransportTcpDxe.inf

diff --git a/EmbeddedPkg/Include/Library/FdtLoadLib.h b/EmbeddedPkg/Include/Library/FdtLoadLib.h
new file mode 100644
index 0000000..e08f499
--- /dev/null
+++ b/EmbeddedPkg/Include/Library/FdtLoadLib.h
@@ -0,0 +1,48 @@
+/** @file

+*

+*  Copyright (c) 2011-2014, ARM Limited. All rights reserved.

+*

+*  This program and the accompanying materials

+*  are licensed and made available under the terms and conditions of the BSD License

+*  which accompanies this distribution.  The full text of the license may be found at

+*  http://opensource.org/licenses/bsd-license.php

+*

+*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,

+*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

+*

+**/

+

+#ifndef _FDT_LOAD_LIB_H_

+#define _FDT_LOAD_LIB_H_

+

+/**

+  Load and Install FDT from Semihosting

+

+  @param Filename   Name of the file to load from semihosting

+

+  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table

+                                from semihosting

+  @return EFI_NOT_FOUND         Fail to locate the file in semihosting

+  @return EFI_OUT_OF_RESOURCES  Fail to allocate memory to contain the blob

+**/

+EFI_STATUS

+InstallFdtFromSemihosting (

+  IN  CONST CHAR16*   FileName

+  );

+

+/**

+  Load and Install FDT from Firmware Volume

+

+  @param Filename   Guid of the FDT blob to load from firmware volume

+

+  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table

+                                from firmware volume

+  @return EFI_NOT_FOUND         Failed to locate the file in firmware volume

+  @return EFI_OUT_OF_RESOURCES  Failed to allocate memory to contain the blob

+**/

+EFI_STATUS

+InstallFdtFromFv (

+  IN  CONST EFI_GUID *FileName

+  );

+

+#endif

diff --git a/EmbeddedPkg/Include/libfdt_env.h b/EmbeddedPkg/Include/libfdt_env.h
index c4dc83c..3e24db9 100644
--- a/EmbeddedPkg/Include/libfdt_env.h
+++ b/EmbeddedPkg/Include/libfdt_env.h
@@ -15,7 +15,6 @@
 #ifndef _LIBFDT_ENV_H

 #define _LIBFDT_ENV_H

 

-#include <Uefi.h>

 #include <Library/BaseLib.h>

 #include <Library/BaseMemoryLib.h>

 

@@ -79,34 +78,4 @@
   return AsciiStrStr (s, pattern);

 }

 

-/**

-  Load and Install FDT from Semihosting

-

-  @param Filename   Name of the file to load from semihosting

-

-  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table

-                                from semihosting

-  @return EFI_NOT_FOUND         Fail to locate the file in semihosting

-  @return EFI_OUT_OF_RESOURCES  Fail to allocate memory to contain the blob

-**/

-EFI_STATUS

-InstallFdtFromSemihosting (

-  IN  CONST CHAR16*   FileName

-  );

-

-/**

-  Load and Install FDT from Firmware Volume

-

-  @param Filename   Guid of the FDT blob to load from firmware volume

-

-  @return EFI_SUCCESS           Fdt Blob was successfully installed into the configuration table

-                                from firmware volume

-  @return EFI_NOT_FOUND         Failed to locate the file in firmware volume

-  @return EFI_OUT_OF_RESOURCES  Failed to allocate memory to contain the blob

-**/

-EFI_STATUS

-InstallFdtFromFv (

-  IN  CONST EFI_GUID *FileName

-  );

-

 #endif /* _LIBFDT_ENV_H */

diff --git a/EmbeddedPkg/Library/FdtLib/FdtLib.inf b/EmbeddedPkg/Library/FdtLib/FdtLib.inf
index d18caa6..f3da231 100644
--- a/EmbeddedPkg/Library/FdtLib/FdtLib.inf
+++ b/EmbeddedPkg/Library/FdtLib/FdtLib.inf
@@ -26,7 +26,6 @@
 #

 

 [Sources]

-  FdtConfigurationTable.c

   fdt_ro.c

   fdt_rw.c

   fdt_strerror.c

@@ -37,15 +36,3 @@
 [Packages]

   MdePkg/MdePkg.dec

   EmbeddedPkg/EmbeddedPkg.dec

-

-[LibraryClasses]

-  UefiBootServicesTableLib

-

-[Protocols]

-  gEfiDevicePathProtocolGuid

-  gEfiSimpleFileSystemProtocolGuid

-  gEfiFirmwareVolume2ProtocolGuid

-

-[Guids]

-  gEfiFileInfoGuid

-  gFdtTableGuid

diff --git a/EmbeddedPkg/Library/FdtLib/FdtConfigurationTable.c b/EmbeddedPkg/Library/FdtLoadLib/FdtConfigurationTable.c
similarity index 99%
rename from EmbeddedPkg/Library/FdtLib/FdtConfigurationTable.c
rename to EmbeddedPkg/Library/FdtLoadLib/FdtConfigurationTable.c
index aece1df..a95e249 100644
--- a/EmbeddedPkg/Library/FdtLib/FdtConfigurationTable.c
+++ b/EmbeddedPkg/Library/FdtLoadLib/FdtConfigurationTable.c
@@ -14,6 +14,7 @@
 

 #include <PiDxe.h>

 #include <Library/DebugLib.h>

+#include <Library/FdtLoadLib.h>

 #include <Library/MemoryAllocationLib.h>

 #include <Library/UefiBootServicesTableLib.h>

 

diff --git a/EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf b/EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf
new file mode 100644
index 0000000..a50aa36
--- /dev/null
+++ b/EmbeddedPkg/Library/FdtLoadLib/FdtLoadLib.inf
@@ -0,0 +1,45 @@
+#/* @file

+#  Copyright (c) 2014, Linaro Limited. All rights reserved.

+#

+#  This program and the accompanying materials

+#  are licensed and made available under the terms and conditions of the BSD License

+#  which accompanies this distribution.  The full text of the license may be found at

+#  http://opensource.org/licenses/bsd-license.php

+#

+#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,

+#  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

+#

+#*/

+

+[Defines]

+  INF_VERSION                    = 0x00010005

+  BASE_NAME                      = FdtLoadLib

+  FILE_GUID                      = F00298C1-BBC3-445F-8906-AAEAFE7729A4

+  MODULE_TYPE                    = BASE

+  VERSION_STRING                 = 1.0

+  LIBRARY_CLASS                  = FdtLoadLib

+

+#

+# The following information is for reference only and not required by the build tools.

+#

+#  VALID_ARCHITECTURES           = ARM AARCH64

+#

+

+[Sources]

+  FdtConfigurationTable.c

+

+[Packages]

+  MdePkg/MdePkg.dec

+  EmbeddedPkg/EmbeddedPkg.dec

+

+[LibraryClasses]

+  FdtLib

+

+[Protocols]

+  gEfiDevicePathProtocolGuid

+  gEfiSimpleFileSystemProtocolGuid

+  gEfiFirmwareVolume2ProtocolGuid

+

+[Guids]

+  gEfiFileInfoGuid

+  gFdtTableGuid