Home | History | Annotate | Download | only in IndustryStandard
      1 /** @file
      2   ACPI Low Power Idle Table (LPIT) definitions
      3 
      4   Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
      5   This program and the accompanying materials
      6   are licensed and made available under the terms and conditions of the BSD License
      7   which accompanies this distribution.  The full text of the license may be found at
      8   http://opensource.org/licenses/bsd-license.php
      9 
     10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     12 
     13   @par Revision Reference:
     14     - ACPI Low Power Idle Table (LPIT) Revision 001, dated July 2014
     15       http://www.uefi.org/sites/default/files/resources/ACPI_Low_Power_Idle_Table.pdf
     16 
     17   @par Glossary:
     18     - GAS - Generic Address Structure
     19     - LPI - Low Power Idle
     20 **/
     21 #ifndef _LOW_POWER_IDLE_TABLE_H_
     22 #define _LOW_POWER_IDLE_TABLE_H_
     23 
     24 #include <IndustryStandard/Acpi.h>
     25 
     26 #pragma pack(1)
     27 
     28 ///
     29 /// LPI Structure Types
     30 ///
     31 #define ACPI_LPI_STRUCTURE_TYPE_NATIVE_CSTATE     0x00
     32 
     33 ///
     34 /// Low Power Idle (LPI) State Flags
     35 ///
     36 typedef union {
     37   struct {
     38     UINT32 Disabled           : 1;  ///< If set, LPI state is not used
     39     /**
     40       If set, Residency counter is not available for this LPI state and
     41       Residency Counter Frequency is invalid
     42     **/
     43     UINT32 CounterUnavailable : 1;
     44     UINT32 Reserved           : 30; ///< Reserved for future use. Must be zero
     45   } Bits;
     46   UINT32 Data32;
     47 } ACPI_LPI_STATE_FLAGS;
     48 
     49 ///
     50 /// Low Power Idle (LPI) structure with Native C-state instruction entry trigger descriptor
     51 ///
     52 typedef struct {
     53   UINT32                                  Type;   ///< LPI State descriptor Type 0
     54   UINT32                                  Length; ///< Length of LPI state Descriptor Structure
     55   ///
     56   /// Unique LPI state identifier: zero based, monotonically increasing identifier
     57   ///
     58   UINT16                                  UniqueId;
     59   UINT8                                   Reserved[2];  ///< Must be Zero
     60   ACPI_LPI_STATE_FLAGS                    Flags;        ///< LPI state flags
     61   /**
     62     The LPI entry trigger, matching an existing _CST.Register object, represented as a
     63     Generic Address Structure. All processors must request this state or deeper to trigger.
     64   **/
     65   EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE  EntryTrigger;
     66   UINT32                                  Residency;  ///< Minimum residency or break-even in uSec
     67   UINT32                                  Latency;    ///< Worst case exit latency in uSec
     68   /**
     69     [optional] Residency counter, represented as a Generic Address Structure.
     70     If not present, Flags[1] bit should be set.
     71   **/
     72   EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE  ResidencyCounter;
     73   /**
     74     [optional] Residency counter frequency in cycles per second. Value 0 indicates that
     75     counter runs at TSC frequency. Valid only if Residency Counter is present.
     76   **/
     77   UINT64                                  ResidencyCounterFrequency;
     78 } ACPI_LPI_NATIVE_CSTATE_DESCRIPTOR;
     79 
     80 #pragma pack()
     81 
     82 #endif
     83