ArmPlatformPkg/ArmJunoPkg: Added the ACPI 5.0 Tables

These tables are:
- Differentiated System Description Table Fields (DSDT)
- Firmware ACPI Control Structure (FACS)
- Fixed ACPI Description Table (FADT)
- Generic Timer Description Table (GTDT)
- Multiple APIC Description Table (MADT)
- Secondary System Description Table Fields (SSDT)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
Reviewed-by: Graeme Gregory <graeme.gregory@linaro.org>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16652 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Olivier Martin 2015-01-23 16:03:09 +00:00 committed by oliviermartin
parent 05e56470cd
commit 3399d5beb8
9 changed files with 556 additions and 0 deletions

View File

@ -0,0 +1,48 @@
## @file
#
# ACPI table data and ASL sources required to boot the platform.
#
# Copyright (c) 2014, ARM 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.
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = JunoAcpiTables
FILE_GUID = a1dd808e-1e95-4399-abc0-653c82e8530c
MODULE_TYPE = USER_DEFINED
VERSION_STRING = 1.0
[Sources]
Dsdt.asl
Facs.aslc
Fadt.aslc
Gtdt.aslc
Madt.aslc
[Packages]
ArmPkg/ArmPkg.dec
ArmPlatformPkg/ArmPlatformPkg.dec
ArmPlatformPkg/ArmVExpressPkg/ArmVExpressPkg.dec
ArmPlatformPkg/ArmJunoPkg/ArmJuno.dec
EmbeddedPkg/EmbeddedPkg.dec
MdePkg/MdePkg.dec
MdeModulePkg/MdeModulePkg.dec
[FixedPcd]
gArmPlatformTokenSpaceGuid.PcdCoreCount
gArmTokenSpaceGuid.PcdGicDistributorBase
gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase
gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum
gArmTokenSpaceGuid.PcdArmArchTimerIntrNum
gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum
gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum

View File

