#include <linux/delay.h>
#include <linux/dmi.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/platform_device.h>
#include <linux/string.h>
#include <linux/types.h>
#include <linux/watchdog.h>
#define STATUS_PORT …
#define CMD_PORT …
#define DATA_PORT …
#define OUTBUF_FULL …
#define INBUF_EMPTY …
#define CFG_LDN …
#define CFG_BRAM_LDN …
#define CFG_PORT …
#define CFG_SIZE …
#define CMD_SIZE …
#define BRAM_SIZE …
#define UNLOCK_KEY …
#define LOCK_KEY …
#define CUS_WDT_SWI …
#define CUS_WDT_CFG …
#define CUS_WDT_FEED …
#define CUS_WDT_CNT …
#define DRVNAME …
#define MIN_TIMEOUT …
#define MAX_TIMEOUT …
#define MAX_WAIT …
#define WATCHDOG_TIMEOUT …
static unsigned short bram_base;
static struct platform_device *se10_pdev;
static int timeout;
module_param(timeout, int, 0);
MODULE_PARM_DESC(…) …;
static bool nowayout = … WATCHDOG_NOWAYOUT;
module_param(nowayout, bool, 0);
MODULE_PARM_DESC(…) …;
struct se10_wdt { … };
static int set_bram(unsigned char offset, unsigned char val)
{ … }
static void wait_for_buffer(int condition)
{ … }
static void send_cmd(unsigned char cmd)
{ … }
static void lpc_write(unsigned char index, unsigned char data)
{ … }
static unsigned char lpc_read(unsigned char index)
{ … }
static int wdt_start(struct watchdog_device *wdog)
{ … }
static int wdt_set_timeout(struct watchdog_device *wdog, unsigned int timeout)
{ … }
static int wdt_stop(struct watchdog_device *wdog)
{ … }
static unsigned int wdt_get_time(struct watchdog_device *wdog)
{ … }
static int wdt_ping(struct watchdog_device *wdog)
{ … }
static const struct watchdog_info wdt_info = …;
static const struct watchdog_ops se10_wdt_ops = …;
static unsigned int get_chipID(void)
{ … }
static int se10_wdt_probe(struct platform_device *pdev)
{ … }
static struct platform_driver se10_wdt_driver = …;
static int se10_create_platform_device(const struct dmi_system_id *id)
{ … }
static const struct dmi_system_id se10_dmi_table[] __initconst = …;
MODULE_DEVICE_TABLE(dmi, se10_dmi_table);
static int __init se10_wdt_init(void)
{ … }
static void __exit se10_wdt_exit(void)
{ … }
module_init(…) …;
module_exit(se10_wdt_exit);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;