| /* Copyright 2018 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| /* Watchdog driver */ |
| |
| #include "common.h" |
| #include "hooks.h" |
| #include "panic.h" |
| #include "registers.h" |
| #include "watchdog.h" |
| |
| void watchdog_reload(void) |
| { |
| SCP_WDT_RELOAD = SCP_WDT_RELOAD_VALUE; |
| } |
| DECLARE_HOOK(HOOK_TICK, watchdog_reload, HOOK_PRIO_DEFAULT); |
| |
| int watchdog_init(void) |
| { |
| const uint32_t watchdog_timeout = |
| SCP_WDT_PERIOD(CONFIG_WATCHDOG_PERIOD_MS); |
| |
| /* Disable watchdog */ |
| SCP_WDT_CFG = 0; |
| /* Enable watchdog */ |
| SCP_WDT_CFG = SCP_WDT_ENABLE | watchdog_timeout; |
| /* Reload watchdog */ |
| watchdog_reload(); |
| |
| return EC_SUCCESS; |
| } |