#define pr_fmt(fmt) …
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/ioport.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/watchdog.h>
#define DRVNAME …
#define SIO_F71808FG_LD_WDT …
#define SIO_UNLOCK_KEY …
#define SIO_LOCK_KEY …
#define SIO_REG_LDSEL …
#define SIO_REG_DEVID …
#define SIO_REG_DEVREV …
#define SIO_REG_MANID …
#define SIO_REG_CLOCK_SEL …
#define SIO_REG_ROM_ADDR_SEL …
#define SIO_F81866_REG_PORT_SEL …
#define SIO_REG_TSI_LEVEL_SEL …
#define SIO_REG_MFUNCT1 …
#define SIO_REG_MFUNCT2 …
#define SIO_REG_MFUNCT3 …
#define SIO_F81866_REG_GPIO1 …
#define SIO_REG_ENABLE …
#define SIO_REG_ADDR …
#define SIO_FINTEK_ID …
#define SIO_F71808_ID …
#define SIO_F71858_ID …
#define SIO_F71862_ID …
#define SIO_F71868_ID …
#define SIO_F71869_ID …
#define SIO_F71869A_ID …
#define SIO_F71882_ID …
#define SIO_F71889_ID …
#define SIO_F81803_ID …
#define SIO_F81865_ID …
#define SIO_F81866_ID …
#define SIO_F81966_ID …
#define F71808FG_REG_WDO_CONF …
#define F71808FG_REG_WDT_CONF …
#define F71808FG_REG_WD_TIME …
#define F71808FG_FLAG_WDOUT_EN …
#define F71808FG_FLAG_WDTMOUT_STS …
#define F71808FG_FLAG_WD_EN …
#define F71808FG_FLAG_WD_PULSE …
#define F71808FG_FLAG_WD_UNIT …
#define F81865_REG_WDO_CONF …
#define F81865_FLAG_WDOUT_EN …
#define WATCHDOG_TIMEOUT …
#define WATCHDOG_MAX_TIMEOUT …
#define WATCHDOG_PULSE_WIDTH …
#define WATCHDOG_F71862FG_PIN …
static unsigned short force_id;
module_param(force_id, ushort, 0);
MODULE_PARM_DESC(…) …;
static int timeout = …;
module_param(timeout, int, 0);
MODULE_PARM_DESC(…) …;
static unsigned int pulse_width = …;
module_param(pulse_width, uint, 0);
MODULE_PARM_DESC(…) …;
static unsigned int f71862fg_pin = …;
module_param(f71862fg_pin, uint, 0);
MODULE_PARM_DESC(…) …;
static bool nowayout = … WATCHDOG_NOWAYOUT;
module_param(nowayout, bool, 0444);
MODULE_PARM_DESC(…) …;
static unsigned int start_withtimeout;
module_param(start_withtimeout, uint, 0);
MODULE_PARM_DESC(…) …;
enum chips { … };
static const char * const fintek_wdt_names[] = …;
static inline int superio_inb(int base, int reg);
static inline int superio_inw(int base, int reg);
static inline void superio_outb(int base, int reg, u8 val);
static inline void superio_set_bit(int base, int reg, int bit);
static inline void superio_clear_bit(int base, int reg, int bit);
static inline int superio_enter(int base);
static inline void superio_select(int base, int ld);
static inline void superio_exit(int base);
struct fintek_wdt { … };
struct fintek_wdt_pdata { … };
static inline int superio_inb(int base, int reg)
{ … }
static int superio_inw(int base, int reg)
{ … }
static inline void superio_outb(int base, int reg, u8 val)
{ … }
static inline void superio_set_bit(int base, int reg, int bit)
{ … }
static inline void superio_clear_bit(int base, int reg, int bit)
{ … }
static inline int superio_enter(int base)
{ … }
static inline void superio_select(int base, int ld)
{ … }
static inline void superio_exit(int base)
{ … }
static int fintek_wdt_set_timeout(struct watchdog_device *wdd, unsigned int timeout)
{ … }
static int fintek_wdt_set_pulse_width(struct fintek_wdt *wd, unsigned int pw)
{ … }
static int fintek_wdt_keepalive(struct watchdog_device *wdd)
{ … }
static int fintek_wdt_start(struct watchdog_device *wdd)
{ … }
static int fintek_wdt_stop(struct watchdog_device *wdd)
{ … }
static bool fintek_wdt_is_running(struct fintek_wdt *wd, u8 wdt_conf)
{ … }
static const struct watchdog_ops fintek_wdt_ops = …;
static int fintek_wdt_probe(struct platform_device *pdev)
{ … }
static int __init fintek_wdt_find(int sioaddr)
{ … }
static struct platform_driver fintek_wdt_driver = …;
static struct platform_device *fintek_wdt_pdev;
static int __init fintek_wdt_init(void)
{ … }
static void __exit fintek_wdt_exit(void)
{ … }
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
module_init(…) …;
module_exit(fintek_wdt_exit);