/** @file
  ACPI Low Power Idle Table (LPIT) definitions

  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

  @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
