static int set_config(struct device *dev, struct wdt_config *cfg) { qm_wdt_config_t qm_cfg; user_cb = cfg->interrupt_fn; qm_cfg.timeout = cfg->timeout; qm_cfg.mode = (cfg->mode == WDT_MODE_RESET) ? QM_WDT_MODE_RESET : QM_WDT_MODE_INTERRUPT_RESET; qm_cfg.callback = interrupt_callback; qm_wdt_set_config(QM_WDT_0, &qm_cfg); qm_wdt_start(QM_WDT_0); return 0; }
/* QMSI wdt app example */ int main(void) { qm_wdt_config_t wr_cfg; QM_PRINTF("Starting: WDT\n"); wr_cfg.timeout = QM_WDT_2_POW_17_CYCLES; wr_cfg.mode = QM_WDT_MODE_INTERRUPT_RESET; wr_cfg.callback = wdt_example_callback; wdt_fired = 0; qm_wdt_set_config(QM_WDT_0, &wr_cfg); qm_irq_request(QM_IRQ_WDT_0, qm_wdt_isr_0); qm_wdt_start(QM_WDT_0); /* Wait for WDT to fire 10 times and then finish. */ while (wdt_fired < MAX_WDT_FIRINGS) { } QM_PRINTF("Watchdog fired %d times\n", MAX_WDT_FIRINGS); QM_PRINTF("Finished: WDT\n"); return 0; }