EmbeddedPkg/FdtPlatformDxe: 'setfdt' command, add deletion of the UEFI variable "Fdt"

Add deletion of the "Fdt" UEFI variable used to specify
a development FDT device path when the 'setfdt' command
is called with an empty string as file path.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ronald Cron <Ronald.Cron@arm.com>
Reviewed-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17300 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Ronald Cron 2015-05-05 15:24:17 +00:00 committed by oliviermartin
parent 4589ffaa85
commit bbd6a1617f

View File

@ -747,9 +747,11 @@ UpdateFdtTextDevicePath (
SHELL_STATUS ShellStatus; SHELL_STATUS ShellStatus;
ASSERT (FilePath != NULL); ASSERT (FilePath != NULL);
DevicePath = NULL;
TextDevicePath = NULL; TextDevicePath = NULL;
FdtVariableValue = NULL; FdtVariableValue = NULL;
if (*FilePath != L'\0') {
DevicePath = Shell->GetDevicePathFromFilePath (FilePath); DevicePath = Shell->GetDevicePathFromFilePath (FilePath);
if (DevicePath != NULL) { if (DevicePath != NULL) {
Status = gBS->LocateProtocol ( Status = gBS->LocateProtocol (
@ -794,6 +796,7 @@ UpdateFdtTextDevicePath (
} }
FdtVariableValue = (CHAR16*)FilePath; FdtVariableValue = (CHAR16*)FilePath;
} }
}
Status = gRT->SetVariable ( Status = gRT->SetVariable (
(CHAR16*)L"Fdt", (CHAR16*)L"Fdt",
@ -801,19 +804,29 @@ UpdateFdtTextDevicePath (
EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS |
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_NON_VOLATILE |
EFI_VARIABLE_BOOTSERVICE_ACCESS , EFI_VARIABLE_BOOTSERVICE_ACCESS ,
StrSize (FdtVariableValue), (FdtVariableValue != NULL) ?
StrSize (FdtVariableValue) : 0,
FdtVariableValue FdtVariableValue
); );
Error: Error:
ShellStatus = EfiCodeToShellCode (Status); ShellStatus = EfiCodeToShellCode (Status);
if (!EFI_ERROR (Status)) { if (!EFI_ERROR (Status)) {
if (FdtVariableValue != NULL) {
ShellPrintHiiEx ( ShellPrintHiiEx (
-1, -1, NULL, -1, -1, NULL,
STRING_TOKEN (STR_SETFDT_UPDATE_SUCCEEDED), STRING_TOKEN (STR_SETFDT_UPDATE_SUCCEEDED),
mFdtPlatformDxeHiiHandle, mFdtPlatformDxeHiiHandle,
FdtVariableValue FdtVariableValue
); );
} else {
ShellPrintHiiEx (
-1, -1, NULL,
STRING_TOKEN (STR_SETFDT_UPDATE_DELETED),
mFdtPlatformDxeHiiHandle,
FdtVariableValue
);
}
} else { } else {
if (Status == EFI_INVALID_PARAMETER) { if (Status == EFI_INVALID_PARAMETER) {
ShellPrintHiiEx ( ShellPrintHiiEx (