#define DW_WDT_CR_EN_OFFSET 0x00
#define DW_WDT_CR_RMOD_OFFSET 0x01
#define DW_WDT_CR_RMOD_VAL 0x00
#define DW_WDT_CRR_RESTART_VAL 0x76
static int designware_wdt_settimeout(unsigned int timeout)
i = (log_2_n_round_up(timeout * CONFIG_DW_WDT_CLOCK_KHZ)) - 16;
writel((i | (i << 4)), (CONFIG_DW_WDT_BASE + DW_WDT_TORR));
static void designware_wdt_enable(void)
writel(((DW_WDT_CR_RMOD_VAL << DW_WDT_CR_RMOD_OFFSET) |
(0x1 << DW_WDT_CR_EN_OFFSET)),
(CONFIG_DW_WDT_BASE + DW_WDT_CR));
static unsigned int designware_wdt_is_enabled(void)
val = readl((CONFIG_DW_WDT_BASE + DW_WDT_CR));
#if defined(CONFIG_HW_WATCHDOG)
void hw_watchdog_reset(void)
if (designware_wdt_is_enabled())
writel(DW_WDT_CRR_RESTART_VAL,
(CONFIG_DW_WDT_BASE + DW_WDT_CRR));
void hw_watchdog_init(void)