## @file
# Legacy Bios Module to support CSM.
#
# This driver installs Legacy Bios Protocol to support CSM module work in EFI system.
#
# 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                      = LegacyBiosDxe
  MODULE_UNI_FILE                = LegacyBiosDxe.uni
  FILE_GUID                      = F122A15C-C10B-4d54-8F48-60F4F06DD1AD
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = LegacyBiosInstall

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF
#

[Sources]
  LegacyCmos.c
  LegacyIde.c
  LegacyBios.c
  LegacyBda.c
  LegacyBiosInterface.h
  LegacyPci.c

[Sources.Ia32]
  IA32/InterruptTable.S
  IA32/InterruptTable.asm
  IA32/InterruptTable.nasm
  Thunk.c
  LegacyBootSupport.c
  LegacyBbs.c
  LegacySio.c

[Sources.X64]
  X64/InterruptTable.nasm
  X64/InterruptTable.asm
  X64/InterruptTable.S
  Thunk.c
  LegacyBootSupport.c
  LegacyBbs.c
  LegacySio.c

[Sources.IPF]
  Ipf/IpfThunk.s
  Ipf/Thunk.c
  Ipf/IpfThunk.i
  Ipf/IpfBootSupport.c
  Ipf/IpfThunk.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec


[LibraryClasses]
  DevicePathLib
  UefiBootServicesTableLib
  MemoryAllocationLib
  UefiDriverEntryPoint
  BaseMemoryLib
  UefiLib
  DebugLib
  DxeServicesTableLib
  PcdLib
  ReportStatusCodeLib
  PeCoffLib
  CacheMaintenanceLib
  DebugAgentLib

[LibraryClasses.IA32]
  IoLib
  HobLib
  UefiRuntimeServicesTableLib
  BaseLib

[LibraryClasses.X64]
  IoLib
  HobLib
  UefiRuntimeServicesTableLib
  BaseLib

[LibraryClasses.IPF]
  IoLib
  UefiRuntimeServicesTableLib


[Guids]
  gEfiDiskInfoIdeInterfaceGuid                  ## SOMETIMES_CONSUMES ##GUID #Used in LegacyBiosBuildIdeData() to assure device is a disk
  gEfiSmbiosTableGuid                           ## SOMETIMES_CONSUMES ##SystemTable
  gEfiLegacyBiosGuid                            ## SOMETIMES_CONSUMES ##GUID #Used in LegacyBiosInstallVgaRom() to locate handle buffer
  gEfiEndOfDxeEventGroupGuid                    ## CONSUMES

[Guids.IA32]
  gEfiAcpi20TableGuid                           ## SOMETIMES_CONSUMES ##SystemTable
  gEfiAcpi10TableGuid                           ## SOMETIMES_CONSUMES ##SystemTable

[Guids.X64]
  gEfiAcpi20TableGuid                           ## SOMETIMES_CONSUMES ##SystemTable
  gEfiAcpi10TableGuid                           ## SOMETIMES_CONSUMES ##SystemTable


[Protocols]
  gEfiLoadedImageProtocolGuid                   ## SOMETIMES_CONSUMES
  gEfiDevicePathProtocolGuid                    ## SOMETIMES_CONSUMES
  gEfiPciRootBridgeIoProtocolGuid               ## SOMETIMES_CONSUMES
  gEfiCpuArchProtocolGuid                       ## CONSUMES
  gEfiTimerArchProtocolGuid                     ## CONSUMES
  gEfiIsaIoProtocolGuid                         ## SOMETIMES_CONSUMES
  gEfiBlockIoProtocolGuid                       ## SOMETIMES_CONSUMES
  gEfiPciIoProtocolGuid                         ## SOMETIMES_CONSUMES
  gEfiGenericMemTestProtocolGuid                ## CONSUMES
  gEfiDiskInfoProtocolGuid                      ## SOMETIMES_CONSUMES
  gEfiSimpleTextInProtocolGuid                  ## SOMETIMES_CONSUMES
  gEfiLegacy8259ProtocolGuid                    ## CONSUMES
  gEfiLegacyBiosPlatformProtocolGuid            ## CONSUMES
  gEfiLegacyInterruptProtocolGuid               ## CONSUMES
  gEfiLegacyRegion2ProtocolGuid                 ## CONSUMES
  gEfiLegacyBiosProtocolGuid                    ## PRODUCES
  gEfiSerialIoProtocolGuid                      ## CONSUMES
  gEfiSioProtocolGuid                           ## CONSUMES
  gEdkiiIoMmuProtocolGuid                       ## CONSUMES

[Pcd]
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLegacyBiosCacheLegacyRegion  ## CONSUMES
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdEbdaReservedMemorySize       ## CONSUMES
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdEndOpromShadowAddress        ## SOMETIMES_CONSUMES
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdLowPmmMemorySize             ## CONSUMES
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdHighPmmMemorySize            ## CONSUMES
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdOpromReservedMemoryBase      ## CONSUMES
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdOpromReservedMemorySize      ## CONSUMES

[Depex]
  gEfiLegacyRegion2ProtocolGuid AND gEfiLegacyInterruptProtocolGuid AND gEfiLegacyBiosPlatformProtocolGuid AND gEfiLegacy8259ProtocolGuid AND gEfiGenericMemTestProtocolGuid AND gEfiCpuArchProtocolGuid AND gEfiTimerArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  LegacyBiosDxeExtra.uni
