| /** @file | |
| This is an implementation of the ACPI platform driver. Requirements for | |
| this driver are defined in the Tiano ACPI External Product Specification, | |
| revision 0.3.6. | |
| Copyright (c) 2013-2015 Intel Corporation. | |
| 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. | |
| **/ | |
| #ifndef _ACPI_PLATFORM_H_ | |
| #define _ACPI_PLATFORM_H_ | |
| // | |
| // Statements that include other header files | |
| // | |
| #include <PiDxe.h> | |
| #include <IntelQNCDxe.h> | |
| #include <Platform.h> | |
| #include <PlatformBoards.h> | |
| #include <Ioh.h> | |
| #include <QNCCommonDefinitions.h> | |
| #include <Protocol/GlobalNvsArea.h> | |
| #include <Protocol/MpService.h> | |
| #include <Protocol/AcpiSystemDescriptionTable.h> | |
| #include <Protocol/FirmwareVolume2.h> | |
| #include <Library/UefiDriverEntryPoint.h> | |
| #include <Library/UefiBootServicesTableLib.h> | |
| #include <Library/UefiRuntimeServicesTableLib.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/IoLib.h> | |
| #include <Library/PcdLib.h> | |
| #include <Library/UefiLib.h> | |
| #include <Library/DxeServicesLib.h> | |
| #include <Library/DevicePathLib.h> | |
| #include <Library/MemoryAllocationLib.h> | |
| #include <Library/QNCAccessLib.h> | |
| #include <Library/PlatformHelperLib.h> | |
| #include <IndustryStandard/Acpi.h> | |
| #include <IndustryStandard/HighPrecisionEventTimerTable.h> | |
| #include <IndustryStandard/MemoryMappedConfigurationSpaceAccessTable.h> | |
| #include "Madt.h" | |
| #include "AcpiPciUpdate.h" | |
| #pragma pack(1) | |
| typedef struct { | |
| UINT8 StartByte; | |
| UINT32 NameStr; | |
| UINT8 OpCode; | |
| UINT16 Size; // Hardcode to 16bit width because the table we use is fixed size | |
| UINT8 NumEntries; | |
| } EFI_ACPI_NAME_COMMAND; | |
| typedef struct { | |
| UINT8 PackageOp; | |
| UINT8 PkgLeadByte; | |
| UINT8 NumEntries; | |
| UINT8 DwordPrefix0; | |
| UINT32 CoreFreq; | |
| UINT8 DwordPrefix1; | |
| UINT32 Power; | |
| UINT8 DwordPrefix2; | |
| UINT32 TransLatency; | |
| UINT8 DwordPrefix3; | |
| UINT32 BMLatency; | |
| UINT8 DwordPrefix4; | |
| UINT32 Control; | |
| UINT8 DwordPrefix5; | |
| UINT32 Status; | |
| } EFI_PSS_PACKAGE; | |
| #pragma pack() | |
| #define AML_NAME_OP 0x08 | |
| #define AML_METHOD_OP 0x14 | |
| #define AML_OPREGION_OP 0x80 | |
| #define AML_PACKAGE_OP 0x12 // Package operator. | |
| // | |
| // ACPI table information used to initialize tables. | |
| // | |
| #define EFI_ACPI_OEM_ID "INTEL " | |
| #define EFI_ACPI_OEM_TABLE_ID 0x2020204F4E414954ULL // "TIANO " | |
| #define EFI_ACPI_OEM_REVISION 0x00000002 | |
| #define EFI_ACPI_CREATOR_ID 0x5446534D // "MSFT" | |
| #define EFI_ACPI_CREATOR_REVISION 0x01000013 | |
| #define ACPI_COMPATIBLE_1_0 0 | |
| #define ACPI_COMPATIBLE_2_0 1 | |
| #define ACPI_COMPATIBLE_3_0 2 | |
| // | |
| // Private Driver Data | |
| // | |
| // | |
| // Define Union of IO APIC & Local APIC structure; | |
| // | |
| typedef union { | |
| EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE AcpiLocalApic; | |
| EFI_ACPI_2_0_IO_APIC_STRUCTURE AcpiIoApic; | |
| struct { | |
| UINT8 Type; | |
| UINT8 Length; | |
| } AcpiApicCommon; | |
| } ACPI_APIC_STRUCTURE_PTR; | |
| #endif |