/** @file
Definition of the global NVS area protocol.  This protocol
publishes the address and format of a global ACPI NVS buffer
used as a communications buffer between SMM code and ASL code.
The format is derived from the ACPI reference code, version 0.95.
Note:  Data structures defined in this protocol are not naturally aligned.

Copyright (c) 2013-2015 Intel Corporation.

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.

**/

#ifndef _GLOBAL_NVS_AREA_H_
#define _GLOBAL_NVS_AREA_H_

//
// Forward reference for pure ANSI compatability
//

typedef struct _EFI_GLOBAL_NVS_AREA_PROTOCOL EFI_GLOBAL_NVS_AREA_PROTOCOL;

//
// Global NVS Area Protocol GUID
//
#define EFI_GLOBAL_NVS_AREA_PROTOCOL_GUID \
{ 0x74e1e48, 0x8132, 0x47a1, {0x8c, 0x2c, 0x3f, 0x14, 0xad, 0x9a, 0x66, 0xdc} }


//
// Global NVS Area definition
//
#pragma pack (1)
typedef struct {
  //
  // Miscellaneous Dynamic Values
  //
  UINT32      OperatingSystemType;    // Os type indicator
  UINT32      Cfgd;                   // System configuration description
  UINT32      HpetEnable;

  UINT32      Pm1blkIoBaseAddress;
  UINT32      PmbaIoBaseAddress;
  UINT32      Gpe0blkIoBaseAddress;
  UINT32      GbaIoBaseAddress;

  UINT32      SmbaIoBaseAddress;
  UINT32      Reserved1;
  UINT32      WdtbaIoBaseAddress;

  UINT32      HpetBaseAddress;
  UINT32      HpetSize;
  UINT32      PciExpressBaseAddress;
  UINT32      PciExpressSize;

  UINT32      RcbaMmioBaseAddress;
  UINT32      RcbaMmioSize;
  UINT32      IoApicBaseAddress;
  UINT32      IoApicSize;

  UINT32      TpmPresent;
  UINT32      DBG2Present;
  UINT32      PlatformType;           // Set to one of EFI_PLATFORM_TYPE enums.
  UINT32      AlternateSla;           // If TRUE use alternate I2C Slave addresses.

  UINT8       Reserved[512 - 4 * 22]; // Total 512 Bytes
} EFI_GLOBAL_NVS_AREA;
#pragma pack ()

//
// Global NVS Area Protocol
//
struct _EFI_GLOBAL_NVS_AREA_PROTOCOL {
  EFI_GLOBAL_NVS_AREA     *Area;
};

//
// Extern the GUID for protocol users.
//
extern EFI_GUID gEfiGlobalNvsAreaProtocolGuid;

#endif
