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