#include <linux/clk.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/reboot.h>
#include <linux/watchdog.h>
#define WDOG_CS …
#define WDOG_CS_FLG …
#define WDOG_CS_CMD32EN …
#define WDOG_CS_PRES …
#define WDOG_CS_ULK …
#define WDOG_CS_RCS …
#define LPO_CLK …
#define LPO_CLK_SHIFT …
#define WDOG_CS_CLK …
#define WDOG_CS_EN …
#define WDOG_CS_INT_EN …
#define WDOG_CS_UPDATE …
#define WDOG_CS_WAIT …
#define WDOG_CS_STOP …
#define WDOG_CNT …
#define WDOG_TOVAL …
#define REFRESH_SEQ0 …
#define REFRESH_SEQ1 …
#define REFRESH …
#define UNLOCK_SEQ0 …
#define UNLOCK_SEQ1 …
#define UNLOCK …
#define DEFAULT_TIMEOUT …
#define MAX_TIMEOUT …
#define WDOG_CLOCK_RATE …
#define WDOG_ULK_WAIT_TIMEOUT …
#define WDOG_RCS_WAIT_TIMEOUT …
#define WDOG_RCS_POST_WAIT …
#define RETRY_MAX …
static bool nowayout = … WATCHDOG_NOWAYOUT;
module_param(nowayout, bool, 0000);
MODULE_PARM_DESC(…) …;
struct imx_wdt_hw_feature { … };
struct imx7ulp_wdt_device { … };
static int imx7ulp_wdt_wait_ulk(void __iomem *base)
{ … }
static int imx7ulp_wdt_wait_rcs(struct imx7ulp_wdt_device *wdt)
{ … }
static int _imx7ulp_wdt_enable(struct imx7ulp_wdt_device *wdt, bool enable)
{ … }
static int imx7ulp_wdt_enable(struct watchdog_device *wdog, bool enable)
{ … }
static int imx7ulp_wdt_ping(struct watchdog_device *wdog)
{ … }
static int imx7ulp_wdt_start(struct watchdog_device *wdog)
{ … }
static int imx7ulp_wdt_stop(struct watchdog_device *wdog)
{ … }
static int _imx7ulp_wdt_set_timeout(struct imx7ulp_wdt_device *wdt,
unsigned int toval)
{ … }
static int imx7ulp_wdt_set_timeout(struct watchdog_device *wdog,
unsigned int timeout)
{ … }
static int imx7ulp_wdt_restart(struct watchdog_device *wdog,
unsigned long action, void *data)
{ … }
static const struct watchdog_ops imx7ulp_wdt_ops = …;
static const struct watchdog_info imx7ulp_wdt_info = …;
static int _imx7ulp_wdt_init(struct imx7ulp_wdt_device *wdt, unsigned int timeout, unsigned int cs)
{ … }
static int imx7ulp_wdt_init(struct imx7ulp_wdt_device *wdt, unsigned int timeout)
{ … }
static int imx7ulp_wdt_probe(struct platform_device *pdev)
{ … }
static int __maybe_unused imx7ulp_wdt_suspend_noirq(struct device *dev)
{ … }
static int __maybe_unused imx7ulp_wdt_resume_noirq(struct device *dev)
{ … }
static const struct dev_pm_ops imx7ulp_wdt_pm_ops = …;
static const struct imx_wdt_hw_feature imx7ulp_wdt_hw = …;
static const struct imx_wdt_hw_feature imx93_wdt_hw = …;
static const struct of_device_id imx7ulp_wdt_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, imx7ulp_wdt_dt_ids);
static struct platform_driver imx7ulp_wdt_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;