关键流程设计
初始化流程
WDT 驱动的初始化过程见 aic_wdt_probe()函数,除了普通 platform 设备的处理过程(申请 regs 资源、clk、reset)外,需要调用 WDT 子系统的接口 devm_watchdog_register_device()来注册 WDT 设备。
int devm_watchdog_register_device(struct device *dev, struct watchdog_device *);
其中参数 device 中关键信息有:名称、属性、最大/最小/默认 timeout、ops 等,aic_wdt_ops 定义如下:
static const struct watchdog_ops aic_wdt_ops = { .owner = THIS_MODULE, .start = aic_wdt_start, .stop = aic_wdt_stop, .ping = aic_wdt_ping, .set_timeout = aic_wdt_set_timeout, .set_pretimeout = aic_wdt_set_pretimeout, .restart = aic_wdt_restart, };