Home | Info | Community | Development | myReactOS | Contact Us
00001 /* 00002 * PROJECT: ReactOS PCI Bus Driver 00003 * LICENSE: BSD - See COPYING.ARM in the top level directory 00004 * FILE: include/reactos/drivers/acpi/acpi.h 00005 * PURPOSE: ACPI Tables and NT Registry Data 00006 * PROGRAMMERS: ReactOS Portable Systems Group 00007 */ 00008 00009 // 00010 // ACPI BIOS Registry Component Configuration Data 00011 // 00012 typedef struct _ACPI_E820_ENTRY 00013 { 00014 PHYSICAL_ADDRESS Base; 00015 LARGE_INTEGER Length; 00016 ULONGLONG Type; 00017 } ACPI_E820_ENTRY, *PACPI_E820_ENTRY; 00018 00019 typedef struct _ACPI_BIOS_MULTI_NODE 00020 { 00021 PHYSICAL_ADDRESS RsdtAddress; 00022 ULONGLONG Count; 00023 ACPI_E820_ENTRY E820Entry[1]; 00024 } ACPI_BIOS_MULTI_NODE, *PACPI_BIOS_MULTI_NODE; 00025 00026 // 00027 // ACPI Signatures 00028 // 00029 #define RSDP_SIGNATURE 0x2052545020445352 // "RSD PTR " 00030 #define FACS_SIGNATURE 0x53434146 // "FACS" 00031 #define FADT_SIGNATURE 0x50434146 // "FACP" 00032 #define RSDT_SIGNATURE 0x54445352 // "RSDT" 00033 #define APIC_SIGNATURE 0x43495041 // "APIC" 00034 #define DSDT_SIGNATURE 0x54445344 // "DSDT" 00035 #define SSDT_SIGNATURE 0x54445353 // "SSDT" 00036 #define PSDT_SIGNATURE 0x54445350 // "PSDT" 00037 #define SBST_SIGNATURE 0x54534253 // "SBST" 00038 #define DBGP_SIGNATURE 0x50474244 // "DBGP" 00039 #define XSDT_SIGNATURE 'TDSX' 00040 #define BOOT_SIGNATURE 'TOOB' 00041 #define SRAT_SIGNATURE 'TARS' 00042 #define WDRT_SIGNATURE 'TRDW' 00043 00044 // 00045 // FADT Flags 00046 // 00047 #define ACPI_TMR_VAL_EXT 0x100 00048 00049 // 00050 // ACPI Generic Register Address 00051 // 00052 typedef struct _GEN_ADDR 00053 { 00054 UCHAR AddressSpaceID; 00055 UCHAR BitWidth; 00056 UCHAR BitOffset; 00057 UCHAR Reserved; 00058 PHYSICAL_ADDRESS Address; 00059 } GEN_ADDR, *PGEN_ADDR; 00060 00061 // 00062 // ACPI BIOS Structures (packed) 00063 // 00064 #include <pshpack1.h> 00065 typedef struct _RSDP 00066 { 00067 ULONGLONG Signature; 00068 UCHAR Checksum; 00069 UCHAR OEMID[6]; 00070 UCHAR Reserved[1]; 00071 ULONG RsdtAddress; 00072 } RSDP; 00073 typedef RSDP *PRSDP; 00074 00075 typedef struct _DESCRIPTION_HEADER 00076 { 00077 ULONG Signature; 00078 ULONG Length; 00079 UCHAR Revision; 00080 UCHAR Checksum; 00081 UCHAR OEMID[6]; 00082 UCHAR OEMTableID[8]; 00083 ULONG OEMRevision; 00084 UCHAR CreatorID[4]; 00085 ULONG CreatorRev; 00086 } DESCRIPTION_HEADER; 00087 typedef DESCRIPTION_HEADER *PDESCRIPTION_HEADER; 00088 00089 typedef struct _FACS 00090 { 00091 ULONG Signature; 00092 ULONG Length; 00093 ULONG HardwareSignature; 00094 ULONG pFirmwareWakingVector; 00095 ULONG GlobalLock; 00096 ULONG Flags; 00097 PHYSICAL_ADDRESS x_FirmwareWakingVector; 00098 UCHAR version; 00099 UCHAR Reserved[32]; 00100 } FACS; 00101 typedef FACS *PFACS; 00102 00103 typedef struct _FADT 00104 { 00105 DESCRIPTION_HEADER Header; 00106 ULONG facs; 00107 ULONG dsdt; 00108 UCHAR int_model; 00109 UCHAR pm_profile; 00110 USHORT sci_int_vector; 00111 ULONG smi_cmd_io_port; 00112 UCHAR acpi_on_value; 00113 UCHAR acpi_off_value; 00114 UCHAR s4bios_req; 00115 UCHAR pstate_control; 00116 ULONG pm1a_evt_blk_io_port; 00117 ULONG pm1b_evt_blk_io_port; 00118 ULONG pm1a_ctrl_blk_io_port; 00119 ULONG pm1b_ctrl_blk_io_port; 00120 ULONG pm2_ctrl_blk_io_port; 00121 ULONG pm_tmr_blk_io_port; 00122 ULONG gp0_blk_io_port; 00123 ULONG gp1_blk_io_port; 00124 UCHAR pm1_evt_len; 00125 UCHAR pm1_ctrl_len; 00126 UCHAR pm2_ctrl_len; 00127 UCHAR pm_tmr_len; 00128 UCHAR gp0_blk_len; 00129 UCHAR gp1_blk_len; 00130 UCHAR gp1_base; 00131 UCHAR cstate_control; 00132 USHORT lvl2_latency; 00133 USHORT lvl3_latency; 00134 USHORT flush_size; 00135 USHORT flush_stride; 00136 UCHAR duty_offset; 00137 UCHAR duty_width; 00138 UCHAR day_alarm_index; 00139 UCHAR month_alarm_index; 00140 UCHAR century_alarm_index; 00141 USHORT boot_arch; 00142 UCHAR reserved3[1]; 00143 ULONG flags; 00144 GEN_ADDR reset_reg; 00145 UCHAR reset_val; 00146 UCHAR reserved4[3]; 00147 PHYSICAL_ADDRESS x_firmware_ctrl; 00148 PHYSICAL_ADDRESS x_dsdt; 00149 GEN_ADDR x_pm1a_evt_blk; 00150 GEN_ADDR x_pm1b_evt_blk; 00151 GEN_ADDR x_pm1a_ctrl_blk; 00152 GEN_ADDR x_pm1b_ctrl_blk; 00153 GEN_ADDR x_pm2_ctrl_blk; 00154 GEN_ADDR x_pm_tmr_blk; 00155 GEN_ADDR x_gp0_blk; 00156 GEN_ADDR x_gp1_blk; 00157 } FADT; 00158 typedef FADT *PFADT; 00159 00160 typedef struct _DSDT 00161 { 00162 DESCRIPTION_HEADER Header; 00163 UCHAR DiffDefBlock[ANYSIZE_ARRAY]; 00164 } DSDT; 00165 typedef DSDT *PDSDT; 00166 00167 typedef struct _RSDT 00168 { 00169 DESCRIPTION_HEADER Header; 00170 ULONG Tables[ANYSIZE_ARRAY]; 00171 } RSDT; 00172 typedef RSDT *PRSDT; 00173 00174 typedef struct _XSDT 00175 { 00176 DESCRIPTION_HEADER Header; 00177 PHYSICAL_ADDRESS Tables[ANYSIZE_ARRAY]; 00178 } XSDT; 00179 typedef XSDT *PXSDT; 00180 #include <poppack.h> 00181 00182 // 00183 // Microsoft-specific (pretty much) ACPI Tables, normal MS ABI packing 00184 // 00185 typedef struct _DEBUG_PORT_TABLE 00186 { 00187 DESCRIPTION_HEADER Header; 00188 UCHAR InterfaceType; 00189 UCHAR Reserved[3]; 00190 GEN_ADDR BaseAddress; 00191 } DEBUG_PORT_TABLE, *PDEBUG_PORT_TABLE; 00192 00193 typedef struct _WATCHDOG_TABLE 00194 { 00195 DESCRIPTION_HEADER Header; 00196 GEN_ADDR ControlRegister; 00197 GEN_ADDR CountRegister; 00198 USHORT PciDeviceId; 00199 USHORT PciVendorId; 00200 UCHAR PciBus; 00201 UCHAR PciDevice; 00202 UCHAR PciFunction; 00203 UCHAR PciSegment; 00204 USHORT MaxCount; 00205 UCHAR Units; 00206 } WATCHDOG_TABLE, *PWATCHDOG_TABLE; 00207 00208 typedef struct _BOOT_TABLE 00209 { 00210 DESCRIPTION_HEADER Header; 00211 UCHAR CMOSIndex; 00212 UCHAR Reserved[3]; 00213 } BOOT_TABLE, *PBOOT_TABLE; 00214 00215 typedef struct _ACPI_SRAT 00216 { 00217 DESCRIPTION_HEADER Header; 00218 UCHAR TableRevision; 00219 ULONG Reserved[2]; 00220 } ACPI_SRAT, *PACPI_SRAT; 00221 00222 /* EOF */