5 #include "sw/device/silicon_creator/lib/drivers/watchdog.h"
9 #include "sw/device/silicon_creator/lib/drivers/lifecycle.h"
10 #include "sw/device/silicon_creator/lib/drivers/otp.h"
11 #include "sw/device/silicon_creator/lib/drivers/pwrmgr.h"
13 #include "aon_timer_regs.h"
15 #include "otp_ctrl_regs.h"
16 #include "pwrmgr_regs.h"
22 kCtrlEnable = 1 << AON_TIMER_WDOG_CTRL_ENABLE_BIT,
23 kCtrlDisable = 0 << AON_TIMER_WDOG_CTRL_ENABLE_BIT,
26 void watchdog_init(lifecycle_state_t lc_state) {
28 kWatchdogSecMmioConfigure);
31 switch (launder32(lc_state)) {
56 uint32_t threshold = otp_read32(
57 OTP_CTRL_PARAM_OWNER_SW_CFG_ROM_WATCHDOG_BITE_THRESHOLD_CYCLES_OFFSET);
60 if (launder32(threshold) < kWatchdogMinThreshold) {
61 HARDENED_CHECK_LT(threshold, kWatchdogMinThreshold);
67 .bark_threshold = (9 * threshold) / 8,
68 .bite_threshold = threshold,
77 kPwrMgrBase + PWRMGR_RESET_EN_REG_OFFSET,
79 0, kTopEarlgreyPowerManagerResetRequestsAonTimerAonAonTimerRstReq,
85 abs_mmio_write32(kBase + AON_TIMER_WDOG_COUNT_REG_OFFSET, 0);
86 abs_mmio_write32(kBase + AON_TIMER_WDOG_BARK_THOLD_REG_OFFSET,
92 uint32_t ctrl = kCtrlEnable;
93 switch (launder32(config.
enable)) {
112 void watchdog_disable(
void) {
117 void watchdog_pet(
void) {
118 abs_mmio_write32(kBase + AON_TIMER_WDOG_COUNT_REG_OFFSET, 0);
121 uint32_t watchdog_get(
void) {
122 return abs_mmio_read32(kBase + AON_TIMER_WDOG_COUNT_REG_OFFSET);