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