| /** @file |
| ACPI Low Power Idle Table (LPIT) definitions |
| |
| Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> |
| This program and the accompanying materials |
| are licensed and made available under the terms and conditions of the BSD License |
| which accompanies this distribution. The full text of the license may be found at |
| http://opensource.org/licenses/bsd-license.php |
| |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. |
| |
| @par Revision Reference: |
| - ACPI Low Power Idle Table (LPIT) Revision 001, dated July 2014 |
| http://www.uefi.org/sites/default/files/resources/ACPI_Low_Power_Idle_Table.pdf |
| |
| @par Glossary: |
| - GAS - Generic Address Structure |
| - LPI - Low Power Idle |
| **/ |
| #ifndef _LOW_POWER_IDLE_TABLE_H_ |
| #define _LOW_POWER_IDLE_TABLE_H_ |
| |
| #include <IndustryStandard/Acpi.h> |
| |
| #pragma pack(1) |
| |
| /// |
| /// LPI Structure Types |
| /// |
| #define ACPI_LPI_STRUCTURE_TYPE_NATIVE_CSTATE 0x00 |
| |
| /// |
| /// Low Power Idle (LPI) State Flags |
| /// |
| typedef union { |
| struct { |
| UINT32 Disabled : 1; ///< If set, LPI state is not used |
| /** |
| If set, Residency counter is not available for this LPI state and |
| Residency Counter Frequency is invalid |
| **/ |
| UINT32 CounterUnavailable : 1; |
| UINT32 Reserved : 30; ///< Reserved for future use. Must be zero |
| } Bits; |
| UINT32 Data32; |
| } ACPI_LPI_STATE_FLAGS; |
| |
| /// |
| /// Low Power Idle (LPI) structure with Native C-state instruction entry trigger descriptor |
| /// |
| typedef struct { |
| UINT32 Type; ///< LPI State descriptor Type 0 |
| UINT32 Length; ///< Length of LPI state Descriptor Structure |
| /// |
| /// Unique LPI state identifier: zero based, monotonically increasing identifier |
| /// |
| UINT16 UniqueId; |
| UINT8 Reserved[2]; ///< Must be Zero |
| ACPI_LPI_STATE_FLAGS Flags; ///< LPI state flags |
| /** |
| The LPI entry trigger, matching an existing _CST.Register object, represented as a |
| Generic Address Structure. All processors must request this state or deeper to trigger. |
| **/ |
| EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE EntryTrigger; |
| UINT32 Residency; ///< Minimum residency or break-even in uSec |
| UINT32 Latency; ///< Worst case exit latency in uSec |
| /** |
| [optional] Residency counter, represented as a Generic Address Structure. |
| If not present, Flags[1] bit should be set. |
| **/ |
| EFI_ACPI_6_1_GENERIC_ADDRESS_STRUCTURE ResidencyCounter; |
| /** |
| [optional] Residency counter frequency in cycles per second. Value 0 indicates that |
| counter runs at TSC frequency. Valid only if Residency Counter is present. |
| **/ |
| UINT64 ResidencyCounterFrequency; |
| } ACPI_LPI_NATIVE_CSTATE_DESCRIPTOR; |
| |
| #pragma pack() |
| |
| #endif |