#define pr_fmt(fmt) …
#include <linux/io.h>
#include <linux/list.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/watchdog.h>
#define DRV_NAME …
static const unsigned short sio_config_ports[] = …;
static const unsigned char sio_enter_keys[] = …;
#define EXAR_EXIT_KEY …
#define EXAR_LDN …
#define EXAR_DID …
#define EXAR_VID …
#define EXAR_WDT …
#define EXAR_ACT …
#define EXAR_RTBASE …
#define EXAR_WDT_LDEV …
#define EXAR_VEN_ID …
#define EXAR_DEV_382 …
#define EXAR_DEV_384 …
#define WDT_CTRL …
#define WDT_VAL …
#define WDT_UNITS_10MS …
#define WDT_UNITS_SEC …
#define WDT_UNITS_MIN …
#define EXAR_WDT_DEF_CONF …
struct wdt_pdev_node { … };
struct wdt_priv { … };
#define WATCHDOG_TIMEOUT …
static int timeout = …;
module_param(timeout, int, 0);
MODULE_PARM_DESC(…) …;
static bool nowayout = … WATCHDOG_NOWAYOUT;
module_param(nowayout, bool, 0);
MODULE_PARM_DESC(…) …;
static int exar_sio_enter(const unsigned short config_port,
const unsigned char key)
{ … }
static void exar_sio_exit(const unsigned short config_port)
{ … }
static unsigned char exar_sio_read(const unsigned short config_port,
const unsigned char reg)
{ … }
static void exar_sio_write(const unsigned short config_port,
const unsigned char reg, const unsigned char val)
{ … }
static unsigned short exar_sio_read16(const unsigned short config_port,
const unsigned char reg)
{ … }
static void exar_sio_select_wdt(const unsigned short config_port)
{ … }
static void exar_wdt_arm(const struct wdt_priv *priv)
{ … }
static void exar_wdt_disarm(const struct wdt_priv *priv)
{ … }
static int exar_wdt_start(struct watchdog_device *wdog)
{ … }
static int exar_wdt_stop(struct watchdog_device *wdog)
{ … }
static int exar_wdt_keepalive(struct watchdog_device *wdog)
{ … }
static int exar_wdt_set_timeout(struct watchdog_device *wdog, unsigned int t)
{ … }
static const struct watchdog_info exar_wdt_info = …;
static const struct watchdog_ops exar_wdt_ops = …;
static int exar_wdt_config(struct watchdog_device *wdog,
const unsigned char conf)
{ … }
static int __init exar_wdt_probe(struct platform_device *pdev)
{ … }
static unsigned short __init exar_detect(const unsigned short config_port,
const unsigned char key,
unsigned short *rt_base)
{ … }
static struct platform_driver exar_wdt_driver = …;
static LIST_HEAD(pdev_list);
static int __init exar_wdt_register(struct wdt_priv *priv, const int idx)
{ … }
static void exar_wdt_unregister(void)
{ … }
static int __init exar_wdt_init(void)
{ … }
static void __exit exar_wdt_exit(void)
{ … }
module_init(…) …;
module_exit(exar_wdt_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;