Home | History | Annotate | Download | only in IndustryStandard
      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