From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: edk2-devel@lists.01.org
Cc: leif.lindholm@linaro.org, alan@softiron.co.uk,
graeme.gregory@linaro.org,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: [PATCH edk2-platforms 1/2] Silicon/AMD/Styx: merge ACPI table drivers
Date: Thu, 6 Dec 2018 13:12:03 +0100 [thread overview]
Message-ID: <20181206121204.4057-2-ard.biesheuvel@linaro.org> (raw)
In-Reply-To: <20181206121204.4057-1-ard.biesheuvel@linaro.org>
ACPI table support on Seattle is split into two parts for no good
reason: AcpiPlatformDxe and AmdStyxAcpiLib. Let's merge them
together, and clean up the code that iterates over the tables and
installs them.
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
Platform/AMD/OverdriveBoard/OverdriveBoard.dsc | 1 -
Platform/LeMaker/CelloBoard/CelloBoard.dsc | 1 -
Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.dsc | 1 -
Platform/AMD/OverdriveBoard/OverdriveBoard.fdf | 1 +
Platform/LeMaker/CelloBoard/CelloBoard.fdf | 1 +
Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.fdf | 1 +
Silicon/AMD/Styx/AcpiTables/AcpiTables.inf | 85 --------------
Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf | 31 +++++-
Silicon/AMD/Styx/{Common/AmdStyxAcpiLib.h => Drivers/AcpiPlatformDxe/AcpiPlatform.h} | 9 --
Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c | 117 +++++++++-----------
Silicon/AMD/Styx/{AcpiTables => Drivers/AcpiPlatformDxe}/Madt.c | 3 +-
Silicon/AMD/Styx/{AcpiTables/Csrt.c => Drivers/AcpiPlatformDxe/Csrt.aslc} | 13 +--
Silicon/AMD/Styx/{AcpiTables/Dbg2.c => Drivers/AcpiPlatformDxe/Dbg2.aslc} | 12 +-
Silicon/AMD/Styx/{AcpiTables/Fadt.c => Drivers/AcpiPlatformDxe/Fadt.aslc} | 11 +-
Silicon/AMD/Styx/{AcpiTables/Gtdt.c => Drivers/AcpiPlatformDxe/Gtdt.aslc} | 20 +---
Silicon/AMD/Styx/{AcpiTables/Iort.c => Drivers/AcpiPlatformDxe/Iort.aslc} | 19 +---
Silicon/AMD/Styx/{AcpiTables/Mcfg.c => Drivers/AcpiPlatformDxe/Mcfg.aslc} | 13 +--
Silicon/AMD/Styx/{AcpiTables/Pptt.c => Drivers/AcpiPlatformDxe/Pptt.aslc} | 10 +-
Silicon/AMD/Styx/{AcpiTables/Spcr.c => Drivers/AcpiPlatformDxe/Spcr.aslc} | 12 +-
19 files changed, 108 insertions(+), 253 deletions(-)
diff --git a/Platform/AMD/OverdriveBoard/OverdriveBoard.dsc b/Platform/AMD/OverdriveBoard/OverdriveBoard.dsc
index 2843e51f93f7..87731357e2eb 100644
--- a/Platform/AMD/OverdriveBoard/OverdriveBoard.dsc
+++ b/Platform/AMD/OverdriveBoard/OverdriveBoard.dsc
@@ -121,7 +121,6 @@ DEFINE DO_CAPSULE = FALSE
# Styx specific libraries
#
AmdSataInit|Silicon/AMD/Styx/AmdModulePkg/Library/AmdSataInitLib/AmdSataInitLib.inf
- AmdStyxAcpiLib|Silicon/AMD/Styx/AcpiTables/AcpiTables.inf
ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf
RealTimeClockLib|Silicon/AMD/Styx/Library/RealTimeClockLib/RealTimeClockLib.inf
diff --git a/Platform/LeMaker/CelloBoard/CelloBoard.dsc b/Platform/LeMaker/CelloBoard/CelloBoard.dsc
index 057bf0eb67de..29e740695366 100644
--- a/Platform/LeMaker/CelloBoard/CelloBoard.dsc
+++ b/Platform/LeMaker/CelloBoard/CelloBoard.dsc
@@ -118,7 +118,6 @@ DEFINE DO_FLASHER = FALSE
# Styx specific libraries
#
AmdSataInit|Silicon/AMD/Styx/AmdModulePkg/Library/AmdSataInitLib/AmdSataInitLib.inf
- AmdStyxAcpiLib|Silicon/AMD/Styx/AcpiTables/AcpiTables.inf
ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf
RealTimeClockLib|Silicon/AMD/Styx/Library/RealTimeClockLib/RealTimeClockLib.inf
diff --git a/Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.dsc b/Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.dsc
index 985ba2253a90..f342cf82d251 100644
--- a/Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.dsc
+++ b/Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.dsc
@@ -117,7 +117,6 @@ DEFINE DO_FLASHER = FALSE
# Styx specific libraries
#
AmdSataInit|Silicon/AMD/Styx/AmdModulePkg/Library/AmdSataInitLib/AmdSataInitLib.inf
- AmdStyxAcpiLib|Silicon/AMD/Styx/AcpiTables/AcpiTables.inf
ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf
RealTimeClockLib|Silicon/AMD/Styx/Library/RealTimeClockLib/RealTimeClockLib.inf
diff --git a/Platform/AMD/OverdriveBoard/OverdriveBoard.fdf b/Platform/AMD/OverdriveBoard/OverdriveBoard.fdf
index 96df83e0da5a..c7e27e20ad4a 100644
--- a/Platform/AMD/OverdriveBoard/OverdriveBoard.fdf
+++ b/Platform/AMD/OverdriveBoard/OverdriveBoard.fdf
@@ -454,6 +454,7 @@ CAPSULE_HEADER_INIT_VERSION = 0x1
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
UI STRING="$(MODULE_NAME)" Optional
RAW ASL Optional |.aml
+ RAW ACPI Optional |.acpi
}
[Rule.Common.DXE_RUNTIME_DRIVER]
diff --git a/Platform/LeMaker/CelloBoard/CelloBoard.fdf b/Platform/LeMaker/CelloBoard/CelloBoard.fdf
index fc977f14b5a1..6362257deb8c 100644
--- a/Platform/LeMaker/CelloBoard/CelloBoard.fdf
+++ b/Platform/LeMaker/CelloBoard/CelloBoard.fdf
@@ -365,6 +365,7 @@ READ_LOCK_STATUS = TRUE
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
UI STRING="$(MODULE_NAME)" Optional
RAW ASL Optional |.aml
+ RAW ACPI Optional |.acpi
}
[Rule.Common.DXE_RUNTIME_DRIVER]
diff --git a/Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.fdf b/Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.fdf
index 8fc9a979aebc..9ba98dd83767 100644
--- a/Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.fdf
+++ b/Platform/SoftIron/Overdrive1000Board/Overdrive1000Board.fdf
@@ -367,6 +367,7 @@ READ_LOCK_STATUS = TRUE
PE32 PE32 $(INF_OUTPUT)/$(MODULE_NAME).efi
UI STRING="$(MODULE_NAME)" Optional
RAW ASL Optional |.aml
+ RAW ACPI Optional |.acpi
}
[Rule.Common.DXE_RUNTIME_DRIVER]
diff --git a/Silicon/AMD/Styx/AcpiTables/AcpiTables.inf b/Silicon/AMD/Styx/AcpiTables/AcpiTables.inf
deleted file mode 100644
index 0bc5b1e98964..000000000000
--- a/Silicon/AMD/Styx/AcpiTables/AcpiTables.inf
+++ /dev/null
@@ -1,85 +0,0 @@
-#/** @file
-# Sample ACPI Platform Driver
-#
-# Copyright (c) 2008 - 2014, Intel Corporation. All rights reserved.<BR>
-# Copyright (c) 2014 - 2016, AMD Inc. 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.
-#
-#**/
-#/**
-#
-# Derived from:
-# MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe.inf
-#
-#**/
-
-[Defines]
- INF_VERSION = 0x00010005
- BASE_NAME = AmdStyxAcpiLib
- FILE_GUID = 74850e9e-371c-43af-b1fe-794d61505ad0
- MODULE_TYPE = BASE
- VERSION_STRING = 1.0
- LIBRARY_CLASS = AmdStyxAcpiLib
-
-[Sources]
- Gtdt.c
- Fadt.c
- Dbg2.c
- Spcr.c
- Madt.c
- Mcfg.c
- Csrt.c
- Iort.c
- Pptt.c
-
-[Packages]
- ArmPkg/ArmPkg.dec
- MdePkg/MdePkg.dec
- MdeModulePkg/MdeModulePkg.dec
- Silicon/AMD/Styx/AmdModulePkg/AmdModulePkg.dec
- Silicon/AMD/Styx/AmdStyx.dec
-
-[LibraryClasses]
- PcdLib
- DebugLib
- UefiBootServicesTableLib
-
-[Protocols]
- gAmdMpCoreInfoProtocolGuid ## CONSUMED
-
-[Pcd]
- gAmdStyxTokenSpaceGuid.PcdSocCoreCount
- gAmdStyxTokenSpaceGuid.PcdSocCpuId
-
-[FixedPcd]
- gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase
- gArmTokenSpaceGuid.PcdGicDistributorBase
- gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase
- gAmdStyxTokenSpaceGuid.PcdSerialDbgRegisterBase
- gAmdStyxTokenSpaceGuid.PcdGicVersion
- gAmdStyxTokenSpaceGuid.PcdGicHypervisorInterruptInterfaceBase
- gAmdStyxTokenSpaceGuid.PcdGicVirtualInterruptInterfaceBase
- gAmdStyxTokenSpaceGuid.PcdGicVirtualMaintenanceInterrupt
- gAmdStyxTokenSpaceGuid.PcdGicVirtualRegisterInterfaceBase
- gAmdStyxTokenSpaceGuid.PcdGicMSIFrameBase
- gAmdStyxTokenSpaceGuid.PcdCntControlBase
- gAmdStyxTokenSpaceGuid.PcdCntReadBase
- gAmdStyxTokenSpaceGuid.PcdCntCTLBase
- gAmdStyxTokenSpaceGuid.PcdCntBase0
- gAmdStyxTokenSpaceGuid.PcdCntEL0Base0
- gAmdStyxTokenSpaceGuid.PcdSbsaWatchDogRefreshBase
- gAmdStyxTokenSpaceGuid.PcdSbsaWatchDogControlBase
- gAmdStyxTokenSpaceGuid.PcdSbsaWakeUpGSIV
- gAmdStyxTokenSpaceGuid.PcdSbsaWatchDogGSIV
- gAmdStyxTokenSpaceGuid.PcdSocCoresPerCluster
- gAmdStyxTokenSpaceGuid.PcdSata1PortCount
-
-[Depex]
- gAmdMpCoreInfoProtocolGuid
diff --git a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
index 92f185fa4bee..95745db00ff3 100644
--- a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatformDxe.inf
@@ -28,7 +28,16 @@
[Sources]
AcpiPlatform.c
+ Csrt.aslc
+ Dbg2.aslc
Dsdt.asl
+ Fadt.aslc
+ Gtdt.aslc
+ Iort.aslc
+ Madt.c
+ Mcfg.aslc
+ Pptt.aslc
+ Spcr.aslc
SsdtB1.asl
SsdtXgbe.asl
@@ -40,7 +49,6 @@
Silicon/AMD/Styx/AmdStyx.dec
[LibraryClasses]
- AmdStyxAcpiLib
BaseLib
BaseMemoryLib
DebugLib
@@ -54,12 +62,33 @@
gAmdStyxTokenSpaceGuid.PcdEthMacA
gAmdStyxTokenSpaceGuid.PcdEthMacB
gAmdStyxTokenSpaceGuid.PcdEnableSmmus
+ gAmdStyxTokenSpaceGuid.PcdSocCoreCount
gAmdStyxTokenSpaceGuid.PcdSocCpuId
[FixedPcd]
+ gAmdStyxTokenSpaceGuid.PcdCntControlBase
+ gAmdStyxTokenSpaceGuid.PcdCntReadBase
+ gAmdStyxTokenSpaceGuid.PcdCntCTLBase
+ gAmdStyxTokenSpaceGuid.PcdCntBase0
+ gAmdStyxTokenSpaceGuid.PcdCntEL0Base0
+ gAmdStyxTokenSpaceGuid.PcdGicVersion
+ gAmdStyxTokenSpaceGuid.PcdGicHypervisorInterruptInterfaceBase
+ gAmdStyxTokenSpaceGuid.PcdGicVirtualInterruptInterfaceBase
+ gAmdStyxTokenSpaceGuid.PcdGicVirtualMaintenanceInterrupt
+ gAmdStyxTokenSpaceGuid.PcdGicVirtualRegisterInterfaceBase
+ gAmdStyxTokenSpaceGuid.PcdGicMSIFrameBase
gAmdStyxTokenSpaceGuid.PcdSata1PortCount
+ gAmdStyxTokenSpaceGuid.PcdSbsaWatchDogRefreshBase
+ gAmdStyxTokenSpaceGuid.PcdSbsaWatchDogControlBase
+ gAmdStyxTokenSpaceGuid.PcdSbsaWakeUpGSIV
+ gAmdStyxTokenSpaceGuid.PcdSbsaWatchDogGSIV
+ gAmdStyxTokenSpaceGuid.PcdSerialDbgRegisterBase
+ gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase
+ gArmTokenSpaceGuid.PcdGicDistributorBase
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase
[Protocols]
+ gAmdMpCoreInfoProtocolGuid ## CONSUMED
gEfiAcpiTableProtocolGuid ## ALWAYS_CONSUMED
[Depex]
diff --git a/Silicon/AMD/Styx/Common/AmdStyxAcpiLib.h b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.h
similarity index 83%
rename from Silicon/AMD/Styx/Common/AmdStyxAcpiLib.h
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.h
index 0dfd7635e897..b1864131795a 100644
--- a/Silicon/AMD/Styx/Common/AmdStyxAcpiLib.h
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.h
@@ -18,16 +18,7 @@
#include <IndustryStandard/Acpi.h>
-EFI_ACPI_DESCRIPTION_HEADER *FadtTable (void);
-EFI_ACPI_DESCRIPTION_HEADER *FacsTable (void);
EFI_ACPI_DESCRIPTION_HEADER *MadtHeader (void);
-EFI_ACPI_DESCRIPTION_HEADER *GtdtHeader (void);
-EFI_ACPI_DESCRIPTION_HEADER *McfgHeader (void);
-EFI_ACPI_DESCRIPTION_HEADER *Dbg2Header (void);
-EFI_ACPI_DESCRIPTION_HEADER *SpcrHeader (void);
-EFI_ACPI_DESCRIPTION_HEADER *CsrtHeader (void);
-EFI_ACPI_DESCRIPTION_HEADER *IortHeader (void);
-EFI_ACPI_DESCRIPTION_HEADER *PpttHeader (void);
#define EFI_ACPI_AMD_OEM_ID_ARRAY {'A','M','D','I','N','C'}
#define EFI_ACPI_AMD_OEM_TABLE_ID SIGNATURE_64('S','E','A','T','T','L','E',' ')
diff --git a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
index a00bd3bd2215..ff1326982329 100644
--- a/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/AcpiPlatform.c
@@ -19,7 +19,6 @@
MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatform.c
**/
-#include <AmdStyxAcpiLib.h>
#include <Protocol/AcpiTable.h>
#include <Library/BaseLib.h>
@@ -31,12 +30,11 @@
#include <Library/UefiBootServicesTableLib.h>
#include <IndustryStandard/Acpi61.h>
+#include <IndustryStandard/IoRemappingTable.h>
#include <SocVersion.h>
-#define MAX_ACPI_TABLES 16
-
-EFI_ACPI_DESCRIPTION_HEADER *AcpiTableList[MAX_ACPI_TABLES];
+#include "AcpiPlatform.h"
STATIC EFI_ACPI_TABLE_PROTOCOL *mAcpiTableProtocol;
@@ -97,16 +95,20 @@ InstallSystemDescriptionTables (
VOID
)
{
- EFI_ACPI_DESCRIPTION_HEADER *Table;
- EFI_STATUS Status;
- UINT32 CpuId;
- UINTN Index;
- UINTN TableSize;
- UINTN TableHandle;
+ EFI_ACPI_DESCRIPTION_HEADER *Table;
+ EFI_STATUS Status;
+ UINT32 CpuId;
+ UINTN Index;
+ UINTN TableSize;
+ UINTN TableHandle;
+ EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE *Gtdt;
+ EFI_ACPI_6_0_IO_REMAPPING_TABLE *Iort;
#if DO_XGBE
UINT8 MacPackage[sizeof(mDefaultMacPackageA)];
#endif
+ CpuId = PcdGet32 (PcdSocCpuId);
+
Status = EFI_SUCCESS;
for (Index = 0; !EFI_ERROR (Status); Index++) {
Status = GetSectionFromFv (&gEfiCallerIdGuid, EFI_SECTION_RAW, Index,
@@ -117,7 +119,6 @@ InstallSystemDescriptionTables (
switch (Table->OemTableId) {
case SIGNATURE_64 ('S', 't', 'y', 'x', 'B', '1', ' ', ' '):
- CpuId = PcdGet32 (PcdSocCpuId);
if ((CpuId & STYX_SOC_VERSION_MASK) < STYX_SOC_VERSION_B1) {
continue;
}
@@ -141,11 +142,39 @@ InstallSystemDescriptionTables (
break;
#endif
continue;
+
+ default:
+ switch (Table->Signature) {
+ case EFI_ACPI_6_0_IO_REMAPPING_TABLE_SIGNATURE:
+ if (!PcdGetBool (PcdEnableSmmus)) {
+ continue;
+ }
+ if ((CpuId & STYX_SOC_VERSION_MASK) < STYX_SOC_VERSION_B1) {
+ Iort = (EFI_ACPI_6_0_IO_REMAPPING_TABLE *)Table;
+ Iort->NumNodes -= 2;
+ }
+ break;
+
+ case EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE:
+ if ((CpuId & STYX_SOC_VERSION_MASK) < STYX_SOC_VERSION_B1) {
+ Gtdt = (EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE *)Table;
+ Gtdt->Header.Length = sizeof (*Gtdt);
+ Gtdt->PlatformTimerCount = 0;
+ Gtdt->PlatformTimerOffset = 0;
+ }
+ break;
+ }
}
Status = mAcpiTableProtocol->InstallAcpiTable (mAcpiTableProtocol, Table,
- TableSize, &TableHandle);
- ASSERT_EFI_ERROR (Status);
+ Table->Length, &TableHandle);
+
+ DEBUG ((DEBUG_WARN,
+ "Installing %c%c%c%c Table (Revision %d, Length %d) ... %r\n",
+ ((UINT8 *)&Table->Signature)[0], ((UINT8 *)&Table->Signature)[1],
+ ((UINT8 *)&Table->Signature)[2], ((UINT8 *)&Table->Signature)[3],
+ Table->Revision, Table->Length, Status));
+
FreePool (Table);
}
}
@@ -168,67 +197,23 @@ AcpiPlatformEntryPoint (
IN EFI_SYSTEM_TABLE *SystemTable
)
{
- EFI_STATUS Status;
- UINTN TableHandle;
- UINTN TableIndex;
-
- ZeroMem(AcpiTableList, sizeof(AcpiTableList));
-
- TableIndex = 0;
- AcpiTableList[TableIndex++] = FadtTable();
- AcpiTableList[TableIndex++] = MadtHeader();
- AcpiTableList[TableIndex++] = GtdtHeader();
- AcpiTableList[TableIndex++] = Dbg2Header();
- AcpiTableList[TableIndex++] = SpcrHeader();
- AcpiTableList[TableIndex++] = McfgHeader();
- AcpiTableList[TableIndex++] = CsrtHeader();
- if (PcdGetBool (PcdEnableSmmus)) {
- AcpiTableList[TableIndex++] = IortHeader();
- }
- AcpiTableList[TableIndex++] = PpttHeader();
- AcpiTableList[TableIndex++] = NULL;
-
- DEBUG((DEBUG_INFO, "%a(): ACPI Table installer\n", __FUNCTION__));
+ EFI_STATUS Status;
+ UINTN TableHandle;
+ EFI_ACPI_DESCRIPTION_HEADER *Header;
//
// Find the AcpiTable protocol
//
Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL,
(VOID**)&mAcpiTableProtocol);
- if (EFI_ERROR (Status)) {
- DEBUG((EFI_D_ERROR, "Failed to locate AcpiTable protocol. Status = %r\n", Status));
- ASSERT_EFI_ERROR(Status);
- }
+ ASSERT_EFI_ERROR (Status);
- TableIndex = 0;
- while (AcpiTableList[TableIndex] != NULL) {
- //
- // Install ACPI table
- //
- DEBUG ((EFI_D_ERROR, "Installing %c%c%c%c Table (Revision %d, Length %d) ...\n",
- *((UINT8*)&AcpiTableList[TableIndex]->Signature),
- *((UINT8*)&AcpiTableList[TableIndex]->Signature + 1),
- *((UINT8*)&AcpiTableList[TableIndex]->Signature + 2),
- *((UINT8*)&AcpiTableList[TableIndex]->Signature + 3),
- AcpiTableList[TableIndex]->Revision,
- AcpiTableList[TableIndex]->Length));
-
- Status = mAcpiTableProtocol->InstallAcpiTable (
- mAcpiTableProtocol,
- AcpiTableList[TableIndex],
- (AcpiTableList[TableIndex])->Length,
- &TableHandle
- );
- if (EFI_ERROR (Status)) {
- DEBUG((DEBUG_ERROR,"Error adding ACPI Table. Status = %r\n", Status));
- ASSERT_EFI_ERROR(Status);
- }
- TableIndex++;
- ASSERT( TableIndex < MAX_ACPI_TABLES );
- }
+ Header = MadtHeader ();
+ Status = mAcpiTableProtocol->InstallAcpiTable (mAcpiTableProtocol, Header,
+ Header->Length, &TableHandle);
+ ASSERT_EFI_ERROR (Status);
InstallSystemDescriptionTables ();
- return EFI_SUCCESS;
+ return EFI_REQUEST_UNLOAD_IMAGE;
}
-
diff --git a/Silicon/AMD/Styx/AcpiTables/Madt.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Madt.c
similarity index 97%
rename from Silicon/AMD/Styx/AcpiTables/Madt.c
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Madt.c
index 43d415c8bc32..b10ae7e1ab74 100644
--- a/Silicon/AMD/Styx/AcpiTables/Madt.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Madt.c
@@ -27,9 +27,10 @@
#include <Library/UefiBootServicesTableLib.h>
#include <Guid/ArmMpCoreInfo.h>
-#include <AmdStyxAcpiLib.h>
#include <Protocol/AmdMpCoreInfo.h>
+#include "AcpiPlatform.h"
+
AMD_MP_CORE_INFO_PROTOCOL *mAmdMpCoreInfoProtocol = NULL;
diff --git a/Silicon/AMD/Styx/AcpiTables/Csrt.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Csrt.aslc
similarity index 93%
rename from Silicon/AMD/Styx/AcpiTables/Csrt.c
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Csrt.aslc
index f25f90da5314..4aca9320250b 100644
--- a/Silicon/AMD/Styx/AcpiTables/Csrt.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Csrt.aslc
@@ -16,7 +16,7 @@
**/
-#include <AmdStyxAcpiLib.h>
+#include "AcpiPlatform.h"
//
// CSRT for ARM_CCN504 (L3 CACHE)
@@ -69,7 +69,7 @@ typedef struct {
} AMD_ACPI_ARM_CCN504_CORE_SYSTEM_RESOURCE_TABLE;
-AMD_ACPI_ARM_CCN504_CORE_SYSTEM_RESOURCE_TABLE AcpiCsrt = {
+STATIC AMD_ACPI_ARM_CCN504_CORE_SYSTEM_RESOURCE_TABLE AcpiCsrt = {
AMD_ACPI_HEADER (EFI_ACPI_5_1_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE,
AMD_ACPI_ARM_CCN504_CORE_SYSTEM_RESOURCE_TABLE,
AMD_ACPI_ARM_CCN504_CSRT_REVISION),
@@ -97,11 +97,4 @@ AMD_ACPI_ARM_CCN504_CORE_SYSTEM_RESOURCE_TABLE AcpiCsrt = {
#pragma pack(pop)
-
-EFI_ACPI_DESCRIPTION_HEADER *
-CsrtHeader (
- VOID
- )
-{
- return &AcpiCsrt.Header;
-}
+VOID* CONST ReferenceAcpiTable = &AcpiCsrt;
diff --git a/Silicon/AMD/Styx/AcpiTables/Dbg2.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Dbg2.aslc
similarity index 95%
rename from Silicon/AMD/Styx/AcpiTables/Dbg2.c
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Dbg2.aslc
index 5d6cf82dba5b..07635aa9dd8e 100644
--- a/Silicon/AMD/Styx/AcpiTables/Dbg2.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Dbg2.aslc
@@ -16,9 +16,10 @@
**/
-#include <AmdStyxAcpiLib.h>
#include <IndustryStandard/DebugPort2Table.h>
+#include "AcpiPlatform.h"
+
#pragma pack(push, 1)
#define EFI_ACPI_DBG2_REVISION 0
@@ -104,11 +105,4 @@ STATIC DBG2_TABLE AcpiDbg2 = {
#pragma pack(pop)
-EFI_ACPI_DESCRIPTION_HEADER *
-Dbg2Header (
- VOID
- )
-{
- return &AcpiDbg2.Description.Header;
-}
-
+VOID* CONST ReferenceAcpiTable = &AcpiDbg2;
diff --git a/Silicon/AMD/Styx/AcpiTables/Fadt.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Fadt.aslc
similarity index 96%
rename from Silicon/AMD/Styx/AcpiTables/Fadt.c
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Fadt.aslc
index bdf88a9c8e32..35d190bdf685 100644
--- a/Silicon/AMD/Styx/AcpiTables/Fadt.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Fadt.aslc
@@ -21,7 +21,7 @@
**/
-#include <AmdStyxAcpiLib.h>
+#include "AcpiPlatform.h"
#define FADT_FLAGS ( EFI_ACPI_5_1_HW_REDUCED_ACPI | \
EFI_ACPI_5_1_LOW_POWER_S0_IDLE_CAPABLE | \
@@ -91,11 +91,4 @@ STATIC EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE AcpiFadt = {
#pragma pack(pop)
-EFI_ACPI_DESCRIPTION_HEADER *
-FadtTable (
- VOID
- )
-{
- return (EFI_ACPI_DESCRIPTION_HEADER *) &AcpiFadt;
-}
-
+VOID* CONST ReferenceAcpiTable = &AcpiFadt;
diff --git a/Silicon/AMD/Styx/AcpiTables/Gtdt.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Gtdt.aslc
similarity index 92%
rename from Silicon/AMD/Styx/AcpiTables/Gtdt.c
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Gtdt.aslc
index 139c9ae0baad..34f92f2e4061 100644
--- a/Silicon/AMD/Styx/AcpiTables/Gtdt.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Gtdt.aslc
@@ -21,7 +21,7 @@
**/
-#include <AmdStyxAcpiLib.h>
+#include "AcpiPlatform.h"
#pragma pack(push, 1)
@@ -170,20 +170,4 @@ STATIC AMD_ACPI_5_1_ARM_GTDT_STRUCTURE AcpiGtdt = {
#pragma pack(pop)
-
-EFI_ACPI_DESCRIPTION_HEADER *
-GtdtHeader (
- VOID
- )
-{
- UINT32 CpuId = PcdGet32 (PcdSocCpuId);
-
- // Check BaseModel and Stepping: Styx-B0 or prior?
- if (((CpuId & 0xFF0) == 0) || ((CpuId & 0x00F) == 0)) {
- AcpiGtdt.Gtdt.Header.Length = sizeof (EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE);
- AcpiGtdt.Gtdt.PlatformTimerCount = 0;
- AcpiGtdt.Gtdt.PlatformTimerOffset = 0;
- }
-
- return (EFI_ACPI_DESCRIPTION_HEADER *) &AcpiGtdt.Gtdt.Header;
-}
+VOID* CONST ReferenceAcpiTable = &AcpiGtdt;
diff --git a/Silicon/AMD/Styx/AcpiTables/Iort.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Iort.aslc
similarity index 95%
rename from Silicon/AMD/Styx/AcpiTables/Iort.c
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Iort.aslc
index 9c232379eff5..7723a4ddade3 100644
--- a/Silicon/AMD/Styx/AcpiTables/Iort.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Iort.aslc
@@ -12,9 +12,9 @@
**/
-#include <AmdStyxAcpiLib.h>
#include <IndustryStandard/IoRemappingTable.h>
-#include <SocVersion.h>
+
+#include "AcpiPlatform.h"
#define FIELD_OFFSET(type, name) __builtin_offsetof(type, name)
@@ -355,17 +355,4 @@ STATIC STYX_IO_REMAPPING_STRUCTURE AcpiIort = {
#pragma pack()
-EFI_ACPI_DESCRIPTION_HEADER *
-IortHeader (
- VOID
- )
-{
- if ((PcdGet32 (PcdSocCpuId) & STYX_SOC_VERSION_MASK) < STYX_SOC_VERSION_B1) {
- //
- // Silicon revisions prior to B1 have only one SATA port,
- // so omit the nodes of the second port in this case.
- //
- AcpiIort.Iort.NumNodes -= 2;
- }
- return (EFI_ACPI_DESCRIPTION_HEADER *)&AcpiIort.Iort.Header;
-}
+VOID* CONST ReferenceAcpiTable = &AcpiIort;
diff --git a/Silicon/AMD/Styx/AcpiTables/Mcfg.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Mcfg.aslc
similarity index 86%
rename from Silicon/AMD/Styx/AcpiTables/Mcfg.c
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Mcfg.aslc
index 4fc18e8efcfc..67fb0429d840 100644
--- a/Silicon/AMD/Styx/AcpiTables/Mcfg.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Mcfg.aslc
@@ -16,9 +16,10 @@
**/
-#include <AmdStyxAcpiLib.h>
#include <IndustryStandard/MemoryMappedConfigurationSpaceAccessTable.h>
+#include "AcpiPlatform.h"
+
#if STYX_A0
#define END_PCI_BUS_NUMBER 15
#else
@@ -32,7 +33,7 @@ typedef struct {
EFI_ACPI_MEMORY_MAPPED_ENHANCED_CONFIGURATION_SPACE_BASE_ADDRESS_ALLOCATION_STRUCTURE Structure;
} EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_DESCRIPTION_TABLE;
-EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_DESCRIPTION_TABLE AcpiMcfg = {
+STATIC EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_DESCRIPTION_TABLE AcpiMcfg = {
{ AMD_ACPI_HEADER (EFI_ACPI_5_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_DESCRIPTION_TABLE,
EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_REVISION),
@@ -42,10 +43,4 @@ EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_DESCRIPTION_TABLE AcpiMcfg = {
#pragma pack(pop)
-EFI_ACPI_DESCRIPTION_HEADER *
-McfgHeader (
- VOID
- )
-{
- return &AcpiMcfg.Header.Header;
-}
+VOID* CONST ReferenceAcpiTable = &AcpiMcfg;
diff --git a/Silicon/AMD/Styx/AcpiTables/Pptt.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Pptt.aslc
similarity index 97%
rename from Silicon/AMD/Styx/AcpiTables/Pptt.c
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Pptt.aslc
index 1746bbe8b596..64a6cda7fd87 100644
--- a/Silicon/AMD/Styx/AcpiTables/Pptt.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Pptt.aslc
@@ -14,7 +14,7 @@
#include <IndustryStandard/Acpi.h>
-#include <AmdStyxAcpiLib.h>
+#include "AcpiPlatform.h"
#define FIELD_OFFSET(type, name) __builtin_offsetof(type, name)
@@ -216,10 +216,4 @@ STATIC STYX_PPTT_TABLE mStyxPpttTable = {
}
};
-EFI_ACPI_DESCRIPTION_HEADER *
-PpttHeader (
- VOID
- )
-{
- return (EFI_ACPI_DESCRIPTION_HEADER *)&mStyxPpttTable.Pptt.Header;
-}
+VOID* CONST ReferenceAcpiTable = &mStyxPpttTable;
diff --git a/Silicon/AMD/Styx/AcpiTables/Spcr.c b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Spcr.aslc
similarity index 90%
rename from Silicon/AMD/Styx/AcpiTables/Spcr.c
rename to Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Spcr.aslc
index 719c276cfb31..bd84a19cce46 100644
--- a/Silicon/AMD/Styx/AcpiTables/Spcr.c
+++ b/Silicon/AMD/Styx/Drivers/AcpiPlatformDxe/Spcr.aslc
@@ -16,9 +16,10 @@
**/
-#include <AmdStyxAcpiLib.h>
#include <IndustryStandard/SerialPortConsoleRedirectionTable.h>
+#include "AcpiPlatform.h"
+
#pragma pack(push, 1)
#define EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERFACE_TYPE_PL011 3
@@ -114,11 +115,4 @@ STATIC EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE AcpiSpcr = {
#pragma pack(pop)
-EFI_ACPI_DESCRIPTION_HEADER *
-SpcrHeader (
- VOID
- )
-{
- return &AcpiSpcr.Header;
-}
-
+VOID* CONST ReferenceAcpiTable = &AcpiSpcr;
--
2.19.2
next prev parent reply other threads:[~2018-12-06 12:12 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-06 12:12 [PATCH edk2-platforms 0/2] Silicon/Styx: merge and simplify ACPI platform driver Ard Biesheuvel
2018-12-06 12:12 ` Ard Biesheuvel [this message]
2018-12-06 12:12 ` [PATCH edk2-platforms 2/2] Silicon/Styx/AcpiPlatformDxe: simplify MADT generation logic Ard Biesheuvel
2018-12-10 22:20 ` [PATCH edk2-platforms 0/2] Silicon/Styx: merge and simplify ACPI platform driver Leif Lindholm
2018-12-11 8:02 ` Ard Biesheuvel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181206121204.4057-2-ard.biesheuvel@linaro.org \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox