## @file
#  This is a OpalPasswordDxe driver.
#
#  This module is used to Management the Opal feature
#  for Opal supported devices.
#
#
# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
# 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.
#
##
[Defines]
  INF_VERSION                    = 0x00010007
  BASE_NAME                      = OpalPasswordDxe
  FILE_GUID                      = E3E4048D-6C0C-43E4-AE1C-FFB579D8EF41
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = EfiDriverEntryPoint
  UNLOAD_IMAGE                   = OpalEfiDriverUnload

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  OpalDriver.h
  OpalHii.c
  OpalHiiCallbacks.c
  OpalDriver.c
  OpalDriverPrivate.h
  OpalHii.h
  OpalHiiPrivate.h
  OpalHiiFormValues.h
  OpalPasswordForm.vfr
  OpalHiiFormStrings.uni
  ComponentName.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  SecurityPkg/SecurityPkg.dec

[LibraryClasses]
  BaseLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiHiiServicesLib
  UefiRuntimeServicesTableLib
  BaseMemoryLib
  DebugLib
  HiiLib
  PrintLib
  DevicePathLib
  OpalPasswordSupportLib
  UefiLib
  TcgStorageOpalLib
  Tcg2PhysicalPresenceLib

[Protocols]
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES
  gEfiStorageSecurityCommandProtocolGuid        ## CONSUMES
  gEfiComponentNameProtocolGuid                 ## PRODUCES
  gEfiComponentName2ProtocolGuid                ## PRODUCES
  gEfiBlockIoProtocolGuid                       ## CONSUMES
  gEfiSmmCommunicationProtocolGuid              ## PRODUCES
  gEfiPciIoProtocolGuid                         ## CONSUMES
  gEfiDevicePathToTextProtocolGuid              ## CONSUMES

[Guids]
  gEfiEventExitBootServicesGuid                 ## CONSUMES ## Event

[Depex]
  gEfiSmmCommunicationProtocolGuid AND gEfiHiiStringProtocolGuid AND gEfiHiiDatabaseProtocolGuid
