## @file
# Generates ISA I/O Protocols based on the ISA ACPI Protocol instances.
#
# Discovers all the ISA Controllers and their resources by using the ISA ACPI
# Protocol, produces an instance of the ISA I/O Protocol for every ISA
# Controller found. This driver is designed to manage a PCI-to-ISA bridge Device
# such as an LPC bridge.
#
# Copyright (c) 2007 - 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                      = IsaBusDxe
  MODULE_UNI_FILE                = IsaBusDxe.uni
  FILE_GUID                      = 240612B5-A063-11d4-9A3A-0090273FC14D
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeIsaBus

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#  DRIVER_BINDING                = gIsaBusControllerDriver
#  COMPONENT_NAME                = gIsaBusComponentName;
#  COMPONENT_NAME2               = gIsaBusComponentName2;
#

[Sources]
  ComponentName.c
  IsaIo.c
  IsaBus.c
  InternalIsaIo.h
  InternalIsaBus.h
  ComponentName.h

[Packages]
  MdePkg/MdePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  PcdLib
  ReportStatusCodeLib
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  DevicePathLib
  UefiLib
  UefiDriverEntryPoint
  DebugLib

[Protocols]
  gEfiIsaIoProtocolGuid                         ## BY_START
  gEfiDevicePathProtocolGuid                    ## BY_START
  gEfiIsaAcpiProtocolGuid                       ## TO_START
  gEfiPciIoProtocolGuid                         ## TO_START
  gEfiDevicePathProtocolGuid                    ## TO_START
  gEfiGenericMemTestProtocolGuid                ## TO_START

[Pcd]
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdIsaBusSupportedFeatures  ## CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  IsaBusDxeExtra.uni
