## @file
# Generic watchdog timer driver producing Watchdog Timer Architectural Protocol using UEFI APIs.
#
# Copyright (c) 2006 - 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                      = WatchdogTimer
  MODULE_UNI_FILE                = WatchdogTimer.uni
  FILE_GUID                      = F099D67F-71AE-4c36-B2A3-DCEB0EB2B7D8
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = WatchdogTimerDriverInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Packages]
  MdePkg/MdePkg.dec

[Sources]
  WatchdogTimer.h
  WatchdogTimer.c

[LibraryClasses]
  UefiRuntimeServicesTableLib
  UefiBootServicesTableLib
  ReportStatusCodeLib
  UefiDriverEntryPoint
  DebugLib

[Protocols]
  gEfiWatchdogTimerArchProtocolGuid             ## PRODUCES

[Depex]
  gEfiTimerArchProtocolGuid

# [Event]
# EVENT_TYPE_RELATIVE_TIMER ## CONSUMES
#

[UserExtensions.TianoCore."ExtraFiles"]
  WatchdogTimerExtra.uni