#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/slab.h>
#include <linux/comedi/comedi_pci.h>
#include "addi_watchdog.h"
#define APCI2032_DO_REG …
#define APCI2032_INT_CTRL_REG …
#define APCI2032_INT_CTRL_VCC_ENA …
#define APCI2032_INT_CTRL_CC_ENA …
#define APCI2032_INT_STATUS_REG …
#define APCI2032_INT_STATUS_VCC …
#define APCI2032_INT_STATUS_CC …
#define APCI2032_STATUS_REG …
#define APCI2032_STATUS_IRQ …
#define APCI2032_WDOG_REG …
struct apci2032_int_private { … };
static int apci2032_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int apci2032_int_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static void apci2032_int_stop(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int apci2032_int_cmdtest(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_cmd *cmd)
{ … }
static int apci2032_int_cmd(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int apci2032_int_cancel(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static irqreturn_t apci2032_interrupt(int irq, void *d)
{ … }
static int apci2032_reset(struct comedi_device *dev)
{ … }
static int apci2032_auto_attach(struct comedi_device *dev,
unsigned long context_unused)
{ … }
static void apci2032_detach(struct comedi_device *dev)
{ … }
static struct comedi_driver apci2032_driver = …;
static int apci2032_pci_probe(struct pci_dev *dev,
const struct pci_device_id *id)
{ … }
static const struct pci_device_id apci2032_pci_table[] = …;
MODULE_DEVICE_TABLE(pci, apci2032_pci_table);
static struct pci_driver apci2032_pci_driver = …;
module_comedi_pci_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;