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>
52 lines
1.8 KiB
Plaintext
52 lines
1.8 KiB
Plaintext
/** @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;
|