forked from xt-sys/exectos
Fixes and improvements to ACPI related structures and definitions
This commit is contained in:
parent
7f922dd864
commit
9124574bc5
@ -9,25 +9,54 @@
|
||||
#ifndef __XTDK_HLTYPES_H
|
||||
#define __XTDK_HLTYPES_H
|
||||
|
||||
#include <xtbase.h>
|
||||
#include <xtdefs.h>
|
||||
#include <xttypes.h>
|
||||
|
||||
|
||||
/* ACPI Root System Description Pointer (RSDP) signature */
|
||||
#define ACPI_RSDP_SIGNATURE 0x2052545020445352
|
||||
|
||||
/* ACPI table signatures */
|
||||
#define ACPI_APIC_SIGNATURE 0x43495041 /* MADT/APIC Description Table */
|
||||
#define ACPI_BERT_SIGNATURE 0x54524542 /* Boot Error Record Table */
|
||||
#define ACPI_BGRT_SIGNATURE 0x54524742 /* Boot Graphics Record Table */
|
||||
#define ACPI_BOOT_SIGNATURE 0x544F4F42 /* ACPI BOOT Table */
|
||||
#define ACPI_CPEP_SIGNATURE 0x50455043 /* Corrected Platform Error Polling Table */
|
||||
#define ACPI_DBG2_SIGNATURE 0x32474244 /* Debug Port Table v2 */
|
||||
#define ACPI_DBGP_SIGNATURE 0x50474244 /* Debug Port Table */
|
||||
#define ACPI_DMAR_SIGNATURE 0x52414D44 /* DMA Remapping Table */
|
||||
#define ACPI_DSDT_SIGNATURE 0x54445344 /* Differentiated System Description Table */
|
||||
#define ACPI_ECDT_SIGNATURE 0x54444345 /* Embedded Controller Description Table */
|
||||
#define ACPI_ERST_SIGNATURE 0x54535245 /* Error Record Serialization Table */
|
||||
#define ACPI_FACS_SIGNATURE 0x53434146 /* Firmware ACPI Control Structure */
|
||||
#define ACPI_FADT_SIGNATURE 0x50434146 /* Fixed ACPI Description Table */
|
||||
#define ACPI_FBPT_SIGNATURE 0x54504246 /* Firmware Boot Performance Table */
|
||||
#define ACPI_FPDT_SIGNATURE 0x54445046 /* Firmware Performance Data Table */
|
||||
#define ACPI_GTDT_SIGNATURE 0x54445447 /* Generic Timer Description Table */
|
||||
#define ACPI_HPET_SIGNATURE 0x54455048 /* High Precision Event Timer */
|
||||
#define ACPI_IVRS_SIGNATURE 0x53525649 /* AMD IOMMU Resource Table */
|
||||
#define ACPI_MADT_SIGNATURE 0x43495041 /* MADT/APIC Description Table */
|
||||
#define ACPI_MCFG_SIGNATURE 0x4746434D /* Memory Mapped Configuration Space Access Table */
|
||||
#define ACPI_MPST_SIGNATURE 0x5453504D /* Memory Power State Table*/
|
||||
#define ACPI_MSCT_SIGNATURE 0x5443534D /* Maximum System Characteristics Table */
|
||||
#define ACPI_NFIT_SIGNATURE 0x5449464E /* NVDIMM Firmware Interface Table */
|
||||
#define ACPI_PMMT_SIGNATURE 0x544D4D50 /* Platform Memory Topology Table */
|
||||
#define ACPI_PSDT_SIGNATURE 0x54445350 /* Persistent System Description Table */
|
||||
#define ACPI_RAS2_SIGNATURE 0x32534152 /* ACPI RAS2 Feature Table */
|
||||
#define ACPI_RASF_SIGNATURE 0x46534152 /* ACPI RAS Feature Table */
|
||||
#define ACPI_RSDT_SIGNATURE 0x54445352 /* Root System Description Table */
|
||||
#define ACPI_SBST_SIGNATURE 0x54534253 /* Smart Battery Subsystem Table */
|
||||
#define ACPI_SSDT_SIGNATURE 0x54445353 /* Secondary System Descriptor Table */
|
||||
#define ACPI_SDEV_SIGNATURE 0x56454453 /* Secure Device Table */
|
||||
#define ACPI_SLIT_SIGNATURE 0x54494C53 /* System Locality Distance Information Table */
|
||||
#define ACPI_SPCR_SIGNATURE 0x52435053 /* Serial Port Console Redirection Table */
|
||||
#define ACPI_SRAT_SIGNATURE 0x54415253 /* Static Resource Affinity Table */
|
||||
#define ACPI_SSDT_SIGNATURE 0x54445353 /* Secondary System Descriptor Table */
|
||||
#define ACPI_TPM2_SIGNATURE 0x324D5054 /* ACPI TPM 2.0 Table */
|
||||
#define ACPI_WAET_SIGNATURE 0x54454157 /* Windows ACPI Enlightenment Table */
|
||||
#define ACPI_WDAT_SIGNATURE 0x54414457 /* Watch Dog Action Table */
|
||||
#define ACPI_WDTT_SIGNATURE 0x54524457 /* Watchdog Timer Resource Table */
|
||||
#define ACPI_WPBT_SIGNATURE 0x54425057 /* Windows Platform Binary Table */
|
||||
#define ACPI_WSMT_SIGNATURE 0x544D5357 /* Windows SMM Security Mitigation Table */
|
||||
#define ACPI_XSDT_SIGNATURE 0x54445358 /* eXtended System Descriptor Table */
|
||||
|
||||
/* Default serial port settings */
|
||||
@ -152,10 +181,20 @@ typedef enum _HAL_APIC_MODE
|
||||
APIC_MODE_X2APIC
|
||||
} HAL_APIC_MODE, *PHAL_APIC_MODE;
|
||||
|
||||
/* Generic Address structure */
|
||||
typedef struct _GENERIC_ADDRESS
|
||||
{
|
||||
UCHAR AddressSpaceID;
|
||||
UCHAR BitWidth;
|
||||
UCHAR BitOffset;
|
||||
UCHAR Reserved;
|
||||
PHYSICAL_ADDRESS Address;
|
||||
} GENERIC_ADDRESS, *PGENERIC_ADDRESS;
|
||||
|
||||
/* Each ACPI table description header structure */
|
||||
typedef struct _ACPI_DESCRIPTION_HEADER
|
||||
{
|
||||
UCHAR Signature[4];
|
||||
ULONG Signature;
|
||||
ULONG Length;
|
||||
UCHAR Revision;
|
||||
UCHAR Checksum;
|
||||
@ -164,12 +203,19 @@ typedef struct _ACPI_DESCRIPTION_HEADER
|
||||
ULONG OemRevision;
|
||||
UCHAR CreatorID[4];
|
||||
ULONG CreatorRev;
|
||||
} PACKED ACPI_DESCRIPTION_HEADER, *PACPI_DESCRIPTION_HEADER;
|
||||
} ACPI_DESCRIPTION_HEADER, *PACPI_DESCRIPTION_HEADER;
|
||||
|
||||
/* ACPI Root System Description Table Pointer structure */
|
||||
/* ACPI cache list */
|
||||
typedef struct _ACPI_CACHE_LIST
|
||||
{
|
||||
LIST_ENTRY ListEntry;
|
||||
ACPI_DESCRIPTION_HEADER Header;
|
||||
} ACPI_CACHE_LIST, *PACPI_CACHE_LIST;
|
||||
|
||||
/* ACPI Root System Description Table Pointer (RSDP) structure */
|
||||
typedef struct _ACPI_RSDP
|
||||
{
|
||||
UCHAR Signature[8];
|
||||
ULONGLONG Signature;
|
||||
UCHAR Checksum;
|
||||
UCHAR OemId[6];
|
||||
UCHAR Revision;
|
||||
@ -178,15 +224,82 @@ typedef struct _ACPI_RSDP
|
||||
ULONGLONG XsdtAddress;
|
||||
UCHAR XChecksum;
|
||||
UCHAR Reserved[3];
|
||||
} PACKED ACPI_RSDP, *PACPI_RSDP;
|
||||
} ACPI_RSDP, *PACPI_RSDP;
|
||||
|
||||
/* ACPI Root System Description Table structure */
|
||||
/* ACPI Root System Description Table (RSDT) structure */
|
||||
typedef struct _ACPI_RSDT
|
||||
{
|
||||
ACPI_DESCRIPTION_HEADER Header;
|
||||
UCHAR Entries[];
|
||||
ULONG Tables[];
|
||||
} PACKED ACPI_RSDT, *PACPI_RSDT;
|
||||
|
||||
/* ACPI eXtended Root System Description Table (XSDT) structure */
|
||||
typedef struct _ACPI_XSDT
|
||||
{
|
||||
ACPI_DESCRIPTION_HEADER Header;
|
||||
ULONGLONG Tables[];
|
||||
} PACKED ACPI_XSDT, *PACPI_XSDT;
|
||||
|
||||
/* Fixed ACPI Description Table (FADT) structure */
|
||||
typedef struct _ACPI_FADT
|
||||
{
|
||||
ACPI_DESCRIPTION_HEADER Header;
|
||||
ULONG Facs;
|
||||
ULONG Dsdt;
|
||||
UCHAR IntModel;
|
||||
UCHAR PmProfile;
|
||||
USHORT SciIntVector;
|
||||
ULONG SmiCmdIoPort;
|
||||
UCHAR AcpiOnValue;
|
||||
UCHAR AcpiOffValue;
|
||||
UCHAR S4BiosReq;
|
||||
UCHAR PStateControl;
|
||||
ULONG Pm1aEvtBlkIoPort;
|
||||
ULONG Pm1bEvtBlkIoPort;
|
||||
ULONG Pm1aCtrlBlkIoPort;
|
||||
ULONG Pm1bCtrlBlkIoPort;
|
||||
ULONG Pm2CtrlBlkIoPort;
|
||||
ULONG PmTmrBlkIoPort;
|
||||
ULONG Gp0BlkIoPort;
|
||||
ULONG Gp1BlkIoPort;
|
||||
UCHAR Pm1EvtLen;
|
||||
UCHAR Pm1CtrlLen;
|
||||
UCHAR Pm2CtrlLen;
|
||||
UCHAR PmTmrLen;
|
||||
UCHAR Gp0BlkLen;
|
||||
UCHAR Gp1BlkLen;
|
||||
UCHAR Gp1Base;
|
||||
UCHAR CStateControl;
|
||||
USHORT Lvl2Latency;
|
||||
USHORT Lvl3Latency;
|
||||
USHORT FlushSize;
|
||||
USHORT FlushStride;
|
||||
UCHAR DutyOffset;
|
||||
UCHAR DutyWidth;
|
||||
UCHAR DayAlarmIndex;
|
||||
UCHAR MonthAlarmIndex;
|
||||
UCHAR CenturyAlarmIndex;
|
||||
USHORT BootArch;
|
||||
UCHAR Reserved0;
|
||||
ULONG Flags;
|
||||
GENERIC_ADDRESS ResetReg;
|
||||
UCHAR ResetVal;
|
||||
USHORT ArmBootArch;
|
||||
UCHAR Reserved1;
|
||||
PHYSICAL_ADDRESS XFirmwareCtrl;
|
||||
PHYSICAL_ADDRESS XDsdt;
|
||||
GENERIC_ADDRESS XPm1aEvtBlk;
|
||||
GENERIC_ADDRESS XPm1bEvtBlk;
|
||||
GENERIC_ADDRESS XPm1aCtrlBlk;
|
||||
GENERIC_ADDRESS XPm1bCtrlBlk;
|
||||
GENERIC_ADDRESS XPm2CtrlBlk;
|
||||
GENERIC_ADDRESS XPmTmrBlk;
|
||||
GENERIC_ADDRESS XGp0Blk;
|
||||
GENERIC_ADDRESS XGp1Blk;
|
||||
GENERIC_ADDRESS SleepControlReg;
|
||||
GENERIC_ADDRESS SleepStatusReg;
|
||||
} ACPI_FADT, *PACPI_FADT;
|
||||
|
||||
/* Serial (COM) port initial state */
|
||||
typedef struct _CPPORT
|
||||
{
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
/* Enumeration lists forward references */
|
||||
typedef enum _ADJUST_REASON ADJUST_REASON, *PADJUST_REASON;
|
||||
typedef enum _APIC_REGISTER APIC_REGISTER, *PAPIC_REGISTER;
|
||||
typedef enum _BOOLEAN BOOLEAN, *PBOOLEAN;
|
||||
typedef enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION, *PEXCEPTION_DISPOSITION;
|
||||
typedef enum _EFI_ALLOCATE_TYPE EFI_ALLOCATE_TYPE, *PEFI_ALLOCATE_TYPE;
|
||||
@ -39,6 +40,7 @@ typedef enum _EFI_TIMER_DELAY EFI_TIMER_DELAY, *PEFI_TIMER_DELAY;
|
||||
typedef enum _EFI_UART_PARITY_TYPE EFI_UART_PARITY_TYPE, *PEFI_UART_PARITY_TYPE;
|
||||
typedef enum _EFI_UART_STOP_BITS_TYPE EFI_UART_STOP_BITS_TYPE, *PEFI_UART_STOP_BITS_TYPE;
|
||||
typedef enum _EFI_UNIVERSA_GRAPHICS_BLT_OPERATION EFI_UNIVERSA_GRAPHICS_BLT_OPERATION, *PEFI_UNIVERSA_GRAPHICS_BLT_OPERATION;
|
||||
typedef enum _HAL_APIC_MODE HAL_APIC_MODE, *PHAL_APIC_MODE;
|
||||
typedef enum _KAPC_ENVIRONMENT KAPC_ENVIRONMENT, *PKAPC_ENVIRONMENT;
|
||||
typedef enum _KDPC_IMPORTANCE KDPC_IMPORTANCE, *PKDPC_IMPORTANCE;
|
||||
typedef enum _KEVENT_TYPE KEVENT_TYPE, *PKEVENT_TYPE;
|
||||
@ -52,9 +54,12 @@ typedef enum _SYSTEM_FIRMWARE_TYPE SYSTEM_FIRMWARE_TYPE, *PSYSTEM_FIRMWARE_TYPE;
|
||||
typedef enum _WAIT_TYPE WAIT_TYPE, *PWAIT_TYPE;
|
||||
|
||||
/* Structures forward references */
|
||||
typedef struct _ACPI_CACHE_LIST ACPI_CACHE_LIST, *PACPI_CACHE_LIST;
|
||||
typedef struct _ACPI_DESCRIPTION_HEADER ACPI_DESCRIPTION_HEADER, *PACPI_DESCRIPTION_HEADER;
|
||||
typedef struct _ACPI_FADT ACPI_FADT, *PACPI_FADT;
|
||||
typedef struct _ACPI_RSDP ACPI_RSDP, *PACPI_RSDP;
|
||||
typedef struct _ACPI_RSDT ACPI_RSDT, *PACPI_RSDT;
|
||||
typedef struct _ACPI_XSDT ACPI_XSDT, *PACPI_XSDT;
|
||||
typedef struct _ANSI_STRING ANSI_STRING, *PANSI_STRING;
|
||||
typedef struct _ANSI_STRING32 ANSI_STRING32, *PANSI_STRING32;
|
||||
typedef struct _ANSI_STRING64 ANSI_STRING64, *PANSI_STRING64;
|
||||
@ -221,7 +226,9 @@ typedef struct _EXCEPTION_RECORD EXCEPTION_RECORD, *PEXCEPTION_RECORD;
|
||||
typedef struct _EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION_RECORD, *PEXCEPTION_REGISTRATION_RECORD;
|
||||
typedef struct _FIRMWARE_INFORMATION_BLOCK FIRMWARE_INFORMATION_BLOCK, *PFIRMWARE_INFORMATION_BLOCK;
|
||||
typedef struct _FLOAT128 FLOAT128, *PFLOAT128;
|
||||
typedef struct _GENERIC_ADDRESS GENERIC_ADDRESS, *PGENERIC_ADDRESS;
|
||||
typedef struct _GUID GUID, *PGUID;
|
||||
typedef struct _HAL_FRAMEBUFFER_DATA HAL_FRAMEBUFFER_DATA, *PHAL_FRAMEBUFFER_DATA;
|
||||
typedef struct _KAPC KAPC, *PKAPC;
|
||||
typedef struct _KAPC_STATE KAPC_STATE, *PKAPC_STATE;
|
||||
typedef struct _KDPC KDPC, *PKDPC;
|
||||
@ -278,6 +285,8 @@ typedef struct _PECOFF_IMAGE_SECTION_HEADER PECOFF_IMAGE_SECTION_HEADER, *PPECOF
|
||||
typedef struct _PECOFF_IMAGE_VXD_HEADER PECOFF_IMAGE_VXD_HEADER, *PPECOFF_IMAGE_VXD_HEADER;
|
||||
typedef struct _PROCESSOR_POWER_STATE PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE;
|
||||
typedef struct _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
|
||||
typedef struct _SMBIOS_TABLE_HEADER SMBIOS_TABLE_HEADER, *PSMBIOS_TABLE_HEADER;
|
||||
typedef struct _SMBIOS3_TABLE_HEADER SMBIOS3_TABLE_HEADER, *PSMBIOS3_TABLE_HEADER;
|
||||
typedef struct _STRING STRING, *PSTRING;
|
||||
typedef struct _STRING32 STRING32, *PSTRING32;
|
||||
typedef struct _STRING64 STRING64, *PSTRING64;
|
||||
|
@ -118,12 +118,12 @@ AcGetAcpiTable(IN CONST UINT Signature,
|
||||
if(Xsdp)
|
||||
{
|
||||
/* Get table header from XSDT */
|
||||
TableHeader = (PACPI_DESCRIPTION_HEADER)(ULONG_PTR)((PULONGLONG)Rsdt->Entries)[RsdtIndex];
|
||||
TableHeader = (PACPI_DESCRIPTION_HEADER)(ULONG_PTR)((PULONGLONG)Rsdt->Tables)[RsdtIndex];
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Get table header from RSDT */
|
||||
TableHeader = (PACPI_DESCRIPTION_HEADER)(ULONG_PTR)((PULONG)Rsdt->Entries)[RsdtIndex];
|
||||
TableHeader = (PACPI_DESCRIPTION_HEADER)(ULONG_PTR)((PULONG)Rsdt->Tables)[RsdtIndex];
|
||||
}
|
||||
|
||||
/* Make sure table header exists */
|
||||
@ -148,7 +148,7 @@ AcGetAcpiTable(IN CONST UINT Signature,
|
||||
}
|
||||
|
||||
/* Verify table signature and checksum */
|
||||
if((*(PLONG)TableHeader->Signature == Signature) && (AcpChecksumTable(TableHeader, TableHeader->Length) == 0))
|
||||
if((TableHeader->Signature == Signature) && (AcpChecksumTable(TableHeader, TableHeader->Length) == 0))
|
||||
{
|
||||
/* Found valid ACPI table */
|
||||
*AcpiTable = TableHeader;
|
||||
|
Loading…
Reference in New Issue
Block a user