mirror of https://github.com/acidanthera/audk.git
EmbeddedPkg: remove FdtPlatformDxe
With the last users migrated to a private version, we can now remove FdtPlatformDxe. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
parent
5604d269ab
commit
34b17101ef
|
@ -1,461 +0,0 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2015, ARM Ltd. All rights reserved.<BR>
|
||||
|
||||
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.
|
||||
|
||||
**/
|
||||
|
||||
#include "FdtPlatform.h"
|
||||
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
#include <Library/BdsLib.h>
|
||||
|
||||
#include <Protocol/DevicePath.h>
|
||||
|
||||
//
|
||||
// Internal variables
|
||||
//
|
||||
|
||||
STATIC CONST EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mShellDynCmdProtocolSetFdt = {
|
||||
L"setfdt", // Name of the command
|
||||
ShellDynCmdSetFdtHandler, // Handler
|
||||
ShellDynCmdSetFdtGetHelp // GetHelp
|
||||
};
|
||||
|
||||
STATIC CONST EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL mShellDynCmdProtocolDumpFdt = {
|
||||
L"dumpfdt", // Name of the command
|
||||
ShellDynCmdDumpFdtHandler, // Handler
|
||||
ShellDynCmdDumpFdtGetHelp // GetHelp
|
||||
};
|
||||
|
||||
STATIC CONST EFI_GUID mFdtPlatformDxeHiiGuid = {
|
||||
0x8afa7610, 0x62b1, 0x46aa,
|
||||
{0xb5, 0x34, 0xc3, 0xde, 0xff, 0x39, 0x77, 0x8c}
|
||||
};
|
||||
|
||||
EFI_HANDLE mFdtPlatformDxeHiiHandle;
|
||||
|
||||
/**
|
||||
Install the FDT specified by its device path in text form.
|
||||
|
||||
@param[in] TextDevicePath Device path of the FDT to install in text form
|
||||
|
||||
@retval EFI_SUCCESS The FDT was installed.
|
||||
@retval EFI_NOT_FOUND Failed to locate a protocol or a file.
|
||||
@retval EFI_INVALID_PARAMETER Invalid device path.
|
||||
@retval EFI_UNSUPPORTED Device path not supported.
|
||||
@retval EFI_OUT_OF_RESOURCES An allocation failed.
|
||||
**/
|
||||
STATIC
|
||||
EFI_STATUS
|
||||
InstallFdt (
|
||||
IN CONST CHAR16* TextDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL *EfiDevicePathFromTextProtocol;
|
||||
EFI_DEVICE_PATH *DevicePath;
|
||||
EFI_PHYSICAL_ADDRESS FdtBlobBase;
|
||||
UINTN FdtBlobSize;
|
||||
UINTN NumPages;
|
||||
EFI_PHYSICAL_ADDRESS FdtConfigurationTableBase;
|
||||
|
||||
Status = gBS->LocateProtocol (
|
||||
&gEfiDevicePathFromTextProtocolGuid,
|
||||
NULL,
|
||||
(VOID **)&EfiDevicePathFromTextProtocol
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_ERROR, "InstallFdt() - Failed to locate EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL protocol\n"));
|
||||
return Status;
|
||||
}
|
||||
|
||||
DevicePath = (EFI_DEVICE_PATH*)EfiDevicePathFromTextProtocol->ConvertTextToDevicePath (TextDevicePath);
|
||||
if (DevicePath == NULL) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
//
|
||||
// Load the FDT given its device path.
|
||||
// This operation may fail if the device path is not supported.
|
||||
//
|
||||
FdtBlobBase = 0;
|
||||
NumPages = 0;
|
||||
Status = BdsLoadImage (DevicePath, AllocateAnyPages, &FdtBlobBase, &FdtBlobSize);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto Error;
|
||||
}
|
||||
|
||||
//
|
||||
// Ensure that the FDT header is valid and that the Size of the Device Tree
|
||||
// is smaller than the size of the read file
|
||||
//
|
||||
if (fdt_check_header ((VOID*)(UINTN)FdtBlobBase) != 0 ||
|
||||
(UINTN)fdt_totalsize ((VOID*)(UINTN)FdtBlobBase) > FdtBlobSize) {
|
||||
DEBUG ((EFI_D_ERROR, "InstallFdt() - loaded FDT binary image seems corrupt\n"));
|
||||
Status = EFI_LOAD_ERROR;
|
||||
goto Error;
|
||||
}
|
||||
|
||||
//
|
||||
// Store the FDT as Runtime Service Data to prevent the Kernel from
|
||||
// overwritting its data.
|
||||
//
|
||||
NumPages = EFI_SIZE_TO_PAGES (FdtBlobSize);
|
||||
Status = gBS->AllocatePages (
|
||||
AllocateAnyPages, EfiRuntimeServicesData,
|
||||
NumPages, &FdtConfigurationTableBase
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto Error;
|
||||
}
|
||||
CopyMem (
|
||||
(VOID*)(UINTN)FdtConfigurationTableBase,
|
||||
(VOID*)(UINTN)FdtBlobBase,
|
||||
FdtBlobSize
|
||||
);
|
||||
|
||||
//
|
||||
// Install the FDT into the Configuration Table
|
||||
//
|
||||
Status = gBS->InstallConfigurationTable (
|
||||
&gFdtTableGuid,
|
||||
(VOID*)(UINTN)FdtConfigurationTableBase
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
gBS->FreePages (FdtConfigurationTableBase, NumPages);
|
||||
}
|
||||
|
||||
Error:
|
||||
if (FdtBlobBase != 0) {
|
||||
gBS->FreePages (FdtBlobBase, NumPages);
|
||||
}
|
||||
FreePool (DevicePath);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
/**
|
||||
Main entry point of the FDT platform driver.
|
||||
|
||||
@param[in] ImageHandle The firmware allocated handle for the present driver
|
||||
UEFI image.
|
||||
@param[in] *SystemTable A pointer to the EFI System table.
|
||||
|
||||
@retval EFI_SUCCESS The driver was initialized.
|
||||
@retval EFI_OUT_OF_RESOURCES The "End of DXE" event could not be allocated or
|
||||
there was not enough memory in pool to install
|
||||
the Shell Dynamic Command protocol.
|
||||
@retval EFI_LOAD_ERROR Unable to add the HII package.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
FdtPlatformEntryPoint (
|
||||
IN EFI_HANDLE ImageHandle,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_HANDLE Handle;
|
||||
|
||||
//
|
||||
// Install the Device Tree from its expected location
|
||||
//
|
||||
Status = RunFdtInstallation (NULL);
|
||||
|
||||
if (FeaturePcdGet (PcdOverridePlatformFdt) || FeaturePcdGet (PcdDumpFdtShellCommand)) {
|
||||
//
|
||||
// Register the strings for the user interface in the HII Database.
|
||||
// This shows the way to the multi-language support, even if
|
||||
// only the English language is actually supported. The strings to register
|
||||
// are stored in the "ShellSetFdtStrings[]" array. This array is
|
||||
// built by the building process from the "*.uni" file associated to
|
||||
// the present driver (cf. FdtPlatfromDxe.inf). Examine your Build
|
||||
// folder under your package's DEBUG folder and you will find the array
|
||||
// defined in a xxxStrDefs.h file.
|
||||
//
|
||||
mFdtPlatformDxeHiiHandle = HiiAddPackages (
|
||||
&mFdtPlatformDxeHiiGuid,
|
||||
ImageHandle,
|
||||
FdtPlatformDxeStrings,
|
||||
NULL
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// If the development features are enabled, install the dynamic shell
|
||||
// command "setfdt" to be able to define a device path for the FDT
|
||||
// that has precedence over the device paths defined by
|
||||
// "PcdFdtDevicePaths".
|
||||
//
|
||||
|
||||
if (FeaturePcdGet (PcdOverridePlatformFdt)) {
|
||||
if (mFdtPlatformDxeHiiHandle != NULL) {
|
||||
// We install dynamic EFI command on separate handles as we cannot register
|
||||
// more than one protocol of the same protocol interface on the same handle.
|
||||
Handle = NULL;
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&Handle,
|
||||
&gEfiShellDynamicCommandProtocolGuid,
|
||||
&mShellDynCmdProtocolSetFdt,
|
||||
NULL
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
HiiRemovePackages (mFdtPlatformDxeHiiHandle);
|
||||
}
|
||||
} else {
|
||||
Status = EFI_LOAD_ERROR;
|
||||
}
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((
|
||||
EFI_D_WARN,
|
||||
"Unable to install \"setfdt\" EFI Shell command - %r \n",
|
||||
Status
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
if (FeaturePcdGet (PcdDumpFdtShellCommand)) {
|
||||
if (mFdtPlatformDxeHiiHandle != NULL) {
|
||||
// We install dynamic EFI command on separate handles as we cannot register
|
||||
// more than one protocol of the same protocol interface on the same handle.
|
||||
Handle = NULL;
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&Handle,
|
||||
&gEfiShellDynamicCommandProtocolGuid,
|
||||
&mShellDynCmdProtocolDumpFdt,
|
||||
NULL
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
HiiRemovePackages (mFdtPlatformDxeHiiHandle);
|
||||
}
|
||||
} else {
|
||||
Status = EFI_LOAD_ERROR;
|
||||
}
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((
|
||||
EFI_D_WARN,
|
||||
"Unable to install \"dumpfdt\" EFI Shell command - %r \n",
|
||||
Status
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
/**
|
||||
Run the FDT installation process.
|
||||
|
||||
Loop in priority order over the device paths from which the FDT has
|
||||
been asked to be retrieved for. For each device path, try to install
|
||||
the FDT. Stop as soon as an installation succeeds.
|
||||
|
||||
@param[in] SuccessfullDevicePath If not NULL, address where to store the
|
||||
pointer to the text device path from
|
||||
which the FDT was successfully retrieved.
|
||||
Not used if the FDT installation failed.
|
||||
The returned address is the address of
|
||||
an allocated buffer that has to be
|
||||
freed by the caller.
|
||||
|
||||
@retval EFI_SUCCESS The FDT was installed.
|
||||
@retval EFI_NOT_FOUND Failed to locate a protocol or a file.
|
||||
@retval EFI_INVALID_PARAMETER Invalid device path.
|
||||
@retval EFI_UNSUPPORTED Device path not supported.
|
||||
@retval EFI_OUT_OF_RESOURCES An allocation failed.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
RunFdtInstallation (
|
||||
OUT CHAR16 **SuccessfullDevicePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINTN DataSize;
|
||||
CHAR16 *TextDevicePath;
|
||||
CHAR16 *TextDevicePathStart;
|
||||
CHAR16 *TextDevicePathSeparator;
|
||||
UINTN TextDevicePathLen;
|
||||
|
||||
TextDevicePath = NULL;
|
||||
//
|
||||
// For development purpose, if enabled through the "PcdOverridePlatformFdt"
|
||||
// feature PCD, try first to install the FDT specified by the device path in
|
||||
// text form stored in the "Fdt" UEFI variable.
|
||||
//
|
||||
if (FeaturePcdGet (PcdOverridePlatformFdt)) {
|
||||
DataSize = 0;
|
||||
Status = gRT->GetVariable (
|
||||
L"Fdt",
|
||||
&gFdtVariableGuid,
|
||||
NULL,
|
||||
&DataSize,
|
||||
NULL
|
||||
);
|
||||
|
||||
//
|
||||
// Keep going only if the "Fdt" variable is defined.
|
||||
//
|
||||
|
||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||
TextDevicePath = AllocatePool (DataSize);
|
||||
if (TextDevicePath == NULL) {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto Error;
|
||||
}
|
||||
|
||||
Status = gRT->GetVariable (
|
||||
L"Fdt",
|
||||
&gFdtVariableGuid,
|
||||
NULL,
|
||||
&DataSize,
|
||||
TextDevicePath
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
FreePool (TextDevicePath);
|
||||
goto Error;
|
||||
}
|
||||
|
||||
Status = InstallFdt (TextDevicePath);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
DEBUG ((
|
||||
EFI_D_WARN,
|
||||
"Installation of the FDT using the device path <%s> completed.\n",
|
||||
TextDevicePath
|
||||
));
|
||||
goto Done;
|
||||
}
|
||||
DEBUG ((
|
||||
EFI_D_ERROR,
|
||||
"Installation of the FDT specified by the \"Fdt\" UEFI variable failed - %r\n",
|
||||
Status
|
||||
));
|
||||
FreePool (TextDevicePath);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Loop over the device path list provided by "PcdFdtDevicePaths". The device
|
||||
// paths are in text form and separated by a semi-colon.
|
||||
//
|
||||
|
||||
Status = EFI_NOT_FOUND;
|
||||
for (TextDevicePathStart = (CHAR16*)PcdGetPtr (PcdFdtDevicePaths);
|
||||
*TextDevicePathStart != L'\0' ; ) {
|
||||
TextDevicePathSeparator = StrStr (TextDevicePathStart, L";");
|
||||
|
||||
//
|
||||
// Last device path of the list
|
||||
//
|
||||
if (TextDevicePathSeparator == NULL) {
|
||||
TextDevicePathLen = StrLen (TextDevicePathStart);
|
||||
} else {
|
||||
TextDevicePathLen = (UINTN)(TextDevicePathSeparator - TextDevicePathStart);
|
||||
}
|
||||
|
||||
TextDevicePath = AllocateCopyPool (
|
||||
(TextDevicePathLen + 1) * sizeof (CHAR16),
|
||||
TextDevicePathStart
|
||||
);
|
||||
if (TextDevicePath == NULL) {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto Error;
|
||||
}
|
||||
TextDevicePath[TextDevicePathLen] = L'\0';
|
||||
|
||||
Status = InstallFdt (TextDevicePath);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_WARN, "Installation of the FDT using the device path <%s> completed.\n",
|
||||
TextDevicePath
|
||||
));
|
||||
goto Done;
|
||||
}
|
||||
|
||||
DEBUG ((EFI_D_WARN, "Installation of the FDT using the device path <%s> failed - %r.\n",
|
||||
TextDevicePath, Status
|
||||
));
|
||||
FreePool (TextDevicePath);
|
||||
|
||||
if (TextDevicePathSeparator == NULL) {
|
||||
goto Error;
|
||||
}
|
||||
TextDevicePathStart = TextDevicePathSeparator + 1;
|
||||
}
|
||||
|
||||
Error:
|
||||
Done:
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
DEBUG ((EFI_D_ERROR, "Failed to install the FDT - %r.\n", Status));
|
||||
return Status;
|
||||
}
|
||||
|
||||
if (SuccessfullDevicePath != NULL) {
|
||||
*SuccessfullDevicePath = TextDevicePath;
|
||||
} else {
|
||||
FreePool (TextDevicePath);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
Transcode one of the EFI return code used by the model into an EFI Shell return code.
|
||||
|
||||
@param[in] Status EFI return code.
|
||||
|
||||
@return Transcoded EFI Shell return code.
|
||||
|
||||
**/
|
||||
SHELL_STATUS
|
||||
EfiCodeToShellCode (
|
||||
IN EFI_STATUS Status
|
||||
)
|
||||
{
|
||||
SHELL_STATUS ShellStatus;
|
||||
|
||||
switch (Status) {
|
||||
case EFI_SUCCESS :
|
||||
ShellStatus = SHELL_SUCCESS;
|
||||
break;
|
||||
|
||||
case EFI_INVALID_PARAMETER :
|
||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||
break;
|
||||
|
||||
case EFI_UNSUPPORTED :
|
||||
ShellStatus = SHELL_UNSUPPORTED;
|
||||
break;
|
||||
|
||||
case EFI_DEVICE_ERROR :
|
||||
ShellStatus = SHELL_DEVICE_ERROR;
|
||||
break;
|
||||
|
||||
case EFI_WRITE_PROTECTED :
|
||||
case EFI_SECURITY_VIOLATION :
|
||||
ShellStatus = SHELL_ACCESS_DENIED;
|
||||
break;
|
||||
|
||||
case EFI_OUT_OF_RESOURCES :
|
||||
ShellStatus = SHELL_OUT_OF_RESOURCES;
|
||||
break;
|
||||
|
||||
case EFI_NOT_FOUND :
|
||||
ShellStatus = SHELL_NOT_FOUND;
|
||||
break;
|
||||
|
||||
default :
|
||||
ShellStatus = SHELL_ABORTED;
|
||||
}
|
||||
|
||||
return ShellStatus;
|
||||
}
|
|
@ -1,174 +0,0 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2015, ARM Ltd. All rights reserved.<BR>
|
||||
|
||||
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_PLATFORM_DXE_H__
|
||||
#define __FDT_PLATFORM_DXE_H__
|
||||
|
||||
#include <Uefi.h>
|
||||
|
||||
#include <Protocol/DevicePathToText.h>
|
||||
#include <Protocol/DevicePathFromText.h>
|
||||
#include <Protocol/Shell.h>
|
||||
#include <Protocol/ShellDynamicCommand.h>
|
||||
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/HiiLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/ShellLib.h>
|
||||
#include <Library/UefiRuntimeServicesTableLib.h>
|
||||
|
||||
#include <Guid/Fdt.h>
|
||||
|
||||
#include <libfdt.h>
|
||||
|
||||
extern EFI_HANDLE mFdtPlatformDxeHiiHandle;
|
||||
|
||||
/**
|
||||
Transcode one of the EFI return code used by the model into an EFI Shell return code.
|
||||
|
||||
@param[in] Status EFI return code.
|
||||
|
||||
@return Transcoded EFI Shell return code.
|
||||
|
||||
**/
|
||||
SHELL_STATUS
|
||||
EfiCodeToShellCode (
|
||||
IN EFI_STATUS Status
|
||||
);
|
||||
|
||||
/**
|
||||
Run the FDT installation process.
|
||||
|
||||
Loop in priority order over the device paths from which the FDT has
|
||||
been asked to be retrieved for. For each device path, try to install
|
||||
the FDT. Stop as soon as an installation succeeds.
|
||||
|
||||
@param[in] SuccessfullDevicePath If not NULL, address where to store the
|
||||
pointer to the text device path from
|
||||
which the FDT was successfully retrieved.
|
||||
Not used if the FDT installation failed.
|
||||
The returned address is the address of
|
||||
an allocated buffer that has to be
|
||||
freed by the caller.
|
||||
|
||||
@retval EFI_SUCCESS The FDT was installed.
|
||||
@retval EFI_NOT_FOUND Failed to locate a protocol or a file.
|
||||
@retval EFI_INVALID_PARAMETER Invalid device path.
|
||||
@retval EFI_UNSUPPORTED Device path not supported.
|
||||
@retval EFI_OUT_OF_RESOURCES An allocation failed.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
RunFdtInstallation (
|
||||
OUT CHAR16 **SuccessfullDevicePath
|
||||
);
|
||||
|
||||
/**
|
||||
This is the shell command "setfdt" handler function. This function handles
|
||||
the command when it is invoked in the shell.
|
||||
|
||||
@param[in] This The instance of the
|
||||
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.
|
||||
@param[in] SystemTable The pointer to the UEFI system table.
|
||||
@param[in] ShellParameters The parameters associated with the command.
|
||||
@param[in] Shell The instance of the shell protocol used in the
|
||||
context of processing this command.
|
||||
|
||||
@return SHELL_SUCCESS The operation was successful.
|
||||
@return SHELL_ABORTED Operation aborted due to internal error.
|
||||
@return SHELL_INVALID_PARAMETER The parameters of the command are not valid.
|
||||
@return SHELL_INVALID_PARAMETER The EFI Shell file path is not valid.
|
||||
@return SHELL_NOT_FOUND Failed to locate a protocol or a file.
|
||||
@return SHELL_UNSUPPORTED Device path not supported.
|
||||
@return SHELL_OUT_OF_RESOURCES A memory allocation failed.
|
||||
@return SHELL_DEVICE_ERROR The "Fdt" variable could not be saved due to a hardware failure.
|
||||
@return SHELL_ACCESS_DENIED The "Fdt" variable is read-only.
|
||||
@return SHELL_ACCESS_DENIED The "Fdt" variable cannot be deleted.
|
||||
@return SHELL_ACCESS_DENIED The "Fdt" variable could not be written due to security violation.
|
||||
|
||||
**/
|
||||
SHELL_STATUS
|
||||
EFIAPI
|
||||
ShellDynCmdSetFdtHandler (
|
||||
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable,
|
||||
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
|
||||
IN EFI_SHELL_PROTOCOL *Shell
|
||||
);
|
||||
|
||||
/**
|
||||
This is the shell command "setfdt" help handler function. This
|
||||
function returns the formatted help for the "setfdt" command.
|
||||
The format matchs that in Appendix B of the revision 2.1 of the
|
||||
UEFI Shell Specification.
|
||||
|
||||
@param[in] This The instance of the EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.
|
||||
@param[in] Language The pointer to the language string to use.
|
||||
|
||||
@return CHAR16* Pool allocated help string, must be freed by caller.
|
||||
**/
|
||||
CHAR16*
|
||||
EFIAPI
|
||||
ShellDynCmdSetFdtGetHelp (
|
||||
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
|
||||
IN CONST CHAR8 *Language
|
||||
);
|
||||
|
||||
/**
|
||||
This is the shell command "dumpfdt" handler function. This function handles
|
||||
the command when it is invoked in the shell.
|
||||
|
||||
@param[in] This The instance of the
|
||||
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.
|
||||
@param[in] SystemTable The pointer to the UEFI system table.
|
||||
@param[in] ShellParameters The parameters associated with the command.
|
||||
@param[in] Shell The instance of the shell protocol used in the
|
||||
context of processing this command.
|
||||
|
||||
@return SHELL_SUCCESS The operation was successful.
|
||||
@return SHELL_ABORTED Operation aborted due to internal error.
|
||||
@return SHELL_NOT_FOUND Failed to locate the Device Tree into the EFI Configuration Table
|
||||
@return SHELL_OUT_OF_RESOURCES A memory allocation failed.
|
||||
|
||||
**/
|
||||
SHELL_STATUS
|
||||
EFIAPI
|
||||
ShellDynCmdDumpFdtHandler (
|
||||
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable,
|
||||
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
|
||||
IN EFI_SHELL_PROTOCOL *Shell
|
||||
);
|
||||
|
||||
/**
|
||||
This is the shell command "dumpfdt" help handler function. This
|
||||
function returns the formatted help for the "dumpfdt" command.
|
||||
The format matchs that in Appendix B of the revision 2.1 of the
|
||||
UEFI Shell Specification.
|
||||
|
||||
@param[in] This The instance of the EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.
|
||||
@param[in] Language The pointer to the language string to use.
|
||||
|
||||
@return CHAR16* Pool allocated help string, must be freed by caller.
|
||||
**/
|
||||
CHAR16*
|
||||
EFIAPI
|
||||
ShellDynCmdDumpFdtGetHelp (
|
||||
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
|
||||
IN CONST CHAR8 *Language
|
||||
);
|
||||
|
||||
#endif /* __FDT_PLATFORM_DXE_H__ */
|
|
@ -1,64 +0,0 @@
|
|||
#/** @file
|
||||
#
|
||||
# Copyright (c) 2015, ARM Ltd. All rights reserved.<BR>
|
||||
#
|
||||
# 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 = 0x00010006
|
||||
BASE_NAME = FdtPlatformDxe
|
||||
MODULE_UNI_FILE = FdtPlatformDxe.uni
|
||||
FILE_GUID = 6e9a4c69-57c6-4fcd-b083-4f2c3bdb6051
|
||||
MODULE_TYPE = UEFI_DRIVER
|
||||
VERSION_STRING = 0.1
|
||||
ENTRY_POINT = FdtPlatformEntryPoint
|
||||
|
||||
[Sources.common]
|
||||
FdtPlatform.c
|
||||
FdtPlatformDxe.uni
|
||||
ShellDumpFdt.c
|
||||
ShellSetFdt.c
|
||||
|
||||
[Packages]
|
||||
EmbeddedPkg/EmbeddedPkg.dec
|
||||
ArmPkg/ArmPkg.dec
|
||||
MdePkg/MdePkg.dec
|
||||
MdeModulePkg/MdeModulePkg.dec
|
||||
ShellPkg/ShellPkg.dec
|
||||
|
||||
[LibraryClasses]
|
||||
UefiDriverEntryPoint
|
||||
BdsLib
|
||||
DxeServicesTableLib
|
||||
BaseMemoryLib
|
||||
DebugLib
|
||||
FdtLib
|
||||
UefiBootServicesTableLib
|
||||
UefiRuntimeServicesTableLib
|
||||
HiiLib
|
||||
ShellLib
|
||||
|
||||
[Protocols]
|
||||
gEfiDevicePathToTextProtocolGuid
|
||||
gEfiDevicePathFromTextProtocolGuid
|
||||
gEfiShellDynamicCommandProtocolGuid
|
||||
|
||||
[Guids]
|
||||
gEfiEndOfDxeEventGroupGuid
|
||||
gFdtTableGuid
|
||||
gFdtVariableGuid
|
||||
|
||||
[FeaturePcd]
|
||||
gEmbeddedTokenSpaceGuid.PcdOverridePlatformFdt
|
||||
gEmbeddedTokenSpaceGuid.PcdDumpFdtShellCommand
|
||||
|
||||
[Pcd]
|
||||
gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths
|
|
@ -1,109 +0,0 @@
|
|||
// *++
|
||||
//
|
||||
// Copyright (c) 2014, ARM Ltd. All rights reserved.<BR>
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//
|
||||
// Module Name:
|
||||
//
|
||||
// FdtPlatformDxe
|
||||
//
|
||||
// Abstract:
|
||||
//
|
||||
// String definitions for the EFI Shell 'setfdt' command
|
||||
//
|
||||
// Revision History:
|
||||
//
|
||||
// --*/
|
||||
|
||||
/=#
|
||||
|
||||
#langdef en-US "English"
|
||||
|
||||
#string STR_SETFDT_INSTALLING #language en-US "Installing the FDT ...\r\n"
|
||||
#string STR_SETFDT_INSTALL_SUCCEEDED #language en-US "Installation of\r\n'%s'\r\ncompleted.\r\n"
|
||||
|
||||
#string STR_SETFDT_UPDATING #language en-US "Updating the FDT device path ...\r\n"
|
||||
#string STR_SETFDT_UPDATE_SUCCEEDED #language en-US "Update of the FDT device path '%s' completed.\r\n"
|
||||
#string STR_SETFDT_UPDATE_DELETED #language en-US "The UEFI variable "Fdt" was deleted.\r\n"
|
||||
|
||||
#string STR_SETFDT_INVALID_DEVICE_PATH #language en-US "Invalid device path.\r\n"
|
||||
#string STR_SETFDT_INVALID_PATH #language en-US "The EFI Shell or device file path '%s' is invalid.\r\n"
|
||||
#string STR_SETFDT_ERROR #language en-US "Error - %r.\r\n"
|
||||
#string STR_SETFDT_DEVICE_PATH_LIST #language en-US "FDT device paths :\r\n"
|
||||
#string STR_SETFDT_DEVICE_PATH #language en-US "'%s'\r\n"
|
||||
|
||||
#string STR_GET_HELP_SETFDT #language en-US ""
|
||||
".TH setfdt 0 "Define and/or install a new Flat Device Tree (FDT) for the platform."\r\n"
|
||||
".SH NAME\r\n"
|
||||
"Define and/or re-install a Flat Device Tree (FDT)\r\n"
|
||||
".SH SYNOPSIS\r\n"
|
||||
"setfdt [-i] [fdt_path]\r\n"
|
||||
".SH OPTIONS\r\n"
|
||||
"-i run the FDT installation process\r\n"
|
||||
"file_path EFI Shell file path or device path to a FDT\r\n"
|
||||
"\r\n"
|
||||
".SH DESCRIPTION\r\n"
|
||||
"NOTES:\r\n"
|
||||
"1. If a valid EFI Shell file path is passed to the command, then the\r\n"
|
||||
" command translates the EFI Shell file path into a device path in the\r\n"
|
||||
" text form and saves it in the non volatile UEFI variable "Fdt". If\r\n"
|
||||
" the path to the FDT is a device path in the text form, it is saved as\r\n"
|
||||
" it is in the non volatile UEFI variable "Fdt". The next time the FDT\r\n"
|
||||
" installation process is run, it will first try to install the FDT from\r\n"
|
||||
" the device path specified by the UEFI variable "Fdt".\r\n"
|
||||
" \r\n
|
||||
"2. If the option -i is passed to the command, then the FDT installation\r\n"
|
||||
" process is run. If a path to the FDT is passed to the command as well,\r\n"
|
||||
" the update of the "Fdt" UEFI variable is done first before to launch\r\n"
|
||||
" the FDT installation process.\r\n"
|
||||
" \r\n
|
||||
".SH RETURNVALUES\r\n"
|
||||
"SHELL_SUCCESS Operation(s) completed.\r\n"
|
||||
"SHELL_ABORTED Operation aborted.\r\n"
|
||||
"SHELL_INVALID_PARAMETER Invalid argument(s).\r\n"
|
||||
"SHELL_NOT_FOUND Failed to locate a protocol or a file.\r\n"
|
||||
"SHELL_UNSUPPORTED Device path not supported.\r\n"
|
||||
"SHELL_OUT_OF_RESOURCES A memory allocation failed.\r\n"
|
||||
"SHELL_DEVICE ERROR Hardware failure.\r\n"
|
||||
"SHELL_ACCESS_DENIED Access to the Fdt UEFI variable for modification denied.\r\n"
|
||||
".SH EXAMPLES\r\n"
|
||||
"EXAMPLES:\r\n"
|
||||
"1. Relaunch the FDT installation process :\r\n"
|
||||
" Shell> setfdt -i\r\n"
|
||||
" \r\n"
|
||||
"2. Set the EFI Shell file path 'fs0:\>fdt.dtb' to be the default path\r\n"
|
||||
" to the FDT :\r\n"
|
||||
" Shell> setfdt fs0:fdt.dtb\r\n"
|
||||
" \r\n"
|
||||
"3. Set a TFTP device path to be the default path to the FDT :\r\n"
|
||||
" Shell> setfdt MAC(0002f700570b,0x1)/IPv4(192.168.1.1)/fdt.dtb\r\n"
|
||||
" where . 00:02:f7:00:57:0b is the MAC address of the network\r\n"
|
||||
" interface card to be used. The 'ifconfig -l' EFI Shell\r\n"
|
||||
" command allows to get the MAC address of the network\r\n"
|
||||
" interface cards.\r\n"
|
||||
" . 192.168.1.1 is the address of the TFTP server.\r\n"
|
||||
" . fdt.dtb is the file path to the FDT file on the server.\r\n"
|
||||
"4. Display the FDT device paths from the highest to the lowest\r\n"
|
||||
" priority :\r\n"
|
||||
" Shell> setfdt\r\n"
|
||||
"5. Delete the "Fdt" UEFI variable :\r\n"
|
||||
" Shell> setfdt ""\r\n"
|
||||
"\r\n"
|
||||
|
||||
#string STR_GET_HELP_DUMPFDT #language en-US ""
|
||||
".TH dumpfdt 0 "Dump installed Flat Device Tree (FDT) of the platform."\r\n"
|
||||
".SH NAME\r\n"
|
||||
"Dump current Flat Device Tree (FDT)\r\n"
|
||||
".SH SYNOPSIS\r\n"
|
||||
"dumpfdt\r\n"
|
||||
"\r\n"
|
||||
".SH DESCRIPTION\r\n"
|
||||
"\r\n"
|
|
@ -1,72 +0,0 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2015, ARM Ltd. All rights reserved.<BR>
|
||||
|
||||
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.
|
||||
|
||||
**/
|
||||
|
||||
The purpose of the FdtPlatformDxe UEFI driver is to install the Flat Device
|
||||
Tree (FDT) of the platform the UEFI frimware is running on into the UEFI
|
||||
Configuration Table. The FDT is identified within the UEFI Configuration
|
||||
Table by the "gFdtTableGuid" GUID defined in "EmbeddedPkg.dec".
|
||||
|
||||
Once installed, an UEFI application or OS boot loader can get from the UEFI
|
||||
Configuration Table the FDT of the platform from the "gFdtTableGuid" GUID.
|
||||
|
||||
The installation is done after each boot at the end of the DXE phase,
|
||||
just before the BDS phase. It is done at the end of the DXE phase to be sure
|
||||
that all drivers have been dispatched. That way, all UEFI protocols that may
|
||||
be needed to retrieve the FDT can be made available. It is done before the BDS
|
||||
phase to be able to provide the FDT during that phase.
|
||||
|
||||
The present driver tries to retrieve the FDT from the device paths defined in the
|
||||
"gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths" PCD. The "PcdFdtDevicePaths" PCD
|
||||
contains a list a device paths. The device paths are in the text form and
|
||||
separated by semi-colons. The present driver tries the device paths in the order
|
||||
it finds them in the "PcdFdtDevicePaths" PCD as long as he did not install
|
||||
succesfully a FDT.
|
||||
|
||||
The "PcdFdtDevicePaths" PCD is a dynamic PCD that can be modified during the
|
||||
DXE phase. This allows for exemple to select the right FDT when a binary is
|
||||
intended to run on several platforms and/or variants of a platform.
|
||||
|
||||
If the driver manages to download a FDT from one of the device paths mentioned
|
||||
above then it installs it in the UEFI Configuration table and the run over the
|
||||
device paths is stopped.
|
||||
|
||||
For development purposes only, if the feature PCD "gEmbeddedTokenSpaceGuid.
|
||||
PcdOverridePlatformFdt" is equal to TRUE, then before to try to install the
|
||||
FDT from the device paths listed in the "PcdFdtDevicePaths" PCD, the present
|
||||
driver tries to install it using the device path defined by the UEFI variable
|
||||
"Fdt". If the variable does not exist or the installation using the device path
|
||||
defined by the UEFI variable fails then the installation proceeds as described
|
||||
above.
|
||||
|
||||
Furthermore and again for development purposes only, if the feature PCD
|
||||
"PcdOverridePlatformFdt" is equal to TRUE, the current driver provides the EFI
|
||||
Shell command "setfdt" to define the location of the FDT by the mean of an EFI
|
||||
Shell file path (like "fs2:\boot\fdt.dtb") or a device path.
|
||||
|
||||
If the path passed in to the command is a valid EFI Shell file path, the
|
||||
command translates it into the corresponding device path and stores that
|
||||
device path in the "Fdt" UEFI variable asking for the variable to be non
|
||||
volatile.
|
||||
|
||||
If the path passed in to the command is not recognised as a valid EFI
|
||||
Shell device path, the command handles it as device path and stored
|
||||
in the "Fdt" UEFI variable as it is.
|
||||
|
||||
Finally, the "-i" option of the "setfdt" command allows to trigger the FDT
|
||||
installation process. The installation process is completed when the command
|
||||
returns. The command can be invoked with the "-i" option only and in that
|
||||
case the "Fdt" UEFI variable is not updated and the command just runs the
|
||||
FDT installation process. If the command is invoked with the "-i" option and
|
||||
an EFI Shell file path then first the "Fdt" UEFI variable is updated accordingly
|
||||
and then the FDT installation process is run.
|
|
@ -1,279 +0,0 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2015, ARM Ltd. All rights reserved.<BR>
|
||||
|
||||
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.
|
||||
|
||||
**/
|
||||
|
||||
#include "FdtPlatform.h"
|
||||
|
||||
#define ALIGN(x, a) (((x) + ((a) - 1)) & ~((a) - 1))
|
||||
#define PALIGN(p, a) ((void *)(ALIGN ((unsigned long)(p), (a))))
|
||||
#define GET_CELL(p) (p += 4, *((const uint32_t *)(p-4)))
|
||||
|
||||
STATIC
|
||||
UINTN
|
||||
IsPrintableString (
|
||||
IN CONST VOID* data,
|
||||
IN UINTN len
|
||||
)
|
||||
{
|
||||
CONST CHAR8 *s = data;
|
||||
CONST CHAR8 *ss;
|
||||
|
||||
// Zero length is not
|
||||
if (len == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Must terminate with zero
|
||||
if (s[len - 1] != '\0') {
|
||||
return 0;
|
||||
}
|
||||
|
||||
ss = s;
|
||||
while (*s/* && isprint (*s)*/) {
|
||||
s++;
|
||||
}
|
||||
|
||||
// Not zero, or not done yet
|
||||
if (*s != '\0' || (s + 1 - ss) < len) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
STATIC
|
||||
VOID
|
||||
PrintData (
|
||||
IN CONST CHAR8* data,
|
||||
IN UINTN len
|
||||
)
|
||||
{
|
||||
UINTN i;
|
||||
CONST CHAR8 *p = data;
|
||||
|
||||
// No data, don't print
|
||||
if (len == 0)
|
||||
return;
|
||||
|
||||
if (IsPrintableString (data, len)) {
|
||||
Print (L" = \"%a\"", (const char *)data);
|
||||
} else if ((len % 4) == 0) {
|
||||
Print (L" = <");
|
||||
for (i = 0; i < len; i += 4) {
|
||||
Print (L"0x%08x%a", fdt32_to_cpu (GET_CELL (p)), i < (len - 4) ? " " : "");
|
||||
}
|
||||
Print (L">");
|
||||
} else {
|
||||
Print (L" = [");
|
||||
for (i = 0; i < len; i++)
|
||||
Print (L"%02x%a", *p++, i < len - 1 ? " " : "");
|
||||
Print (L"]");
|
||||
}
|
||||
}
|
||||
|
||||
STATIC
|
||||
VOID
|
||||
DumpFdt (
|
||||
IN VOID* FdtBlob
|
||||
)
|
||||
{
|
||||
struct fdt_header *bph;
|
||||
UINT32 off_dt;
|
||||
UINT32 off_str;
|
||||
CONST CHAR8* p_struct;
|
||||
CONST CHAR8* p_strings;
|
||||
CONST CHAR8* p;
|
||||
CONST CHAR8* s;
|
||||
CONST CHAR8* t;
|
||||
UINT32 tag;
|
||||
UINTN sz;
|
||||
UINTN depth;
|
||||
UINTN shift;
|
||||
UINT32 version;
|
||||
|
||||
{
|
||||
// Can 'memreserve' be printed by below code?
|
||||
INTN num = fdt_num_mem_rsv (FdtBlob);
|
||||
INTN i, err;
|
||||
UINT64 addr = 0, size = 0;
|
||||
|
||||
for (i = 0; i < num; i++) {
|
||||
err = fdt_get_mem_rsv (FdtBlob, i, &addr, &size);
|
||||
if (err) {
|
||||
DEBUG ((EFI_D_ERROR, "Error (%d) : Cannot get memreserve section (%d)\n", err, i));
|
||||
}
|
||||
else {
|
||||
Print (L"/memreserve/ \t0x%lx \t0x%lx;\n", addr, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
depth = 0;
|
||||
shift = 4;
|
||||
|
||||
bph = FdtBlob;
|
||||
off_dt = fdt32_to_cpu (bph->off_dt_struct);
|
||||
off_str = fdt32_to_cpu (bph->off_dt_strings);
|
||||
p_struct = (CONST CHAR8*)FdtBlob + off_dt;
|
||||
p_strings = (CONST CHAR8*)FdtBlob + off_str;
|
||||
version = fdt32_to_cpu (bph->version);
|
||||
|
||||
p = p_struct;
|
||||
while ((tag = fdt32_to_cpu (GET_CELL (p))) != FDT_END) {
|
||||
if (tag == FDT_BEGIN_NODE) {
|
||||
s = p;
|
||||
p = PALIGN (p + AsciiStrLen (s) + 1, 4);
|
||||
|
||||
if (*s == '\0')
|
||||
s = "/";
|
||||
|
||||
Print (L"%*s%a {\n", depth * shift, L" ", s);
|
||||
|
||||
depth++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (tag == FDT_END_NODE) {
|
||||
depth--;
|
||||
|
||||
Print (L"%*s};\n", depth * shift, L" ");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (tag == FDT_NOP) {
|
||||
Print (L"%*s// [NOP]\n", depth * shift, L" ");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (tag != FDT_PROP) {
|
||||
Print (L"%*s ** Unknown tag 0x%08x\n", depth * shift, L" ", tag);
|
||||
break;
|
||||
}
|
||||
sz = fdt32_to_cpu (GET_CELL (p));
|
||||
s = p_strings + fdt32_to_cpu (GET_CELL (p));
|
||||
if (version < 16 && sz >= 8)
|
||||
p = PALIGN (p, 8);
|
||||
t = p;
|
||||
|
||||
p = PALIGN (p + sz, 4);
|
||||
|
||||
Print (L"%*s%a", depth * shift, L" ", s);
|
||||
PrintData (t, sz);
|
||||
Print (L";\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
This is the shell command "dumpfdt" handler function. This function handles
|
||||
the command when it is invoked in the shell.
|
||||
|
||||
@param[in] This The instance of the
|
||||
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.
|
||||
@param[in] SystemTable The pointer to the UEFI system table.
|
||||
@param[in] ShellParameters The parameters associated with the command.
|
||||
@param[in] Shell The instance of the shell protocol used in the
|
||||
context of processing this command.
|
||||
|
||||
@return SHELL_SUCCESS The operation was successful.
|
||||
@return SHELL_ABORTED Operation aborted due to internal error.
|
||||
@return SHELL_NOT_FOUND Failed to locate the Device Tree into the EFI Configuration Table
|
||||
@return SHELL_OUT_OF_RESOURCES A memory allocation failed.
|
||||
|
||||
**/
|
||||
SHELL_STATUS
|
||||
EFIAPI
|
||||
ShellDynCmdDumpFdtHandler (
|
||||
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable,
|
||||
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
|
||||
IN EFI_SHELL_PROTOCOL *Shell
|
||||
)
|
||||
{
|
||||
SHELL_STATUS ShellStatus;
|
||||
EFI_STATUS Status;
|
||||
VOID *FdtBlob;
|
||||
|
||||
ShellStatus = SHELL_SUCCESS;
|
||||
|
||||
//
|
||||
// Install the Shell and Shell Parameters Protocols on the driver
|
||||
// image. This is necessary for the initialisation of the Shell
|
||||
// Library to succeed in the next step.
|
||||
//
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&gImageHandle,
|
||||
&gEfiShellProtocolGuid, Shell,
|
||||
&gEfiShellParametersProtocolGuid, ShellParameters,
|
||||
NULL
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return SHELL_ABORTED;
|
||||
}
|
||||
|
||||
//
|
||||
// Initialise the Shell Library as we are going to use it.
|
||||
// Assert that the return code is EFI_SUCCESS as it should.
|
||||
// To anticipate any change is the codes returned by
|
||||
// ShellInitialize(), leave in case of error.
|
||||
//
|
||||
Status = ShellInitialize ();
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
return SHELL_ABORTED;
|
||||
}
|
||||
|
||||
Status = EfiGetSystemConfigurationTable (&gFdtTableGuid, &FdtBlob);
|
||||
if (EFI_ERROR (Status)) {
|
||||
Print (L"ERROR: Did not find the Fdt Blob.\n");
|
||||
return EfiCodeToShellCode (Status);
|
||||
}
|
||||
|
||||
DumpFdt (FdtBlob);
|
||||
|
||||
gBS->UninstallMultipleProtocolInterfaces (
|
||||
gImageHandle,
|
||||
&gEfiShellProtocolGuid, Shell,
|
||||
&gEfiShellParametersProtocolGuid, ShellParameters,
|
||||
NULL
|
||||
);
|
||||
|
||||
return ShellStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
This is the shell command "dumpfdt" help handler function. This
|
||||
function returns the formatted help for the "dumpfdt" command.
|
||||
The format matchs that in Appendix B of the revision 2.1 of the
|
||||
UEFI Shell Specification.
|
||||
|
||||
@param[in] This The instance of the EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.
|
||||
@param[in] Language The pointer to the language string to use.
|
||||
|
||||
@return CHAR16* Pool allocated help string, must be freed by caller.
|
||||
**/
|
||||
CHAR16*
|
||||
EFIAPI
|
||||
ShellDynCmdDumpFdtGetHelp (
|
||||
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
|
||||
IN CONST CHAR8 *Language
|
||||
)
|
||||
{
|
||||
//
|
||||
// This allocates memory. The caller has to free the allocated memory.
|
||||
//
|
||||
return HiiGetString (
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
STRING_TOKEN (STR_GET_HELP_DUMPFDT),
|
||||
Language
|
||||
);
|
||||
}
|
|
@ -1,468 +0,0 @@
|
|||
/** @file
|
||||
|
||||
Copyright (c) 2015, ARM Ltd. All rights reserved.<BR>
|
||||
|
||||
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.
|
||||
|
||||
**/
|
||||
|
||||
#include "FdtPlatform.h"
|
||||
|
||||
STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
|
||||
{L"-i", TypeFlag },
|
||||
{NULL , TypeMax }
|
||||
};
|
||||
|
||||
/**
|
||||
Display FDT device paths.
|
||||
|
||||
Display in text form the device paths used to install the FDT from the
|
||||
highest to the lowest priority.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
VOID
|
||||
DisplayFdtDevicePaths (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
UINTN DataSize;
|
||||
CHAR16 *TextDevicePath;
|
||||
CHAR16 *TextDevicePaths;
|
||||
CHAR16 *TextDevicePathSeparator;
|
||||
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_DEVICE_PATH_LIST),
|
||||
mFdtPlatformDxeHiiHandle
|
||||
);
|
||||
|
||||
if (FeaturePcdGet (PcdOverridePlatformFdt)) {
|
||||
DataSize = 0;
|
||||
Status = gRT->GetVariable (
|
||||
L"Fdt",
|
||||
&gFdtVariableGuid,
|
||||
NULL,
|
||||
&DataSize,
|
||||
NULL
|
||||
);
|
||||
|
||||
//
|
||||
// Keep going only if the "Fdt" variable is defined.
|
||||
//
|
||||
|
||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||
TextDevicePath = AllocatePool (DataSize);
|
||||
if (TextDevicePath == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
Status = gRT->GetVariable (
|
||||
L"Fdt",
|
||||
&gFdtVariableGuid,
|
||||
NULL,
|
||||
&DataSize,
|
||||
TextDevicePath
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_DEVICE_PATH),
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
TextDevicePath
|
||||
);
|
||||
}
|
||||
|
||||
FreePool (TextDevicePath);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Loop over the device path list provided by "PcdFdtDevicePaths". The device
|
||||
// paths are in text form and separated by a semi-colon.
|
||||
//
|
||||
|
||||
TextDevicePaths = AllocateCopyPool (
|
||||
StrSize ((CHAR16*)PcdGetPtr (PcdFdtDevicePaths)),
|
||||
(CHAR16*)PcdGetPtr (PcdFdtDevicePaths)
|
||||
);
|
||||
if (TextDevicePaths == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (TextDevicePath = TextDevicePaths;
|
||||
*TextDevicePath != L'\0' ; ) {
|
||||
TextDevicePathSeparator = StrStr (TextDevicePath, L";");
|
||||
|
||||
if (TextDevicePathSeparator != NULL) {
|
||||
*TextDevicePathSeparator = L'\0';
|
||||
}
|
||||
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_DEVICE_PATH),
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
TextDevicePath
|
||||
);
|
||||
|
||||
if (TextDevicePathSeparator == NULL) {
|
||||
break;
|
||||
}
|
||||
TextDevicePath = TextDevicePathSeparator + 1;
|
||||
}
|
||||
|
||||
FreePool (TextDevicePaths);
|
||||
}
|
||||
|
||||
/**
|
||||
Update the text device path stored in the "Fdt" UEFI variable given
|
||||
an EFI Shell file path or a text device path.
|
||||
|
||||
This function is a subroutine of the ShellDynCmdSetFdtHandler() function
|
||||
to make its code easier to read.
|
||||
|
||||
@param[in] Shell The instance of the shell protocol used in the
|
||||
context of processing the "setfdt" command.
|
||||
@param[in] FilePath EFI Shell path or the device path to the FDT file.
|
||||
|
||||
@return SHELL_SUCCESS The text device path was succesfully updated.
|
||||
@return SHELL_INVALID_PARAMETER The Shell file path is not valid.
|
||||
@return SHELL_OUT_OF_RESOURCES A memory allocation failed.
|
||||
@return SHELL_DEVICE_ERROR The "Fdt" variable could not be saved due to a hardware failure.
|
||||
@return SHELL_ACCESS_DENIED The "Fdt" variable is read-only.
|
||||
@return SHELL_ACCESS_DENIED The "Fdt" variable cannot be deleted.
|
||||
@return SHELL_ACCESS_DENIED The "Fdt" variable could not be written due to security violation.
|
||||
@return SHELL_NOT_FOUND Device path to text protocol not found.
|
||||
@return SHELL_ABORTED Operation aborted.
|
||||
|
||||
**/
|
||||
STATIC
|
||||
SHELL_STATUS
|
||||
UpdateFdtTextDevicePath (
|
||||
IN EFI_SHELL_PROTOCOL *Shell,
|
||||
IN CONST CHAR16 *FilePath
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_DEVICE_PATH *DevicePath;
|
||||
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *EfiDevicePathToTextProtocol;
|
||||
CHAR16 *TextDevicePath;
|
||||
CHAR16 *FdtVariableValue;
|
||||
EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL *EfiDevicePathFromTextProtocol;
|
||||
SHELL_STATUS ShellStatus;
|
||||
|
||||
ASSERT (FilePath != NULL);
|
||||
DevicePath = NULL;
|
||||
TextDevicePath = NULL;
|
||||
FdtVariableValue = NULL;
|
||||
|
||||
if (*FilePath != L'\0') {
|
||||
DevicePath = Shell->GetDevicePathFromFilePath (FilePath);
|
||||
if (DevicePath != NULL) {
|
||||
Status = gBS->LocateProtocol (
|
||||
&gEfiDevicePathToTextProtocolGuid,
|
||||
NULL,
|
||||
(VOID **)&EfiDevicePathToTextProtocol
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto Error;
|
||||
}
|
||||
|
||||
TextDevicePath = EfiDevicePathToTextProtocol->ConvertDevicePathToText (
|
||||
DevicePath,
|
||||
FALSE,
|
||||
FALSE
|
||||
);
|
||||
if (TextDevicePath == NULL) {
|
||||
Status = EFI_OUT_OF_RESOURCES;
|
||||
goto Error;
|
||||
}
|
||||
FdtVariableValue = TextDevicePath;
|
||||
} else {
|
||||
//
|
||||
// Try to convert back the EFI Device Path String into a EFI device Path
|
||||
// to ensure the format is valid
|
||||
//
|
||||
Status = gBS->LocateProtocol (
|
||||
&gEfiDevicePathFromTextProtocolGuid,
|
||||
NULL,
|
||||
(VOID **)&EfiDevicePathFromTextProtocol
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
goto Error;
|
||||
}
|
||||
|
||||
DevicePath = EfiDevicePathFromTextProtocol->ConvertTextToDevicePath (
|
||||
FilePath
|
||||
);
|
||||
if (DevicePath == NULL) {
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
goto Error;
|
||||
}
|
||||
FdtVariableValue = (CHAR16*)FilePath;
|
||||
}
|
||||
}
|
||||
|
||||
Status = gRT->SetVariable (
|
||||
(CHAR16*)L"Fdt",
|
||||
&gFdtVariableGuid,
|
||||
EFI_VARIABLE_RUNTIME_ACCESS |
|
||||
EFI_VARIABLE_NON_VOLATILE |
|
||||
EFI_VARIABLE_BOOTSERVICE_ACCESS ,
|
||||
(FdtVariableValue != NULL) ?
|
||||
StrSize (FdtVariableValue) : 0,
|
||||
FdtVariableValue
|
||||
);
|
||||
|
||||
Error:
|
||||
ShellStatus = EfiCodeToShellCode (Status);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
if (FdtVariableValue != NULL) {
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_UPDATE_SUCCEEDED),
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
FdtVariableValue
|
||||
);
|
||||
} else {
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_UPDATE_DELETED),
|
||||
mFdtPlatformDxeHiiHandle
|
||||
);
|
||||
}
|
||||
} else {
|
||||
if (Status == EFI_INVALID_PARAMETER) {
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_INVALID_PATH),
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
FilePath
|
||||
);
|
||||
} else {
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_ERROR),
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
Status
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (DevicePath != NULL) {
|
||||
FreePool (DevicePath);
|
||||
}
|
||||
if (TextDevicePath != NULL) {
|
||||
FreePool (TextDevicePath);
|
||||
}
|
||||
|
||||
return ShellStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
This is the shell command "setfdt" handler function. This function handles
|
||||
the command when it is invoked in the shell.
|
||||
|
||||
@param[in] This The instance of the
|
||||
EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.
|
||||
@param[in] SystemTable The pointer to the UEFI system table.
|
||||
@param[in] ShellParameters The parameters associated with the command.
|
||||
@param[in] Shell The instance of the shell protocol used in the
|
||||
context of processing this command.
|
||||
|
||||
@return SHELL_SUCCESS The operation was successful.
|
||||
@return SHELL_ABORTED Operation aborted due to internal error.
|
||||
@return SHELL_INVALID_PARAMETER The parameters of the command are not valid.
|
||||
@return SHELL_INVALID_PARAMETER The EFI Shell file path is not valid.
|
||||
@return SHELL_NOT_FOUND Failed to locate a protocol or a file.
|
||||
@return SHELL_UNSUPPORTED Device path not supported.
|
||||
@return SHELL_OUT_OF_RESOURCES A memory allocation failed.
|
||||
@return SHELL_DEVICE_ERROR The "Fdt" variable could not be saved due to a hardware failure.
|
||||
@return SHELL_ACCESS_DENIED The "Fdt" variable is read-only.
|
||||
@return SHELL_ACCESS_DENIED The "Fdt" variable cannot be deleted.
|
||||
@return SHELL_ACCESS_DENIED The "Fdt" variable could not be written due to security violation.
|
||||
|
||||
**/
|
||||
SHELL_STATUS
|
||||
EFIAPI
|
||||
ShellDynCmdSetFdtHandler (
|
||||
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
|
||||
IN EFI_SYSTEM_TABLE *SystemTable,
|
||||
IN EFI_SHELL_PARAMETERS_PROTOCOL *ShellParameters,
|
||||
IN EFI_SHELL_PROTOCOL *Shell
|
||||
)
|
||||
{
|
||||
SHELL_STATUS ShellStatus;
|
||||
EFI_STATUS Status;
|
||||
LIST_ENTRY *ParamPackage;
|
||||
BOOLEAN FilePath;
|
||||
CONST CHAR16 *ValueStr;
|
||||
CHAR16 *TextDevicePath;
|
||||
|
||||
ShellStatus = SHELL_SUCCESS;
|
||||
ParamPackage = NULL;
|
||||
FilePath = FALSE;
|
||||
|
||||
//
|
||||
// Install the Shell and Shell Parameters Protocols on the driver
|
||||
// image. This is necessary for the initialisation of the Shell
|
||||
// Library to succeed in the next step.
|
||||
//
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&gImageHandle,
|
||||
&gEfiShellProtocolGuid, Shell,
|
||||
&gEfiShellParametersProtocolGuid, ShellParameters,
|
||||
NULL
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return SHELL_ABORTED;
|
||||
}
|
||||
|
||||
//
|
||||
// Initialise the Shell Library as we are going to use it.
|
||||
// Assert that the return code is EFI_SUCCESS as it should.
|
||||
// To anticipate any change is the codes returned by
|
||||
// ShellInitialize(), leave in case of error.
|
||||
//
|
||||
Status = ShellInitialize ();
|
||||
if (EFI_ERROR (Status)) {
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
return SHELL_ABORTED;
|
||||
}
|
||||
|
||||
Status = ShellCommandLineParse (ParamList, &ParamPackage, NULL, TRUE);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
switch (ShellCommandLineGetCount (ParamPackage)) {
|
||||
case 1:
|
||||
//
|
||||
// Case "setfdt" or "setfdt -i"
|
||||
//
|
||||
if (!ShellCommandLineGetFlag (ParamPackage, L"-i")) {
|
||||
DisplayFdtDevicePaths ();
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
//
|
||||
// Case "setfdt file_path" or
|
||||
// "setfdt -i file_path" or
|
||||
// "setfdt file_path -i"
|
||||
//
|
||||
FilePath = TRUE;
|
||||
break;
|
||||
|
||||
default:
|
||||
Status = EFI_INVALID_PARAMETER;
|
||||
}
|
||||
}
|
||||
if (EFI_ERROR (Status)) {
|
||||
ShellStatus = EfiCodeToShellCode (Status);
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_ERROR),
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
Status
|
||||
);
|
||||
goto Error;
|
||||
}
|
||||
|
||||
//
|
||||
// Update the preferred device path for the FDT if asked for.
|
||||
//
|
||||
if (FilePath) {
|
||||
ValueStr = ShellCommandLineGetRawValue (ParamPackage, 1);
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_UPDATING),
|
||||
mFdtPlatformDxeHiiHandle
|
||||
);
|
||||
ShellStatus = UpdateFdtTextDevicePath (Shell, ValueStr);
|
||||
if (ShellStatus != SHELL_SUCCESS) {
|
||||
goto Error;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Run the FDT installation process if asked for.
|
||||
//
|
||||
if (ShellCommandLineGetFlag (ParamPackage, L"-i")) {
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_INSTALLING),
|
||||
mFdtPlatformDxeHiiHandle
|
||||
);
|
||||
Status = RunFdtInstallation (&TextDevicePath);
|
||||
ShellStatus = EfiCodeToShellCode (Status);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_INSTALL_SUCCEEDED),
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
TextDevicePath
|
||||
);
|
||||
FreePool (TextDevicePath);
|
||||
} else {
|
||||
if (Status == EFI_INVALID_PARAMETER) {
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_INVALID_DEVICE_PATH),
|
||||
mFdtPlatformDxeHiiHandle
|
||||
);
|
||||
} else {
|
||||
ShellPrintHiiEx (
|
||||
-1, -1, NULL,
|
||||
STRING_TOKEN (STR_SETFDT_ERROR),
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
Status
|
||||
);
|
||||
}
|
||||
DisplayFdtDevicePaths ();
|
||||
}
|
||||
}
|
||||
|
||||
Error:
|
||||
gBS->UninstallMultipleProtocolInterfaces (
|
||||
gImageHandle,
|
||||
&gEfiShellProtocolGuid, Shell,
|
||||
&gEfiShellParametersProtocolGuid, ShellParameters,
|
||||
NULL
|
||||
);
|
||||
ShellCommandLineFreeVarList (ParamPackage);
|
||||
|
||||
return ShellStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
This is the shell command "setfdt" help handler function. This
|
||||
function returns the formatted help for the "setfdt" command.
|
||||
The format matchs that in Appendix B of the revision 2.1 of the
|
||||
UEFI Shell Specification.
|
||||
|
||||
@param[in] This The instance of the EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL.
|
||||
@param[in] Language The pointer to the language string to use.
|
||||
|
||||
@return CHAR16* Pool allocated help string, must be freed by caller.
|
||||
**/
|
||||
CHAR16*
|
||||
EFIAPI
|
||||
ShellDynCmdSetFdtGetHelp (
|
||||
IN EFI_SHELL_DYNAMIC_COMMAND_PROTOCOL *This,
|
||||
IN CONST CHAR8 *Language
|
||||
)
|
||||
{
|
||||
//
|
||||
// This allocates memory. The caller has to free the allocated memory.
|
||||
//
|
||||
return HiiGetString (
|
||||
mFdtPlatformDxeHiiHandle,
|
||||
STRING_TOKEN (STR_GET_HELP_SETFDT),
|
||||
Language
|
||||
);
|
||||
}
|
|
@ -98,10 +98,6 @@
|
|||
gEmbeddedTokenSpaceGuid.PcdPrePiProduceMemoryTypeInformationHob|FALSE|BOOLEAN|0x0000001b
|
||||
gEmbeddedTokenSpaceGuid.PcdCacheEnable|FALSE|BOOLEAN|0x00000042
|
||||
gEmbeddedTokenSpaceGuid.PcdGdbSerial|FALSE|BOOLEAN|0x00000053
|
||||
# Enable the development specific features
|
||||
gEmbeddedTokenSpaceGuid.PcdOverridePlatformFdt|TRUE|BOOLEAN|0x00000054
|
||||
# Add 'dumpfdt' EFI Shell command
|
||||
gEmbeddedTokenSpaceGuid.PcdDumpFdtShellCommand|TRUE|BOOLEAN|0x00000056
|
||||
|
||||
gEmbeddedTokenSpaceGuid.PcdSataSiI3132FeaturePMPSupport|FALSE|BOOLEAN|0x00000050
|
||||
gEmbeddedTokenSpaceGuid.PcdSataSiI3132FeatureDirectCommandIssuing|FALSE|BOOLEAN|0x00000051
|
||||
|
@ -206,8 +202,6 @@
|
|||
gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|16|UINT8|0x00000011
|
||||
|
||||
[PcdsFixedAtBuild.common, PcdsDynamic.common]
|
||||
gEmbeddedTokenSpaceGuid.PcdFdtDevicePaths|L""|VOID*|0x00000055
|
||||
|
||||
#
|
||||
# Value to add to a host address to obtain a device address, using
|
||||
# unsigned 64-bit integer arithmetic. This means we can rely on
|
||||
|
|
|
@ -282,12 +282,5 @@
|
|||
EmbeddedPkg/Drivers/AndroidFastbootTransportUsbDxe/FastbootTransportUsbDxe.inf
|
||||
EmbeddedPkg/Drivers/AndroidFastbootTransportTcpDxe/FastbootTransportTcpDxe.inf
|
||||
|
||||
# FDT installation
|
||||
EmbeddedPkg/Drivers/FdtPlatformDxe/FdtPlatformDxe.inf {
|
||||
<LibraryClasses>
|
||||
# It depends on BdsLib that depends on TimerLib
|
||||
TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
|
||||
}
|
||||
|
||||
[Components.IA32, Components.X64, Components.IPF, Components.ARM]
|
||||
EmbeddedPkg/GdbStub/GdbStub.inf
|
||||
|
|
Loading…
Reference in New Issue