## @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 - 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                      = 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 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
