audk/MdePkg/Include/IndustryStandard/LowPowerIdleTable.h

83 lines
3.0 KiB
C

/** @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