The SP805 watchdog driver doesn't implement the PI watchdog protocol fully, but always simply resets the system if the watchdog time runs out. However, the hardware does support the intended usage model, as long as the SP805 is wired up correctly. So let's implement interrupt based mode involving a handler that is registered by the DXE core and invoked when the watchdog runs out. In the interrupt handler, we invoke the notify function if one was registered, before calling the ResetSystem() runtime service (as per the UEFI spec) Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
52 lines
1.5 KiB
INI
52 lines
1.5 KiB
INI
/** @file
|
|
*
|
|
* Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
|
* Copyright (c) 2018, Linaro Limited. All rights reserved.
|
|
*
|
|
* 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 = SP805WatchdogDxe
|
|
FILE_GUID = ebd705fb-fa92-46a7-b32b-7f566d944614
|
|
MODULE_TYPE = DXE_DRIVER
|
|
VERSION_STRING = 1.0
|
|
ENTRY_POINT = SP805Initialize
|
|
|
|
[Sources.common]
|
|
SP805Watchdog.c
|
|
|
|
[Packages]
|
|
ArmPkg/ArmPkg.dec
|
|
ArmPlatformPkg/ArmPlatformPkg.dec
|
|
EmbeddedPkg/EmbeddedPkg.dec
|
|
MdePkg/MdePkg.dec
|
|
|
|
[LibraryClasses]
|
|
BaseLib
|
|
DebugLib
|
|
IoLib
|
|
UefiBootServicesTableLib
|
|
UefiDriverEntryPoint
|
|
UefiRuntimeServicesTableLib
|
|
|
|
[Pcd]
|
|
gArmPlatformTokenSpaceGuid.PcdSP805WatchdogBase
|
|
gArmPlatformTokenSpaceGuid.PcdSP805WatchdogClockFrequencyInHz
|
|
gArmPlatformTokenSpaceGuid.PcdSP805WatchdogInterrupt
|
|
|
|
[Protocols]
|
|
gHardwareInterruptProtocolGuid ## ALWAYS_CONSUMES
|
|
gEfiWatchdogTimerArchProtocolGuid ## ALWAYS_PRODUCES
|
|
|
|
[Depex]
|
|
gHardwareInterruptProtocolGuid
|