/** @file
  This file defines the SMM info hob structure.

  Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef PAYLOAD_SMM_REGISTER_INFO_GUID_H_
#define PAYLOAD_SMM_REGISTER_INFO_GUID_H_

#include <IndustryStandard/Acpi.h>

///
/// SMM Information GUID
///
extern EFI_GUID gSmmRegisterInfoGuid;

///
/// Reuse ACPI definition
/// AddressSpaceId(0xC0-0xFF) is defined by OEM for MSR and other spaces
///
typedef EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE  PLD_GENERIC_ADDRESS;

#define REGISTER_ID_SMI_GBL_EN         1
#define REGISTER_ID_SMI_GBL_EN_LOCK    2
#define REGISTER_ID_SMI_EOS            3
#define REGISTER_ID_SMI_APM_EN         4
#define REGISTER_ID_SMI_APM_STS        5

#pragma pack(1)
typedef struct {
  UINT64                Id;
  UINT64                Value;
  PLD_GENERIC_ADDRESS   Address;
} PLD_GENERIC_REGISTER;

typedef struct {
  UINT16                Revision;
  UINT16                Reserved;
  UINT32                Count;
  PLD_GENERIC_REGISTER  Registers[0];
} PLD_SMM_REGISTERS;


#pragma pack()

#endif
