## @file
# PcRtc driver to install EFI_REAL_TIME_CLOCK_ARCH_PROTOCOL.
#
# This driver provides GetTime, SetTime, GetWakeupTime, SetWakeupTime services to Runtime Service Table.
# It will install a tagging protocol with gEfiRealTimeClockArchProtocolGuid.
#
# Copyright (c) 2006 - 2015, 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                      = PcRtc
  MODULE_UNI_FILE                = PcRtc.uni
  FILE_GUID                      = 378D7B65-8DA9-4773-B6E4-A47826A833E1
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializePcRtc

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  PcRtcEntry.c
  PcRtc.c
  PcRtc.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  PcAtChipsetPkg/PcAtChipsetPkg.dec

[LibraryClasses]
  UefiRuntimeServicesTableLib
  UefiRuntimeLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  TimerLib
  IoLib
  BaseMemoryLib
  UefiLib
  DebugLib
  BaseLib
  PcdLib
  ReportStatusCodeLib

[Protocols]
  gEfiRealTimeClockArchProtocolGuid             ## PRODUCES

[Guids]
  gEfiAcpi10TableGuid                           ## CONSUMES ## Event
  gEfiAcpiTableGuid                             ## CONSUMES ## Event

[Depex]
  gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid
  
[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdRealTimeClockUpdateTimeout  ## CONSUMES
  gPcAtChipsetPkgTokenSpaceGuid.PcdMinimalValidYear             ## CONSUMES
  gPcAtChipsetPkgTokenSpaceGuid.PcdMaximalValidYear             ## CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  PcRtcExtra.uni
