mirror of https://github.com/acidanthera/audk.git
ArmVirtPkg: add XenPlatformHasAcpiDtDxe
This driver produces the EDKII Platform Has ACPI and Platform Has Device Tree protocols, exactly matching the current ACPI / DT exposure on Xen, according to ARM vs. AARCH64. At this point it differs from the QEMU driver PlatformHasAcpiDtDxe in that this one always installs the DT. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Leif Lindholm <leif.lindholm@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
This commit is contained in:
parent
2558bfe3e9
commit
a614183440
|
@ -0,0 +1,72 @@
|
||||||
|
/** @file
|
||||||
|
Decide whether the firmware should expose an ACPI- and/or a Device Tree-based
|
||||||
|
hardware description to the operating system.
|
||||||
|
|
||||||
|
Copyright (c) 2017, Red Hat, Inc.
|
||||||
|
|
||||||
|
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 <Guid/PlatformHasAcpi.h>
|
||||||
|
#include <Guid/PlatformHasDeviceTree.h>
|
||||||
|
#include <Library/BaseLib.h>
|
||||||
|
#include <Library/DebugLib.h>
|
||||||
|
#include <Library/UefiBootServicesTableLib.h>
|
||||||
|
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
XenPlatformHasAcpiDt (
|
||||||
|
IN EFI_HANDLE ImageHandle,
|
||||||
|
IN EFI_SYSTEM_TABLE *SystemTable
|
||||||
|
)
|
||||||
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
|
||||||
|
//
|
||||||
|
// If we fail to install any of the necessary protocols below, the OS will be
|
||||||
|
// unbootable anyway (due to lacking hardware description), so tolerate no
|
||||||
|
// errors here.
|
||||||
|
//
|
||||||
|
// Always make ACPI available on 64-bit systems.
|
||||||
|
//
|
||||||
|
if (MAX_UINTN == MAX_UINT64) {
|
||||||
|
Status = gBS->InstallProtocolInterface (
|
||||||
|
&ImageHandle,
|
||||||
|
&gEdkiiPlatformHasAcpiGuid,
|
||||||
|
EFI_NATIVE_INTERFACE,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
goto Failed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Expose the Device Tree unconditionally.
|
||||||
|
//
|
||||||
|
Status = gBS->InstallProtocolInterface (
|
||||||
|
&ImageHandle,
|
||||||
|
&gEdkiiPlatformHasDeviceTreeGuid,
|
||||||
|
EFI_NATIVE_INTERFACE,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
goto Failed;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
|
||||||
|
Failed:
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
CpuDeadLoop ();
|
||||||
|
//
|
||||||
|
// Keep compilers happy.
|
||||||
|
//
|
||||||
|
return Status;
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
## @file
|
||||||
|
# Decide whether the firmware should expose an ACPI- and/or a Device Tree-based
|
||||||
|
# hardware description to the operating system.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2017, Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# 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 = 1.25
|
||||||
|
BASE_NAME = XenPlatformHasAcpiDtDxe
|
||||||
|
FILE_GUID = 6914c46f-d46e-48dc-9998-8a5f64f02553
|
||||||
|
MODULE_TYPE = DXE_DRIVER
|
||||||
|
VERSION_STRING = 1.0
|
||||||
|
ENTRY_POINT = XenPlatformHasAcpiDt
|
||||||
|
|
||||||
|
[Sources]
|
||||||
|
XenPlatformHasAcpiDtDxe.c
|
||||||
|
|
||||||
|
[Packages]
|
||||||
|
EmbeddedPkg/EmbeddedPkg.dec
|
||||||
|
MdePkg/MdePkg.dec
|
||||||
|
|
||||||
|
[LibraryClasses]
|
||||||
|
BaseLib
|
||||||
|
DebugLib
|
||||||
|
UefiBootServicesTableLib
|
||||||
|
UefiDriverEntryPoint
|
||||||
|
|
||||||
|
[Guids]
|
||||||
|
gEdkiiPlatformHasAcpiGuid ## SOMETIMES_PRODUCES ## PROTOCOL
|
||||||
|
gEdkiiPlatformHasDeviceTreeGuid ## PRODUCES ## PROTOCOL
|
||||||
|
|
||||||
|
[Depex]
|
||||||
|
TRUE
|
Loading…
Reference in New Issue