https://svn.code.sf.net/p/edk2/code/trunk/edk2/, which are for MinnowBoard MAX open source project. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Wei <david.wei@intel.com> Reviewed-by: Mike Wu <mike.wu@intel.com> Reviewed-by: Hot Tian <hot.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16599 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			301 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			301 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*++
 | |
| 
 | |
| Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
 | |
| 
 | |
|   This program and the accompanying materials are licensed and made available under
 | |
|   the terms and conditions of the BSD License that 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.
 | |
| 
 | |
| 
 | |
| 
 | |
| Module Name:
 | |
| 
 | |
|   HwWatchdogTimer.h
 | |
| 
 | |
| Abstract:
 | |
| 
 | |
| 
 | |
| --*/
 | |
| 
 | |
| #ifndef __EFI_WATCHDOG_TIMER_DRIVER_PROTOCOL_H__
 | |
| #define __EFI_WATCHDOG_TIMER_DRIVER_PROTOCOL_H__
 | |
| 
 | |
| #define EFI_WATCHDOG_TIMER_DRIVER_PROTOCOL_GUID \
 | |
|   { 0xd5b06d16, 0x2ea1, 0x4def, 0x98, 0xd0, 0xa0, 0x5d, 0x40, 0x72, 0x84, 0x17 }
 | |
| 
 | |
| #define EFI_WATCHDOG_TIMER_NOT_SUPPORTED_PROTOCOL_GUID \
 | |
|   { 0xe9e156ac, 0x3203, 0x4572, 0xac, 0xdf, 0x84, 0x4f, 0xdc, 0xdb, 0x6, 0xbf }
 | |
| 
 | |
| 
 | |
| #include <Guid/HwWatchdogTimerHob.h>
 | |
| 
 | |
| //
 | |
| // General Purpose Constants
 | |
| //
 | |
| #define ICH_INSTAFLUSH_GPIO      BIT16 // BIT 16 in GPIO Level 2 is GPIO 48.
 | |
| #define B_INSTAFLUSH             BIT4
 | |
| //
 | |
| // Other Watchdog timer values
 | |
| //
 | |
| #define WDT_COUNTDOWN_VALUE                 0x14
 | |
| #define BDS_WDT_COUNTDOWN_VALUE             0x35
 | |
| 
 | |
| 
 | |
| //
 | |
| // Prototypes for the Watchdog Timer Driver Protocol
 | |
