/** @file
  TCPA ACPI table definition.

Copyright (c) 2013, Intel Corporation. All rights reserved. <BR>
SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef _TCPA_ACPI_H_
#define _TCPA_ACPI_H_

#include <IndustryStandard/Acpi.h>

#pragma pack (1)

typedef struct _EFI_TCG_CLIENT_ACPI_TABLE {
  EFI_ACPI_DESCRIPTION_HEADER    Header;
  UINT16                         PlatformClass;
  UINT32                         Laml;
  UINT64                         Lasa;
} EFI_TCG_CLIENT_ACPI_TABLE;

typedef struct _EFI_TCG_SERVER_ACPI_TABLE {
  EFI_ACPI_DESCRIPTION_HEADER               Header;
  UINT16                                    PlatformClass;
  UINT16                                    Reserved0;
  UINT64                                    Laml;
  UINT64                                    Lasa;
  UINT16                                    SpecRev;
  UINT8                                     DeviceFlags;
  UINT8                                     InterruptFlags;
  UINT8                                     Gpe;
  UINT8                                     Reserved1[3];
  UINT32                                    GlobalSysInt;
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    BaseAddress;
  UINT32                                    Reserved2;
  EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE    ConfigAddress;
  UINT8                                     PciSegNum;
  UINT8                                     PciBusNum;
  UINT8                                     PciDevNum;
  UINT8                                     PciFuncNum;
} EFI_TCG_SERVER_ACPI_TABLE;

//
// TCG Platform Type based on TCG ACPI Specification Version 1.00
//
#define TCG_PLATFORM_TYPE_CLIENT  0
#define TCG_PLATFORM_TYPE_SERVER  1

#pragma pack ()

#endif
