#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/comedi/comedidev.h>
#include <linux/delay.h>
#define DT2814_CSR …
#define DT2814_DATA …
#define DT2814_FINISH …
#define DT2814_ERR …
#define DT2814_BUSY …
#define DT2814_ENB …
#define DT2814_CHANMASK …
#define DT2814_TIMEOUT …
#define DT2814_MAX_SPEED …
static int dt2814_ai_notbusy(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned long context)
{ … }
static int dt2814_ai_clear(struct comedi_device *dev)
{ … }
static int dt2814_ai_eoc(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned long context)
{ … }
static int dt2814_ai_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{ … }
static int dt2814_ns_to_timer(unsigned int *ns, unsigned int flags)
{ … }
static int dt2814_ai_cmdtest(struct comedi_device *dev,
struct comedi_subdevice *s, struct comedi_cmd *cmd)
{ … }
static int dt2814_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
{ … }
static int dt2814_ai_cancel(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static irqreturn_t dt2814_interrupt(int irq, void *d)
{ … }
static int dt2814_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{ … }
static void dt2814_detach(struct comedi_device *dev)
{ … }
static struct comedi_driver dt2814_driver = …;
module_comedi_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;