EmbeddedPkg: add DT platform driver to select between DT and ACPI
As a follow up to the changes proposed by Laszlo to make ACPI and DT mutually exclusive on ArmVirtQemu, this patch proposes a DT platform DXE driver that either installs the NULL protocol PlatformHasAcpiGuid, or installs the FV embedded DTB binary as a configuration table under the appropriate GUID, depending on a preference setting recorded as a UEFI variable, and configurable via a HII screen. The DTB binary can be embedded in the firmware image by adding the following to the platform .fdf file: FILE FREEFORM = 25462CDA-221F-47DF-AC1D-259CFAA4E326 { SECTION RAW = SomePkg/path/to/foo.dtb } Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
51
EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformHii.vfr
Normal file
51
EmbeddedPkg/Drivers/DtPlatformDxe/DtPlatformHii.vfr
Normal file
@@ -0,0 +1,51 @@
|
||||
/** @file
|
||||
*
|
||||
* Copyright (c) 2017, Linaro, Ltd. 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.
|
||||
*
|
||||
**/
|
||||
|
||||
#include "DtPlatformDxe.h"
|
||||
|
||||
//
|
||||
// EFI Variable attributes
|
||||
//
|
||||
#define EFI_VARIABLE_NON_VOLATILE 0x00000001
|
||||
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002
|
||||
#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004
|
||||
#define EFI_VARIABLE_READ_ONLY 0x00000008
|
||||
|
||||
formset
|
||||
guid = DT_PLATFORM_FORMSET_GUID,
|
||||
title = STRING_TOKEN(STR_FORM_SET_TITLE),
|
||||
help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),
|
||||
classguid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID,
|
||||
|
||||
efivarstore DT_ACPI_VARSTORE_DATA,
|
||||
attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE, // EFI variable attributes
|
||||
name = DtAcpiPref,
|
||||
guid = DT_PLATFORM_FORMSET_GUID;
|
||||
|
||||
form formid = 0x1000,
|
||||
title = STRING_TOKEN(STR_MAIN_FORM_TITLE);
|
||||
|
||||
oneof varid = DtAcpiPref.Pref,
|
||||
prompt = STRING_TOKEN(STR_DT_ACPI_SELECT_PROMPT),
|
||||
help = STRING_TOKEN(STR_DT_ACPI_SELECT_HELP),
|
||||
flags = NUMERIC_SIZE_1 | INTERACTIVE | RESET_REQUIRED,
|
||||
option text = STRING_TOKEN(STR_DT_ACPI_SELECT_DT), value = DT_ACPI_SELECT_DT, flags = DEFAULT;
|
||||
option text = STRING_TOKEN(STR_DT_ACPI_SELECT_ACPI), value = DT_ACPI_SELECT_ACPI, flags = 0;
|
||||
endoneof;
|
||||
|
||||
subtitle text = STRING_TOKEN(STR_NULL_STRING);
|
||||
|
||||
endform;
|
||||
|
||||
endformset;
|
Reference in New Issue
Block a user