## @file
# PS2 Mouse driver providing absolute (touch pad) pointer support.
#
# This driver simulates a touch pad absolute pointing device using a standard
# PS2 mouse as the input hardware.
#
# 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                      = Ps2MouseAbsolutePointerDxe
  MODULE_UNI_FILE                = Ps2MouseAbsolutePointerDxe.uni
  FILE_GUID                      = 2899C94A-1FB6-4b1a-B96B-8364975303E0
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializePs2MouseAbsolutePointer

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#  DRIVER_BINDING                = gPS2MouseAbsolutePointerDriver;
#  COMPONENT_NAME                = gPs2MouseAbsolutePointerComponentName;
#  COMPONENT_NAME2               = gPs2MouseAbsolutePointerComponentName2;
#

[Sources]
  ComponentName.c
  CommPs2.h
  CommPs2.c
  Ps2MouseAbsolutePointer.h
  Ps2MouseAbsolutePointer.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec

[LibraryClasses]
  ReportStatusCodeLib
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  UefiLib
  UefiDriverEntryPoint
  DebugLib
  PcdLib

[Protocols]
  gEfiIsaIoProtocolGuid                         ## TO_START
  gEfiAbsolutePointerProtocolGuid               ## BY_START
  gEfiDevicePathProtocolGuid                    ## TO_START

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdPs2MouseExtendedVerification   ## CONSUMES

#
# [Event]
#
#   ##
#   # Timer event used to check the mouse state at a regular interval.
#   #
#   EVENT_TYPE_PERIODIC_TIMER   ## CONSUMES
#

[UserExtensions.TianoCore."ExtraFiles"]
  Ps2MouseAbsolutePointerDxeExtra.uni
