qm_rc_t qm_wdt_set_config(const qm_wdt_t wdt, const qm_wdt_config_t *const cfg) { QM_CHECK(wdt < QM_WDT_NUM, QM_RC_EINVAL); QM_CHECK(cfg != NULL, QM_RC_EINVAL); QM_WDT[wdt].wdt_cr &= ~QM_WDT_MODE; QM_WDT[wdt].wdt_cr |= cfg->mode << QM_WDT_MODE_OFFSET; QM_WDT[wdt].wdt_torr = cfg->timeout; /* kick the WDT to load the Timeout Period(TOP) value */ qm_wdt_reload(wdt); callback[wdt] = cfg->callback; return QM_RC_OK; }
int qm_wdt_set_config(const qm_wdt_t wdt, const qm_wdt_config_t *const cfg) { QM_CHECK(wdt < QM_WDT_NUM, -EINVAL); QM_CHECK(cfg != NULL, -EINVAL); if (cfg->mode == QM_WDT_MODE_INTERRUPT_RESET) { callback[wdt] = cfg->callback; callback_data[wdt] = cfg->callback_data; } QM_WDT[wdt].wdt_cr &= ~QM_WDT_MODE; QM_WDT[wdt].wdt_cr |= cfg->mode << QM_WDT_MODE_OFFSET; QM_WDT[wdt].wdt_torr = cfg->timeout; /* kick the WDT to load the Timeout Period(TOP) value */ qm_wdt_reload(wdt); return 0; }
static void reload(struct device *dev) { qm_wdt_reload(QM_WDT_0); }
/* WDT Requires a callback, there is no interrupt enable / disable. */ void wdt_example_callback(void *data) { wdt_fired++; qm_wdt_reload(QM_WDT_0); }