#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/comedi/comedidev.h>
#include <linux/comedi/comedi_8255.h>
#define COM_REG_1 …
#define STAT_REG …
#define COM_REG_2 …
#define START_CONVERT_REG …
#define START_DAQ_REG …
#define AD_CLEAR_REG …
#define EXT_STROBE_REG …
#define DAC0_REG …
#define DAC1_REG …
#define INT2CLR_REG …
#define MUX_CNTR_REG …
#define MUX_GAIN_REG …
#define AD_FIFO_REG …
#define DMA_TC_INT_CLR_REG …
#define AM9513A_DATA_REG …
#define AM9513A_COM_REG …
#define AM9513A_STAT_REG …
#define MIO_16_DIG_IN_REG …
#define MIO_16_DIG_OUT_REG …
#define RTSI_SW_SHIFT_REG …
#define RTSI_SW_STROBE_REG …
#define DIO_24_PORTA_REG …
#define DIO_24_PORTB_REG …
#define DIO_24_PORTC_REG …
#define DIO_24_CNFG_REG …
#define COMREG1_2SCADC …
#define COMREG1_1632CNT …
#define COMREG1_SCANEN …
#define COMREG1_DAQEN …
#define COMREG1_DMAEN …
#define COMREG1_CONVINTEN …
#define COMREG2_SCN2 …
#define COMREG2_INTEN …
#define COMREG2_DOUTEN0 …
#define COMREG2_DOUTEN1 …
#define STAT_AD_OVERRUN …
#define STAT_AD_OVERFLOW …
#define STAT_AD_DAQPROG …
#define STAT_AD_CONVAVAIL …
#define STAT_AD_DAQSTOPINT …
#define CLOCK_1_MHZ …
#define CLOCK_100_KHZ …
#define CLOCK_10_KHZ …
#define CLOCK_1_KHZ …
#define CLOCK_100_HZ …
struct atmio16_board_t { … };
static const struct comedi_lrange range_atmio16d_ai_10_bipolar = …;
static const struct comedi_lrange range_atmio16d_ai_5_bipolar = …;
static const struct comedi_lrange range_atmio16d_ai_unipolar = …;
struct atmio16d_private { … };
static void reset_counters(struct comedi_device *dev)
{ … }
static void reset_atmio16d(struct comedi_device *dev)
{ … }
static irqreturn_t atmio16d_interrupt(int irq, void *d)
{ … }
static int atmio16d_ai_cmdtest(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_cmd *cmd)
{ … }
static int atmio16d_ai_cmd(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int atmio16d_ai_cancel(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int atmio16d_ai_eoc(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned long context)
{ … }
static int atmio16d_ai_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{ … }
static int atmio16d_ao_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int atmio16d_dio_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int atmio16d_dio_insn_config(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int atmio16d_attach(struct comedi_device *dev,
struct comedi_devconfig *it)
{ … }
static void atmio16d_detach(struct comedi_device *dev)
{ … }
static const struct atmio16_board_t atmio16_boards[] = …;
static struct comedi_driver atmio16d_driver = …;
module_comedi_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;