#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/delay.h>
#include <linux/comedi/comedidev.h>
#define DT2811_ADCSR_REG …
#define DT2811_ADCSR_ADDONE …
#define DT2811_ADCSR_ADERROR …
#define DT2811_ADCSR_ADBUSY …
#define DT2811_ADCSR_CLRERROR …
#define DT2811_ADCSR_DMAENB …
#define DT2811_ADCSR_INTENB …
#define DT2811_ADCSR_ADMODE(x) …
#define DT2811_ADGCR_REG …
#define DT2811_ADGCR_GAIN(x) …
#define DT2811_ADGCR_CHAN(x) …
#define DT2811_ADDATA_LO_REG …
#define DT2811_ADDATA_HI_REG …
#define DT2811_DADATA_LO_REG(x) …
#define DT2811_DADATA_HI_REG(x) …
#define DT2811_DI_REG …
#define DT2811_DO_REG …
#define DT2811_TMRCTR_REG …
#define DT2811_TMRCTR_MANTISSA(x) …
#define DT2811_TMRCTR_EXPONENT(x) …
#define DT2811_OSC_BASE …
static const unsigned int dt2811_clk_dividers[] = …;
static const unsigned int dt2811_clk_multipliers[] = …;
static const struct comedi_lrange dt2811_pgh_ai_ranges = …;
static const struct comedi_lrange dt2811_pgl_ai_ranges = …;
static const struct comedi_lrange dt2811_ao_ranges = …;
struct dt2811_board { … };
static const struct dt2811_board dt2811_boards[] = …;
struct dt2811_private { … };
static unsigned int dt2811_ai_read_sample(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static irqreturn_t dt2811_interrupt(int irq, void *d)
{ … }
static int dt2811_ai_cancel(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static void dt2811_ai_set_chanspec(struct comedi_device *dev,
unsigned int chanspec)
{ … }
static int dt2811_ai_cmd(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static unsigned int dt2811_ns_to_timer(unsigned int *nanosec,
unsigned int flags)
{ … }
static int dt2811_ai_cmdtest(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_cmd *cmd)
{ … }
static int dt2811_ai_eoc(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned long context)
{ … }
static int dt2811_ai_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int dt2811_ao_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int dt2811_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int dt2811_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static void dt2811_reset(struct comedi_device *dev)
{ … }
static int dt2811_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{ … }
static struct comedi_driver dt2811_driver = …;
module_comedi_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;