## @file
# 8259 Interrupt Controller driver that provides Legacy 8259 protocol.
#
# Copyright (c) 2005 - 2018, 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                      = Legacy8259
  MODULE_UNI_FILE                = Legacy8259.uni
  FILE_GUID                      = 79CA4208-BBA1-4a9a-8456-E1E66A81484E
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = Install8259

[Sources]
  8259.c
  8259.h

[Packages]
  MdePkg/MdePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  PcAtChipsetPkg/PcAtChipsetPkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  DebugLib
  UefiDriverEntryPoint
  IoLib
  PcdLib

[Protocols]
  gEfiLegacy8259ProtocolGuid                    ## PRODUCES
  gEfiPciIoProtocolGuid                         ## SOMETIMES_CONSUMES

[Pcd]
  gPcAtChipsetPkgTokenSpaceGuid.Pcd8259LegacyModeMask      ## CONSUMES
  gPcAtChipsetPkgTokenSpaceGuid.Pcd8259LegacyModeEdgeLevel ## CONSUMES

[Depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  Legacy8259Extra.uni
