#include <linux/device.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/ioport.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/platform_data/x86/p2sb.h>
#include <linux/platform_data/x86/simatic-ipc-base.h>
#include <linux/platform_device.h>
#include <linux/sizes.h>
#include <linux/util_macros.h>
#include <linux/watchdog.h>
#define WD_ENABLE_IOADR …
#define WD_TRIGGER_IOADR …
#define GPIO_COMMUNITY0_PORT_ID …
#define PAD_CFG_DW0_GPP_A_23 …
#define SAFE_EN_N_427E …
#define SAFE_EN_N_227E …
#define WD_ENABLED …
#define WD_TRIGGERED …
#define WD_MACROMODE …
#define TIMEOUT_MIN …
#define TIMEOUT_DEF …
#define TIMEOUT_MAX …
#define GP_STATUS_REG_227E …
static bool nowayout = … WATCHDOG_NOWAYOUT;
module_param(nowayout, bool, 0000);
MODULE_PARM_DESC(…) …;
static struct resource gp_status_reg_227e_res = …;
static struct resource io_resource_enable = …;
static struct resource io_resource_trigger = …;
static struct resource mem_resource = …;
static u32 wd_timeout_table[] = …;
static void __iomem *wd_reset_base_addr;
static int wd_start(struct watchdog_device *wdd)
{ … }
static int wd_stop(struct watchdog_device *wdd)
{ … }
static int wd_ping(struct watchdog_device *wdd)
{ … }
static int wd_set_timeout(struct watchdog_device *wdd, unsigned int t)
{ … }
static const struct watchdog_info wdt_ident = …;
static const struct watchdog_ops wdt_ops = …;
static void wd_secondary_enable(u32 wdtmode)
{ … }
static int wd_setup(u32 wdtmode)
{ … }
static struct watchdog_device wdd_data = …;
static int simatic_ipc_wdt_probe(struct platform_device *pdev)
{ … }
static struct platform_driver simatic_ipc_wdt_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;
MODULE_AUTHOR(…) …;