int fh_wdt_probe(void *priv_data) { rt_watchdog_t *wdt_dev; struct wdt_driver *wdt_drv; struct fh_wdt_obj *wdt_obj = (struct fh_wdt_obj *)priv_data; wdt_drv = (struct wdt_driver *)rt_malloc(sizeof(struct wdt_driver)); rt_memset(wdt_drv, 0, sizeof(struct wdt_driver)); wdt_drv->priv = wdt_obj; rt_hw_interrupt_install(wdt_obj->irq, fh_wdt_interrupt, (void *)wdt_drv, "wdt_irq"); rt_hw_interrupt_umask(wdt_obj->irq); // todo: clk wdt_dev = (rt_watchdog_t *)rt_malloc(sizeof(rt_watchdog_t)); if (wdt_dev == RT_NULL) { rt_kprintf("ERROR: %s rt_watchdog_t malloc failed\n", __func__); } wdt_dev->ops = &fh_watchdog_ops; rt_hw_watchdog_register(wdt_dev, "fh_wdt", RT_DEVICE_OFLAG_RDWR, wdt_drv); return 0; }
int rt_hw_wdg_init(void) { stm32f1_wdg.ops = &stm32f1_wdg_pos; rt_hw_watchdog_register(&stm32f1_wdg, "wdg", 0, RT_NULL); return RT_EOK; }