## @file
#    Lite Fat driver only used in Pei Phase.
#
#  Copyright (c) 2006 - 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                    = 0x00010005
  BASE_NAME                      = FatPei
  MODULE_UNI_FILE                = FatPei.uni
  FILE_GUID                      = 5B60CCFD-1011-4BCF-B7D1-BB99CA96A603
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = FatPeimEntry

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  Part.c
  FatLiteApi.c
  FatLiteLib.c
  FatLiteAccess.c
  FatLiteApi.h
  FatLitePeim.h
  FatLiteFmt.h


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  PcdLib
  BaseMemoryLib
  PeimEntryPoint
  BaseLib
  DebugLib
  PeiServicesTablePointerLib
  PeiServicesLib


[Guids]
  gRecoveryOnFatUsbDiskGuid                   ## SOMETIMES_CONSUMES   ## UNDEFINED
  gRecoveryOnFatIdeDiskGuid                   ## SOMETIMES_CONSUMES   ## UNDEFINED
  gRecoveryOnFatFloppyDiskGuid                ## SOMETIMES_CONSUMES   ## UNDEFINED


[Ppis]
  gEfiPeiVirtualBlockIoPpiGuid                  ## SOMETIMES_CONSUMES PPI_NOTIFY
  gEfiPeiVirtualBlockIo2PpiGuid                 ## SOMETIMES_CONSUMES PPI_NOTIFY
  gEfiPeiDeviceRecoveryModulePpiGuid            ## SOMETIMES_PRODUCES


[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport         ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdRecoveryFileName         ## CONSUMES

[Depex]
  gEfiPeiMemoryDiscoveredPpiGuid AND gEfiPeiBootInRecoveryModePpiGuid

[UserExtensions.TianoCore."ExtraFiles"]
  FatPeiExtra.uni
