## @file
# Legacy Bios Module to support CSM.
#
# This driver installs Legacy Bios Protocol to support CSM module work in EFI system.
#
# Copyright (c) 2006 - 2014, 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
  Thunk.c
  LegacyBootSupport.c
  LegacyBbs.c
  LegacySio.c

[Sources.X64]
  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

[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

[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
