## @file
# Description file for the Atapi Pass Thru driver.
#
# This driver simulates SCSI devices with Atapi devices to test the SCSI io
#  protocol.
# Copyright (c) 2007 - 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                      = AtapiPassThruDxe
  FILE_GUID                      = E49061CE-99A7-41d3-AB3A-36E5CFBAD63E
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeAtapiPassThru

  PCI_VENDOR_ID                  = 0x8086
  PCI_DEVICE_ID                  = 0x2921
  PCI_CLASS_CODE                 = 0x010100
  PCI_REVISION                   = 0x0003

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  DRIVER_BINDING                =  gAtapiScsiPassThruDriverBinding              
#  COMPONENT_NAME                =  gAtapiScsiPassThruComponentName              
#

[Sources]
  DriverSupportedEfiVersion.c
  ComponentName.c
  AtapiPassThru.c
  AtapiPassThru.h


[Packages]
  MdePkg/MdePkg.dec
  OptionRomPkg/OptionRomPkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  UefiLib
  BaseLib
  UefiDriverEntryPoint
  DebugLib
  DevicePathLib


[Protocols]
  gEfiScsiPassThruProtocolGuid                  # PROTOCOL BY_START
  gEfiExtScsiPassThruProtocolGuid               # PROTOCOL BY_START
  gEfiPciIoProtocolGuid                         # PROTOCOL TO_START
  gEfiDriverSupportedEfiVersionProtocolGuid     # PROTOCOL ALWAYS_PRODUCED

[FeaturePcd]
  gOptionRomPkgTokenSpaceGuid.PcdSupportScsiPassThru
  gOptionRomPkgTokenSpaceGuid.PcdSupportExtScsiPassThru

[Pcd]
  gOptionRomPkgTokenSpaceGuid.PcdDriverSupportedEfiVersion

