summaryrefslogtreecommitdiffstats
path: root/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c
diff options
context:
space:
mode:
Diffstat (limited to 'ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c')
-rw-r--r--ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c137
1 files changed, 5 insertions, 132 deletions
diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c
index 8c42814a04..7827c50d8b 100644
--- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c
+++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpressDxe/ArmFvpDxe.c
@@ -12,16 +12,15 @@
**/
-#include "ArmVExpressInternal.h"
-
#include <PiDxe.h>
+
+#include <Library/ArmShellCmdLib.h>
#include <Library/BaseMemoryLib.h>
+#include <Library/DebugLib.h>
+#include <Library/UefiBootServicesTableLib.h>
#include <Library/VirtioMmioDeviceLib.h>
-#include <Library/ArmShellCmdLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/DevicePathLib.h>
-#include <Protocol/FirmwareVolume2.h>
+#include <VExpressMotherBoard.h>
#define ARM_FVP_BASE_VIRTIO_BLOCK_BASE 0x1c130000
@@ -55,95 +54,6 @@ VIRTIO_BLK_DEVICE_PATH mVirtioBlockDevicePath =
}
};
-STATIC
-EFI_STATUS
-InternalFindFdtByGuid (
- IN OUT EFI_DEVICE_PATH **FdtDevicePath,
- IN CONST EFI_GUID *FdtGuid
- )
-{
- MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FileDevicePath;
- EFI_HANDLE *HandleBuffer;
- UINTN HandleCount;
- UINTN Index;
- EFI_FIRMWARE_VOLUME2_PROTOCOL *FvProtocol;
- EFI_GUID NameGuid;
- UINTN Size;
- VOID *Key;
- EFI_FV_FILETYPE FileType;
- EFI_FV_FILE_ATTRIBUTES Attributes;
- EFI_DEVICE_PATH *FvDevicePath;
- EFI_STATUS Status;
-
- if (FdtGuid == NULL) {
- return EFI_NOT_FOUND;
- }
-
- EfiInitializeFwVolDevicepathNode (&FileDevicePath, FdtGuid);
-
- HandleBuffer = NULL;
- Status = gBS->LocateHandleBuffer (
- ByProtocol,
- &gEfiFirmwareVolume2ProtocolGuid,
- NULL,
- &HandleCount,
- &HandleBuffer
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- for (Index = 0; Index < HandleCount; Index++) {
- Status = gBS->HandleProtocol (
- HandleBuffer[Index],
- &gEfiFirmwareVolume2ProtocolGuid,
- (VOID **) &FvProtocol
- );
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- // Allocate Key
- Key = AllocatePool (FvProtocol->KeySize);
- ASSERT (Key != NULL);
- ZeroMem (Key, FvProtocol->KeySize);
-
- do {
- FileType = EFI_FV_FILETYPE_RAW;
- Status = FvProtocol->GetNextFile (FvProtocol, Key, &FileType, &NameGuid, &Attributes, &Size);
- if (Status == EFI_NOT_FOUND) {
- break;
- }
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- //
- // Check whether this file is the one we are looking for. If so,
- // create a device path for it and return it to the caller.
- //
- if (CompareGuid (&NameGuid, FdtGuid)) {
- Status = gBS->HandleProtocol (HandleBuffer[Index], &gEfiDevicePathProtocolGuid, (VOID **)&FvDevicePath);
- if (!EFI_ERROR (Status)) {
- *FdtDevicePath = AppendDevicePathNode (FvDevicePath,
- (EFI_DEVICE_PATH_PROTOCOL *)&FileDevicePath);
- }
- goto Done;
- }
- } while (TRUE);
- FreePool (Key);
- }
-
- if (Index == HandleCount) {
- Status = EFI_NOT_FOUND;
- }
- return Status;
-
-Done:
- FreePool (Key);
- return Status;
-}
-
/**
* Generic UEFI Entrypoint for 'ArmFvpDxe' driver
* See UEFI specification for the details of the parameters
@@ -155,12 +65,7 @@ ArmFvpInitialise (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
- CONST ARM_VEXPRESS_PLATFORM* Platform;
EFI_STATUS Status;
- CHAR16 *TextDevicePath;
- UINTN TextDevicePathSize;
- VOID *Buffer;
- EFI_DEVICE_PATH *FdtDevicePath;
Status = gBS->InstallProtocolInterface (&ImageHandle,
&gEfiDevicePathProtocolGuid, EFI_NATIVE_INTERFACE,
@@ -169,38 +74,6 @@ ArmFvpInitialise (
return Status;
}
- Status = ArmVExpressGetPlatform (&Platform);
- if (!EFI_ERROR (Status)) {
- FdtDevicePath = NULL;
- Status = InternalFindFdtByGuid (&FdtDevicePath, Platform->FdtGuid);
- if (!EFI_ERROR (Status)) {
- TextDevicePath = ConvertDevicePathToText (FdtDevicePath, FALSE, FALSE);
- if (TextDevicePath != NULL) {
- TextDevicePathSize = StrSize (TextDevicePath);
- }
- FreePool (FdtDevicePath);
- } else {
- TextDevicePathSize = StrSize ((CHAR16*)PcdGetPtr (PcdFvpFdtDevicePathsBase)) - sizeof (CHAR16);
- TextDevicePathSize += StrSize (Platform->FdtName);
-
- TextDevicePath = AllocatePool (TextDevicePathSize);
- if (TextDevicePath != NULL) {
- StrCpy (TextDevicePath, ((CHAR16*)PcdGetPtr (PcdFvpFdtDevicePathsBase)));
- StrCat (TextDevicePath, Platform->FdtName);
- }
- }
- if (TextDevicePath != NULL) {
- Buffer = PcdSetPtr (PcdFdtDevicePaths, &TextDevicePathSize, TextDevicePath);
- if (Buffer == NULL) {
- DEBUG ((
- EFI_D_ERROR,
- "ArmFvpDxe: Setting of FDT device path in PcdFdtDevicePaths failed - %r\n", EFI_BUFFER_TOO_SMALL
- ));
- }
- FreePool (TextDevicePath);
- }
- }
-
// Declare the Virtio BlockIo device
Status = VirtioMmioInstallDevice (ARM_FVP_BASE_VIRTIO_BLOCK_BASE, ImageHandle);
if (EFI_ERROR (Status)) {