@ -0,0 +1,172 @@
/** @file
Differentiated System Description Table Fields (DSDT)
Copyright (c) 2014, ARM Ltd. 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.
**/
#include "ArmPlatform.h"
DefinitionBlock("DsdtTable.aml", "DSDT", 1, "ARMLTD", "ARM-JUNO", EFI_ACPI_ARM_OEM_REVISION) {
Scope(_SB) {
//
// A57x2-A53x4 Processor declaration
//
Device(CPU0) { // A57-0: Cluster 0, Cpu 0
Name(_HID, "ACPI0007")
Name(_UID, 0)
}
Device(CPU1) { // A57-1: Cluster 0, Cpu 1
Name(_HID, "ACPI0007")
Name(_UID, 1)
}
Device(CPU2) { // A53-0: Cluster 1, Cpu 0
Name(_HID, "ACPI0007")
Name(_UID, 2)
}
Device(CPU3) { // A53-1: Cluster 1, Cpu 1
Name(_HID, "ACPI0007")
Name(_UID, 3)
}
Device(CPU4) { // A53-2: Cluster 1, Cpu 2
Name(_HID, "ACPI0007")
Name(_UID, 4)
}
Device(CPU5) { // A53-3: Cluster 1, Cpu 3
Name(_HID, "ACPI0007")
Name(_UID, 5)
}
//
// Keyboard and Mouse
//
Device(KMI0) {
Name(_HID, "ARMH0501")
Name(_CID, "PL050_KBD")
Name(_CRS, ResourceTemplate() {
Memory32Fixed(ReadWrite, 0x1C060008, 0x4)
Memory32Fixed(ReadWrite, 0x1C060000, 0x4)
Memory32Fixed(ReadOnly, 0x1C060004, 0x4)
Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 197 }
})
}
//
// LAN9118 Ethernet
//
Device(ETH0) {
Name(_HID, "ARMH9118")
Name(_CRS, ResourceTemplate() {
Memory32Fixed(ReadWrite, 0x1A000000, 0x1000)
Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) { 192 }
})
}
//
// USB Host Controller
//
Device(USB0){
Name(_HID, "ARMH0D20")
Name(_CID, "PNP0D20")
Name(_UID, 2)
Method(_CRS, 0x0, Serialized){
Name(RBUF, ResourceTemplate(){
Memory32Fixed(ReadWrite, 0x7FFC0000, 0x000000B0)
Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) {149} // INT ID=149 GIC IRQ ID=117 for Juno SoC USB EHCI Controller
})
Return(RBUF)
}
//
// Root Hub
//
Device(RHUB){
Name(_ADR, 0x00000000) // Address of Root Hub should be 0 as per ACPI 5.0 spec
//
// Ports connected to Root Hub
//
Device(HUB1){
Name(_ADR, 0x00000001)
Name(_UPC, Package(){
0x00, // Port is NOT connectable
0xFF, // Don't care
0x00000000, // Reserved 0 must be zero
0x00000000 // Reserved 1 must be zero
})
Device(PRT1){
Name(_ADR, 0x00000001)
Name(_UPC, Package(){
0xFF, // Port is connectable
0x00, // Port connector is A
0x00000000,
0x00000000
})
Name(_PLD, Package(){
Buffer(0x10){
0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}
})
} // USB0_RHUB_HUB1_PRT1
Device(PRT2){
Name(_ADR, 0x00000002)
Name(_UPC, Package(){
0xFF, // Port is connectable
0x00, // Port connector is A
0x00000000,
0x00000000
})
Name(_PLD, Package(){
Buffer(0x10){
0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}
})
} // USB0_RHUB_HUB1_PRT2
Device(PRT3){
Name(_ADR, 0x00000003)
Name(_UPC, Package(){
0xFF, // Port is connectable
0x00, // Port connector is A
0x00000000,
0x00000000
})
Name(_PLD, Package(){
Buffer(0x10){
0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}
})
} // USB0_RHUB_HUB1_PRT3
Device(PRT4){
Name(_ADR, 0x00000004)
Name(_UPC, Package(){
0xFF, // Port is connectable
0x00, // Port connector is A
0x00000000,
0x00000000
})
Name(_PLD, Package(){
Buffer(0x10){
0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
}
})
} // USB0_RHUB_HUB1_PRT4
} // USB0_RHUB_HUB1
} // USB0_RHUB
} // USB0
} // Scope(_SB)
}

View File

