• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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