1 /** @file 2 ACPI 1.0b definitions from the ACPI Specification, revision 1.0b 3 4 Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR> 5 6 This program and the accompanying materials are licensed and made available 7 under the terms and conditions of the BSD License which accompanies this 8 distribution. The full text of the license may be found at 9 http://opensource.org/licenses/bsd-license.php 10 11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 14 **/ 15 16 #ifndef _ACPI_1_0_H_ 17 #define _ACPI_1_0_H_ 18 19 #include "IndustryStandard/Acpi.h" 20 21 // 22 // Ensure proper structure formats 23 // 24 #pragma pack(1) 25 // 26 // ACPI 1.0b table structures 27 // 28 // 29 // Root System Description Pointer Structure 30 // 31 typedef struct { 32 UINT64 Signature; 33 UINT8 Checksum; 34 UINT8 OemId[6]; 35 UINT8 Reserved; 36 UINT32 RsdtAddress; 37 } EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER; 38 39 // 40 // Root System Description Table 41 // No definition needed as it is a common description table header followed by a 42 // variable number of UINT32 table pointers. 43 // 44 // 45 // RSDT Revision (as defined in ACPI 1.0b spec.) 46 // 47 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 48 49 // 50 // Fixed ACPI Description Table Structure (FADT) 51 // 52 typedef struct { 53 EFI_ACPI_DESCRIPTION_HEADER Header; 54 UINT32 FirmwareCtrl; 55 UINT32 Dsdt; 56 UINT8 IntModel; 57 UINT8 Reserved1; 58 UINT16 SciInt; 59 UINT32 SmiCmd; 60 UINT8 AcpiEnable; 61 UINT8 AcpiDisable; 62 UINT8 S4BiosReq; 63 UINT8 Reserved2; 64 UINT32 Pm1aEvtBlk; 65 UINT32 Pm1bEvtBlk; 66 UINT32 Pm1aCntBlk; 67 UINT32 Pm1bCntBlk; 68 UINT32 Pm2CntBlk; 69 UINT32 PmTmrBlk; 70 UINT32 Gpe0Blk; 71 UINT32 Gpe1Blk; 72 UINT8 Pm1EvtLen; 73 UINT8 Pm1CntLen; 74 UINT8 Pm2CntLen; 75 UINT8 PmTmLen; 76 UINT8 Gpe0BlkLen; 77 UINT8 Gpe1BlkLen; 78 UINT8 Gpe1Base; 79 UINT8 Reserved3; 80 UINT16 PLvl2Lat; 81 UINT16 PLvl3Lat; 82 UINT16 FlushSize; 83 UINT16 FlushStride; 84 UINT8 DutyOffset; 85 UINT8 DutyWidth; 86 UINT8 DayAlrm; 87 UINT8 MonAlrm; 88 UINT8 Century; 89 UINT8 Reserved4; 90 UINT8 Reserved5; 91 UINT8 Reserved6; 92 UINT32 Flags; 93 } EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE; 94 95 // 96 // FADT Version (as defined in ACPI 1.0b spec.) 97 // 98 #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01 99 100 // 101 // Fixed ACPI Description Table Fixed Feature Flags 102 // All other bits are reserved and must be set to 0. 103 // 104 #define EFI_ACPI_1_0_WBINVD (1 << 0) 105 #define EFI_ACPI_1_0_WBINVD_FLUSH (1 << 1) 106 #define EFI_ACPI_1_0_PROC_C1 (1 << 2) 107 #define EFI_ACPI_1_0_P_LVL2_UP (1 << 3) 108 #define EFI_ACPI_1_0_PWR_BUTTON (1 << 4) 109 #define EFI_ACPI_1_0_SLP_BUTTON (1 << 5) 110 #define EFI_ACPI_1_0_FIX_RTC (1 << 6) 111 #define EFI_ACPI_1_0_RTC_S4 (1 << 7) 112 #define EFI_ACPI_1_0_TMR_VAL_EXT (1 << 8) 113 #define EFI_ACPI_1_0_DCK_CAP (1 << 9) 114 115 #define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x0 116 // 117 // Firmware ACPI Control Structure 118 // 119 typedef struct { 120 UINT32 Signature; 121 UINT32 Length; 122 UINT32 HardwareSignature; 123 UINT32 FirmwareWakingVector; 124 UINT32 GlobalLock; 125 UINT32 Flags; 126 UINT8 Reserved[40]; 127 } EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; 128 129 // 130 // Firmware Control Structure Feature Flags 131 // All other bits are reserved and must be set to 0. 132 // 133 #define EFI_ACPI_1_0_S4BIOS_F (1 << 0) 134 135 // 136 // Multiple APIC Description Table header definition. The rest of the table 137 // must be defined in a platform specific manner. 138 // 139 typedef struct { 140 EFI_ACPI_DESCRIPTION_HEADER Header; 141 UINT32 LocalApicAddress; 142 UINT32 Flags; 143 } EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; 144 145 // 146 // MADT Revision (as defined in ACPI 1.0b spec.) 147 // 148 #define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01 149 150 // 151 // Multiple APIC Flags 152 // All other bits are reserved and must be set to 0. 153 // 154 #define EFI_ACPI_1_0_PCAT_COMPAT (1 << 0) 155 156 // 157 // Multiple APIC Description Table APIC structure types 158 // All other values between 0x09 an 0xFF are reserved and 159 // will be ignored by OSPM. 160 // 161 #define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00 162 #define EFI_ACPI_1_0_IO_APIC 0x01 163 #define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02 164 #define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 165 #define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04 166 167 // 168 // APIC Structure Definitions 169 // 170 // 171 // Processor Local APIC Structure Definition 172 // 173 typedef struct { 174 UINT8 Type; 175 UINT8 Length; 176 UINT8 AcpiProcessorId; 177 UINT8 ApicId; 178 UINT32 Flags; 179 } EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE; 180 181 // 182 // Local APIC Flags. All other bits are reserved and must be 0. 183 // 184 #define EFI_ACPI_1_0_LOCAL_APIC_ENABLED (1 << 0) 185 186 // 187 // IO APIC Structure 188 // 189 typedef struct { 190 UINT8 Type; 191 UINT8 Length; 192 UINT8 IoApicId; 193 UINT8 Reserved; 194 UINT32 IoApicAddress; 195 UINT32 SystemVectorBase; 196 } EFI_ACPI_1_0_IO_APIC_STRUCTURE; 197 198 // 199 // Interrupt Source Override Structure 200 // 201 typedef struct { 202 UINT8 Type; 203 UINT8 Length; 204 UINT8 Bus; 205 UINT8 Source; 206 UINT32 GlobalSystemInterruptVector; 207 UINT16 Flags; 208 } EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; 209 210 // 211 // Non-Maskable Interrupt Source Structure 212 // 213 typedef struct { 214 UINT8 Type; 215 UINT8 Length; 216 UINT16 Flags; 217 UINT32 GlobalSystemInterruptVector; 218 } EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; 219 220 // 221 // Local APIC NMI Structure 222 // 223 typedef struct { 224 UINT8 Type; 225 UINT8 Length; 226 UINT8 AcpiProcessorId; 227 UINT16 Flags; 228 UINT8 LocalApicInti; 229 } EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE; 230 231 // 232 // Smart Battery Description Table (SBST) 233 // 234 typedef struct { 235 EFI_ACPI_DESCRIPTION_HEADER Header; 236 UINT32 WarningEnergyLevel; 237 UINT32 LowEnergyLevel; 238 UINT32 CriticalEnergyLevel; 239 } EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE; 240 241 // 242 // Known table signatures 243 // 244 // 245 // "RSD PTR " Root System Description Pointer 246 // 247 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE 0x2052545020445352ULL 248 249 // 250 // "APIC" Multiple APIC Description Table 251 // 252 #define EFI_ACPI_1_0_APIC_SIGNATURE 0x43495041 253 254 // 255 // "DSDT" Differentiated System Description Table 256 // 257 #define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445344 258 259 // 260 // "FACS" Firmware ACPI Control Structure 261 // 262 #define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE 0x53434146 263 264 // 265 // "FACP" Fixed ACPI Description Table 266 // 267 #define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE 0x50434146 268 269 // 270 // "PSDT" Persistent System Description Table 271 // 272 #define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445350 273 274 // 275 // "RSDT" Root System Description Table 276 // 277 #define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445352 278 279 // 280 // "SBST" Smart Battery Specification Table 281 // 282 #define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE 0x54534253 283 284 // 285 // "SSDT" Secondary System Description Table 286 // 287 #define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445353 288 289 #pragma pack() 290 291 #endif 292