/** @file
  EFI SMM Access2 Protocol as defined in the PI 1.2 specification.

  This protocol is used to control the visibility of the SMRAM on the platform.
  It abstracts the location and characteristics of SMRAM.  The expectation is
  that the north bridge or memory controller would publish this protocol.

  The principal functionality found in the memory controller includes the following:
  - Exposing the SMRAM to all non-SMM agents, or the "open" state
  - Shrouding the SMRAM to all but the SMM agents, or the "closed" state
  - Preserving the system integrity, or "locking" the SMRAM, such that the settings cannot be
    perturbed by either boot service or runtime agents

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

**/

#ifndef _SMM_ACCESS2_H_
#define _SMM_ACCESS2_H_

#include <Protocol/MmAccess.h>

#define EFI_SMM_ACCESS2_PROTOCOL_GUID  EFI_MM_ACCESS_PROTOCOL_GUID

typedef EFI_MM_ACCESS_PROTOCOL EFI_SMM_ACCESS2_PROTOCOL;

typedef EFI_MM_OPEN EFI_SMM_OPEN2;

typedef EFI_MM_CLOSE EFI_SMM_CLOSE2;

typedef EFI_MM_LOCK EFI_SMM_LOCK2;

typedef EFI_MM_CAPABILITIES EFI_SMM_CAPABILITIES2;
extern EFI_GUID  gEfiSmmAccess2ProtocolGuid;

#endif
