blob: e7bb0b2bfdd919aee161e28d43d4f887e543d7a4 [file] [log] [blame]
lgao4504214c2008-04-09 07:07:50 +00001/** @file
xli2496437c92008-11-17 04:33:19 +00002 The internal include file for WatchDogTimer module.
lgao4504214c2008-04-09 07:07:50 +00003
hhtiane5eed7d2010-04-24 09:33:45 +00004Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
5This program and the accompanying materials
klu2de4c8a32007-06-28 08:36:46 +00006are licensed and made available under the terms and conditions of the BSD License
7which accompanies this distribution. The full text of the license may be found at
8http://opensource.org/licenses/bsd-license.php
9
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
lgao4504214c2008-04-09 07:07:50 +000013**/
klu2de4c8a32007-06-28 08:36:46 +000014
15#ifndef _WATCHDOG_TIMER_H_
16#define _WATCHDOG_TIMER_H_
17
AJFISHba237732007-07-03 18:34:24 +000018
vanjeffed7748f2007-07-20 06:10:09 +000019
lgao460c93672008-08-30 14:09:38 +000020#include <Uefi.h>
AJFISHba237732007-07-03 18:34:24 +000021#include <Library/DebugLib.h>
22#include <Library/UefiDriverEntryPoint.h>
23#include <Library/ReportStatusCodeLib.h>
24#include <Library/UefiBootServicesTableLib.h>
25#include <Library/UefiRuntimeServicesTableLib.h>
jljustenc0d17d22008-02-20 01:26:35 +000026#include <Protocol/WatchdogTimer.h>
AJFISHba237732007-07-03 18:34:24 +000027
28
eric_tian36093af2008-07-11 06:49:09 +000029/**
xli2496437c92008-11-17 04:33:19 +000030 Registers a handler that is to be invoked when the watchdog timer fires.
31
eric_tian36093af2008-07-11 06:49:09 +000032 This function registers a handler that is to be invoked when the watchdog
33 timer fires. By default, the EFI_WATCHDOG_TIMER protocol will call the
34 Runtime Service ResetSystem() when the watchdog timer fires. If a
35 NotifyFunction is registered, then the NotifyFunction will be called before
36 the Runtime Service ResetSystem() is called. If NotifyFunction is NULL, then
37 the watchdog handler is unregistered. If a watchdog handler is registered,
38 then EFI_SUCCESS is returned. If an attempt is made to register a handler
39 when a handler is already registered, then EFI_ALREADY_STARTED is returned.
40 If an attempt is made to uninstall a handler when a handler is not installed,
41 then return EFI_INVALID_PARAMETER.
42
43 @param This The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.
44 @param NotifyFunction The function to call when the watchdog timer fires. If this
45 is NULL, then the handler will be unregistered.
46
xli2496437c92008-11-17 04:33:19 +000047 @retval EFI_SUCCESS The watchdog timer handler was registered or unregistered.
48 @retval EFI_ALREADY_STARTED NotifyFunction is not NULL, and a handler is already registered.
49 @retval EFI_INVALID_PARAMETER NotifyFunction is NULL, and a handler was not previously registered.
eric_tian36093af2008-07-11 06:49:09 +000050
51**/
klu2de4c8a32007-06-28 08:36:46 +000052EFI_STATUS
53EFIAPI
54WatchdogTimerDriverRegisterHandler (
55 IN EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *This,
56 IN EFI_WATCHDOG_TIMER_NOTIFY NotifyFunction
AJFISHba237732007-07-03 18:34:24 +000057 );
klu2de4c8a32007-06-28 08:36:46 +000058
eric_tian36093af2008-07-11 06:49:09 +000059/**
xli2496437c92008-11-17 04:33:19 +000060 Sets the amount of time in the future to fire the watchdog timer.
61
eric_tian36093af2008-07-11 06:49:09 +000062 This function sets the amount of time to wait before firing the watchdog
xli2496437c92008-11-17 04:33:19 +000063 timer to TimerPeriod 100 ns units. If TimerPeriod is 0, then the watchdog
eric_tian36093af2008-07-11 06:49:09 +000064 timer is disabled.
65
66 @param This The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.
xli2496437c92008-11-17 04:33:19 +000067 @param TimerPeriod The amount of time in 100 ns units to wait before the watchdog
eric_tian36093af2008-07-11 06:49:09 +000068 timer is fired. If TimerPeriod is zero, then the watchdog
69 timer is disabled.
70
xli2496437c92008-11-17 04:33:19 +000071 @retval EFI_SUCCESS The watchdog timer has been programmed to fire in Time
72 100 ns units.
73 @retval EFI_DEVICE_ERROR A watchdog timer could not be programmed due to a device
eric_tian36093af2008-07-11 06:49:09 +000074 error.
75
76**/
klu2de4c8a32007-06-28 08:36:46 +000077EFI_STATUS
78EFIAPI
79WatchdogTimerDriverSetTimerPeriod (
80 IN EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *This,
81 IN UINT64 TimerPeriod
AJFISHba237732007-07-03 18:34:24 +000082 );
klu2de4c8a32007-06-28 08:36:46 +000083
eric_tian36093af2008-07-11 06:49:09 +000084/**
xli2496437c92008-11-17 04:33:19 +000085 Retrieves the amount of time in 100 ns units that the system will wait before firing the watchdog timer.
86
eric_tian36093af2008-07-11 06:49:09 +000087 This function retrieves the amount of time the system will wait before firing
88 the watchdog timer. This period is returned in TimerPeriod, and EFI_SUCCESS
89 is returned. If TimerPeriod is NULL, then EFI_INVALID_PARAMETER is returned.
90
91 @param This The EFI_WATCHDOG_TIMER_ARCH_PROTOCOL instance.
xli2496437c92008-11-17 04:33:19 +000092 @param TimerPeriod A pointer to the amount of time in 100 ns units that the system
eric_tian36093af2008-07-11 06:49:09 +000093 will wait before the watchdog timer is fired. If TimerPeriod of
94 zero is returned, then the watchdog timer is disabled.
95
xli2496437c92008-11-17 04:33:19 +000096 @retval EFI_SUCCESS The amount of time that the system will wait before
eric_tian36093af2008-07-11 06:49:09 +000097 firing the watchdog timer was returned in TimerPeriod.
xli2496437c92008-11-17 04:33:19 +000098 @retval EFI_INVALID_PARAMETER TimerPeriod is NULL.
eric_tian36093af2008-07-11 06:49:09 +000099
100**/
klu2de4c8a32007-06-28 08:36:46 +0000101EFI_STATUS
102EFIAPI
103WatchdogTimerDriverGetTimerPeriod (
104 IN EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *This,
105 IN UINT64 *TimerPeriod
AJFISHba237732007-07-03 18:34:24 +0000106 );
klu2de4c8a32007-06-28 08:36:46 +0000107
klu2de4c8a32007-06-28 08:36:46 +0000108#endif