@ -0,0 +1,68 @@
/** @file
* Firmware ACPI Control Structure (FACS)
*
* Copyright (c) 2012 - 2014, ARM Limited. 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 <IndustryStandard/Acpi.h>
EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE Facs = {
EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE, // UINT32 Signature
sizeof (EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE), // UINT32 Length
0xA152, // UINT32 HardwareSignature
0, // UINT32 FirmwareWakingVector
0, // UINT32 GlobalLock
0, // UINT32 Flags
0, // UINT64 XFirmwareWakingVector
EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION, // UINT8 Version;
{ EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0[0]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0[1]
EFI_ACPI_RESERVED_BYTE }, // UINT8 Reserved0[2]
0, // UINT32 OspmFlags "Platform firmware must
// initialize this field to zero."
{ EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[0]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[1]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[2]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[3]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[4]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[5]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[6]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[7]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[8]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[9]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[10]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[11]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[12]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[13]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[14]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[15]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[16]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[17]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[18]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[19]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[20]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[21]
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved1[22]
EFI_ACPI_RESERVED_BYTE }, // UINT8 Reserved1[23]
};
VOID*
ReferenceAcpiTable (
VOID
)
{
//
// Reference the table being generated to prevent the optimizer from removing the
// data structure from the executable
//
return (VOID*)&Facs;
}

View File

@ -0,0 +1,91 @@
/** @file
* Fixed ACPI Description Table (FADT)
*
* Copyright (c) 2012 - 2014, ARM Limited. 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 "ArmPlatform.h"
#include <Library/AcpiLib.h>
#include <IndustryStandard/Acpi.h>
EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
ARM_ACPI_HEADER (
EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE,
EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION
),
0, // UINT32 FirmwareCtrl
0, // UINT32 Dsdt
EFI_ACPI_RESERVED_BYTE, // UINT8 Reserved0
EFI_ACPI_5_0_PM_PROFILE_UNSPECIFIED, // UINT8 PreferredPmProfile
0, // UINT16 SciInt
0, // UINT32 SmiCmd
0, // UINT8 AcpiEnable
0, // UINT8 AcpiDisable
0, // UINT8 S4BiosReq
0, // UINT8 PstateCnt
0, // UINT32 Pm1aEvtBlk
0, // UINT32 Pm1bEvtBlk
0, // UINT32 Pm1aCntBlk
0, // UINT32 Pm1bCntBlk
0, // UINT32 Pm2CntBlk
0, // UINT32 PmTmrBlk
0, // UINT32 Gpe0Blk
0, // UINT32 Gpe1Blk
0, // UINT8 Pm1EvtLen
0, // UINT8 Pm1CntLen
0, // UINT8 Pm2CntLen
0, // UINT8 PmTmrLen
0, // UINT8 Gpe0BlkLen
0, // UINT8 Gpe1BlkLen
0, // UINT8 Gpe1Base
0, // UINT8 CstCnt
0, // UINT16 PLvl2Lat
0, // UINT16 PLvl3Lat
0, // UINT16 FlushSize
0, // UINT16 FlushStride
0, // UINT8 DutyOffset
0, // UINT8 DutyWidth
0, // UINT8 DayAlrm
0, // UINT8 MonAlrm
0, // UINT8 Century
0, // UINT16 IaPcBootArch
0, // UINT8 Reserved1
EFI_ACPI_5_0_HW_REDUCED_ACPI | EFI_ACPI_5_0_LOW_POWER_S0_IDLE_CAPABLE, // UINT32 Flags
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE ResetReg
0, // UINT8 ResetValue
{EFI_ACPI_RESERVED_BYTE,EFI_ACPI_RESERVED_BYTE,EFI_ACPI_RESERVED_BYTE}, // UINT8 Reserved2[3]
0, // UINT64 XFirmwareCtrl
0, // UINT64 XDsdt
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk
NULL_GAS, // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg
NULL_GAS // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg
};
VOID*
ReferenceAcpiTable (
VOID
)
{
//
// Reference the table being generated to prevent the optimizer from removing the
// data structure from the executable
//
return (VOID*)&Fadt;
}

View File

@ -0,0 +1,70 @@
/** @file
* Generic Timer Description Table (GTDT)
*
* Copyright (c) 2012 - 2014, ARM Limited. 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 "ArmPlatform.h"
#include <Library/AcpiLib.h>
#include <Library/PcdLib.h>
#include <IndustryStandard/Acpi.h>
#define GTDT_GLOBAL_FLAGS_MAPPED EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_MEMORY_MAPPED_BLOCK_PRESENT
#define GTDT_GLOBAL_FLAGS_NOT_MAPPED 0
#define GTDT_GLOBAL_FLAGS_EDGE EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_INTERRUPT_MODE
#define GTDT_GLOBAL_FLAGS_LEVEL 0
// Note: We could have a build flag that switches between memory mapped/non-memory mapped timer
#ifdef SYSTEM_TIMER_BASE_ADDRESS
#define GTDT_GLOBAL_FLAGS (GTDT_GLOBAL_FLAGS_MAPPED | GTDT_GLOBAL_FLAGS_LEVEL)
#else
#define GTDT_GLOBAL_FLAGS (GTDT_GLOBAL_FLAGS_NOT_MAPPED | GTDT_GLOBAL_FLAGS_LEVEL)
#define SYSTEM_TIMER_BASE_ADDRESS 0
#endif
#define GTDT_TIMER_EDGE_TRIGGERED (1 << EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE)
#define GTDT_TIMER_LEVEL_TRIGGERED (0 << EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE)
#define GTDT_TIMER_ACTIVE_LOW (1 << EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY)
#define GTDT_TIMER_ACTIVE_HIGH (0 << EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY)
#define GTDT_GTIMER_FLAGS (GTDT_TIMER_ACTIVE_LOW | GTDT_TIMER_LEVEL_TRIGGERED)
EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE Gtdt = {
ARM_ACPI_HEADER(
EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE,
EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION
),
SYSTEM_TIMER_BASE_ADDRESS, // UINT64 PhysicalAddress
GTDT_GLOBAL_FLAGS, // UINT32 GlobalFlags
FixedPcdGet32 (PcdArmArchTimerSecIntrNum), // UINT32 SecurePL1TimerGSIV
GTDT_GTIMER_FLAGS, // UINT32 SecurePL1TimerFlags
FixedPcdGet32 (PcdArmArchTimerIntrNum), // UINT32 NonSecurePL1TimerGSIV
GTDT_GTIMER_FLAGS, // UINT32 NonSecurePL1TimerFlags
FixedPcdGet32 (PcdArmArchTimerVirtIntrNum), // UINT32 VirtualTimerGSIV
GTDT_GTIMER_FLAGS, // UINT32 VirtualTimerFlags
FixedPcdGet32 (PcdArmArchTimerHypIntrNum), // UINT32 NonSecurePL2TimerGSIV
GTDT_GTIMER_FLAGS // UINT32 NonSecurePL2TimerFlags
};
VOID*
ReferenceAcpiTable (
VOID
)
{
//
// Reference the table being generated to prevent the optimizer from removing the
// data structure from the exeutable
//
return (VOID*)&Gtdt;
}

View File

@ -0,0 +1,76 @@
/** @file
* Multiple APIC Description Table (MADT)
*
* Copyright (c) 2012 - 2014, ARM Limited. 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 "ArmPlatform.h"
#include <Library/AcpiLib.h>
#include <Library/PcdLib.h>
#include <IndustryStandard/Acpi.h>
#pragma pack (1)
typedef struct {
EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER Header;
EFI_ACPI_5_0_GIC_STRUCTURE GicInterfaces[FixedPcdGet32 (PcdCoreCount)];
EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE GicDistributor;
} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE;
#pragma pack ()
//
// Multiple APIC Description Table
//
EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = {
{
ARM_ACPI_HEADER (
EFI_ACPI_1_0_APIC_SIGNATURE,
EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE,
EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION
),
//
// MADT specific fields
//
0, // LocalApicAddress
0, // Flags
},
{
// Format: EFI_ACPI_5_0_GIC_STRUCTURE_INIT(GicId, AcpiCpuId, Flags, PmuIrq, GicBase)
// Note: The GIC Structure of the primary CPU must be the first entry (see note in 5.2.12.14 GIC Structure of
// ACPI v5.0).
// On Juno we can change the primary CPU changing the SCC register. It is not currently supported in the
// Trusted Firmware. When supported, we will need to code to dynamically change the ordering.
// For now we leave CPU2 (A53-0) at the first position.
// The cores from a same cluster are kept together. It is not an ACPI requirement but in case the OSPM uses
// the ACPI ARM Parking protocol, it might want to wake up the cores in the order of this table.
EFI_ACPI_5_0_GIC_STRUCTURE_INIT(2, 2, EFI_ACPI_5_0_GIC_ENABLED, 50, FixedPcdGet32 (PcdGicInterruptInterfaceBase)), // A53-0
EFI_ACPI_5_0_GIC_STRUCTURE_INIT(3, 3, EFI_ACPI_5_0_GIC_ENABLED, 54, FixedPcdGet32 (PcdGicInterruptInterfaceBase)), // A53-1
EFI_ACPI_5_0_GIC_STRUCTURE_INIT(4, 4, EFI_ACPI_5_0_GIC_ENABLED, 58, FixedPcdGet32 (PcdGicInterruptInterfaceBase)), // A53-2
EFI_ACPI_5_0_GIC_STRUCTURE_INIT(5, 5, EFI_ACPI_5_0_GIC_ENABLED, 62, FixedPcdGet32 (PcdGicInterruptInterfaceBase)), // A53-3
EFI_ACPI_5_0_GIC_STRUCTURE_INIT(0, 0, EFI_ACPI_5_0_GIC_ENABLED, 34, FixedPcdGet32 (PcdGicInterruptInterfaceBase)), // A57-0
EFI_ACPI_5_0_GIC_STRUCTURE_INIT(1, 1, EFI_ACPI_5_0_GIC_ENABLED, 38, FixedPcdGet32 (PcdGicInterruptInterfaceBase)) // A57-1
},
EFI_ACPI_5_0_GIC_DISTRIBUTOR_INIT(0, FixedPcdGet32 (PcdGicDistributorBase), 0)
};
VOID*
ReferenceAcpiTable (
VOID
)
{
//
// Reference the table being generated to prevent the optimizer from removing the
// data structure from the executable
//
return (VOID*)&Madt;
}

View File

@ -200,6 +200,7 @@
# ACPI Support # ACPI Support
# #
MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
ArmPlatformPkg/ArmJunoPkg/AcpiTables/AcpiTables.inf
MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf

View File

@ -106,6 +106,7 @@ READ_LOCK_STATUS = TRUE
# ACPI Support # ACPI Support
# #
INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf
INF RuleOverride=ACPITABLE ArmPlatformPkg/ArmJunoPkg/AcpiTables/AcpiTables.inf
INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf INF MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
@ -327,3 +328,9 @@ READ_LOCK_STATUS = TRUE
UI STRING="$(MODULE_NAME)" Optional UI STRING="$(MODULE_NAME)" Optional
VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER) VERSION STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)
} }
[Rule.Common.USER_DEFINED.ACPITABLE]
FILE FREEFORM = $(NAMED_GUID) {
RAW ACPI |.acpi
RAW ASL |.aml
}

View File

@ -52,4 +52,27 @@
#define ARM_JUNO_EXTRA_SYSTEM_MEMORY_BASE 0x0880000000 #define ARM_JUNO_EXTRA_SYSTEM_MEMORY_BASE 0x0880000000
#define ARM_JUNO_EXTRA_SYSTEM_MEMORY_SZ (SIZE_2GB + SIZE_4GB) #define ARM_JUNO_EXTRA_SYSTEM_MEMORY_SZ (SIZE_2GB + SIZE_4GB)
//
// ACPI table information used to initialize tables.
//
#define EFI_ACPI_ARM_OEM_ID 'A','R','M','L','T','D' // OEMID 6 bytes long
#define EFI_ACPI_ARM_OEM_TABLE_ID SIGNATURE_64('A','R','M','-','J','U','N','O') // OEM table id 8 bytes long
#define EFI_ACPI_ARM_OEM_REVISION 0x20140727
#define EFI_ACPI_ARM_CREATOR_ID SIGNATURE_32('A','R','M',' ')
#define EFI_ACPI_ARM_CREATOR_REVISION 0x00000099
// A macro to initialise the common header part of EFI ACPI tables as defined by
// EFI_ACPI_DESCRIPTION_HEADER structure.
#define ARM_ACPI_HEADER(Signature, Type, Revision) { \
Signature, /* UINT32 Signature */ \
sizeof (Type), /* UINT32 Length */ \
Revision, /* UINT8 Revision */ \
0, /* UINT8 Checksum */ \
{ EFI_ACPI_ARM_OEM_ID }, /* UINT8 OemId[6] */ \
EFI_ACPI_ARM_OEM_TABLE_ID, /* UINT64 OemTableId */ \
EFI_ACPI_ARM_OEM_REVISION, /* UINT32 OemRevision */ \
EFI_ACPI_ARM_CREATOR_ID, /* UINT32 CreatorId */ \
EFI_ACPI_ARM_CREATOR_REVISION /* UINT32 CreatorRevision */ \
}
#endif #endif