## @file
#  HddPasswordDxe driver which is used to set/clear hdd password at attached harddisk
#  devices.
#
#  Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = HddPasswordDxe
  FILE_GUID                      = 9BD549CD-86D1-4925-9F7D-3686DDD876FC
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = HddPasswordDxeInit

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  HddPasswordDxe.c
  HddPasswordDxe.h
  HddPasswordHiiDataStruc.h
  HddPassword.vfr
  HddPasswordStrings.uni
  HddPasswordCommon.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  CryptoPkg/CryptoPkg.dec
  SecurityPkg/SecurityPkg.dec

[LibraryClasses]
  BaseLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiHiiServicesLib
  UefiRuntimeServicesTableLib
  DxeServicesTableLib
  BaseMemoryLib
  DebugLib
  HiiLib
  PrintLib
  UefiLib
  LockBoxLib
  S3BootScriptLib
  PciLib
  BaseCryptLib

[Guids]
  gEfiIfrTianoGuid                              ## CONSUMES ## GUID
  gEfiEndOfDxeEventGroupGuid                    ## CONSUMES ## Event
  gS3StorageDeviceInitListGuid                  ## SOMETIMES_PRODUCES ## UNDEFINED

[Protocols]
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES
  gEfiAtaPassThruProtocolGuid                   ## CONSUMES
  gEfiPciIoProtocolGuid                         ## CONSUMES
  gEdkiiVariableLockProtocolGuid                ## CONSUMES

[Pcd]
  gEfiSecurityPkgTokenSpaceGuid.PcdSkipHddPasswordPrompt  ## CONSUMES

[Depex]
  gEfiVariableWriteArchProtocolGuid