| //
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_WATCHDOG_START_TIMER) (
 | |
|   VOID
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service begins the Watchdog Timer countdown.  If the countdown completes prior to
 | |
|     Stop Timer or Restart Timer the system will reset.
 | |
| 
 | |
|   Arguments:
 | |
|     None
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS       - Operation completed successfully
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful
 | |
| 
 | |
| --*/
 | |
| 
 | |
| 
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_WATCHDOG_RESET_TIMER) (
 | |
|   VOID
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service resets the Watchdog Timer countdown and should only be called after the
 | |
|     Start Timer function.
 | |
| 
 | |
|   Arguments:
 | |
|     None
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS       - Operation completed successfully
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful
 | |
| 
 | |
| --*/
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_WATCHDOG_RESTART_TIMER) (
 | |
|   VOID
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service restarts the Watchdog Timer countdown and should only be called after the
 | |
|     Start Timer function.
 | |
| 
 | |
|   Arguments:
 | |
|     None
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS       - Operation completed successfully
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful
 | |
| 
 | |
| --*/
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_WATCHDOG_STOP_TIMER) (
 | |
|   VOID
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service disables the Watchdog Timer countdown.
 | |
| 
 | |
|   Arguments:
 | |
|     None
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS       - Operation completed successfully
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful
 | |
| 
 | |
| --*/
 | |
| 
 | |
| 
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_WATCHDOG_CHECK_TIMEOUT) (
 | |
|   OUT HW_WATCHDOG_TIMEOUT       *WatchdogTimeout
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service disables the Watchdog Timer countdown.
 | |
| 
 | |
|   Arguments:
 | |
|     None
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS       - Operation completed successfully
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful
 | |
| 
 | |
| --*/
 | |
| 
 | |
| 
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_WATCHDOG_FORCE_REBOOT) (
 | |
|   IN BOOLEAN                    ForceTimeout,
 | |
|   IN UINT8                      ResetType
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service forces a reboot of the system due to a reset of the POWERGOOD_PS,
 | |
|     POWERGOOD_CLK, and the BSEL Override
 | |
| 
 | |
|   Arguments:
 | |
|     None
 | |
| 
 | |
|   Returns:
 | |
|     This function should not return!
 | |
| 
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful and a reboot did not occur
 | |
| 
 | |
| --*/
 | |
| 
 | |
| 
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_WATCHDOG_KNOWN_RESET) (
 | |
|   IN BOOLEAN                    AllowReset
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service notifies the Watchdog Timer of the fact that a known reset is occuring.
 | |
| 
 | |
|   Arguments:
 | |
|     AllowReset -  TRUE if a Reset is currently expected
 | |
|                   FALSE if a Reset is not currently expected
 | |
| 
 | |
|   Returns:
 | |
|     This function should not return!
 | |
| 
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful and a reboot did not occur
 | |
| 
 | |
| --*/
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_GET_TIMER_COUNT_DOWN_PERIOD)(
 | |
|   OUT UINT32      *CountdownValue
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service reads the current Watchdog Timer countdown reload value.
 | |
| 
 | |
|   Arguments:
 | |
|     CountdownValue - pointer to UINT32 to return the value of the reload register.
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS       - Operation completed successfully
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful
 | |
| 
 | |
| --*/
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_SET_TIMER_COUNT_DOWN_PERIOD)(
 | |
|   OUT UINT32      CountdownValue
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service reads the current Watchdog Timer countdown reload value.
 | |
| 
 | |
|   Arguments:
 | |
|     CountdownValue - Value to set the reload register.
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS       - Operation completed successfully
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful
 | |
| 
 | |
| --*/
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_WATCHDOG_CLEAR_TIMER_STATE) (
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service clears the state that indicates the Watchdog Timer fired.
 | |
| 
 | |
|   Arguments:
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS       - Operation completed successfully
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful
 | |
| 
 | |
| --*/
 | |
| 
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_STALL_WATCHDOG_COUNTDOWN) (
 | |
|   IN BOOLEAN Stall
 | |
|   );
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This service disables the Watchdog Timer countdown.  It also closes the recurring restart event
 | |
|     if the event exists.
 | |
| 
 | |
|   Arguments:
 | |
|     Stall - TRUE = Stop the timer countdown
 | |
|             FALSE = Start the timer countdown
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS       - Operation completed successfully
 | |
|     EFI_DEVICE_ERROR  - The command was unsuccessful
 | |
| 
 | |
| --*/
 | |
| 
 | |
| typedef struct _EFI_WATCHDOG_TIMER_DRIVER_PROTOCOL {
 | |
|   EFI_WATCHDOG_START_TIMER                      StartWatchdogTimer;
 | |
|   PEI_WATCHDOG_RESET_TIMER                      ResetWatchdogTimeout;
 | |
|   EFI_WATCHDOG_RESTART_TIMER                    RestartWatchdogTimer;
 | |
|   EFI_WATCHDOG_STOP_TIMER                       StopWatchdogTimer;
 | |
|   EFI_WATCHDOG_CHECK_TIMEOUT                    CheckWatchdogTimeout;
 | |
|   EFI_WATCHDOG_FORCE_REBOOT                     ForceReboot;
 | |
|   EFI_WATCHDOG_KNOWN_RESET                      AllowKnownReset;
 | |
|   EFI_GET_TIMER_COUNT_DOWN_PERIOD               GetCountdownPeriod;
 | |
|   EFI_SET_TIMER_COUNT_DOWN_PERIOD               SetCountdownPeriod;
 | |
|   PEI_WATCHDOG_CLEAR_TIMER_STATE                ClearTimerState;
 | |
|   EFI_STALL_WATCHDOG_COUNTDOWN                  StallWatchdogCountdown;
 | |
| } EFI_WATCHDOG_TIMER_DRIVER_PROTOCOL;
 | |
| 
 | |
| extern EFI_GUID gEfiWatchdogTimerDriverProtocolGuid;
 | |
| extern EFI_GUID gEfiWatchdogTimerNotSupportedProtocolGuid;
 | |
| 
 | |
| #endif
 |