#include <linux/module.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/comedi/comedidev.h>
#include <linux/comedi/comedi_8255.h>
#include <linux/comedi/comedi_8254.h>
#include <linux/comedi/comedi_isadma.h>
#define DAS16_DMA_SIZE …
#define DAS16_TRIG_REG …
#define DAS16_AI_LSB_REG …
#define DAS16_AI_MSB_REG …
#define DAS16_MUX_REG …
#define DAS16_DIO_REG …
#define DAS16_AO_LSB_REG(x) …
#define DAS16_AO_MSB_REG(x) …
#define DAS16_STATUS_REG …
#define DAS16_STATUS_BUSY …
#define DAS16_STATUS_UNIPOLAR …
#define DAS16_STATUS_MUXBIT …
#define DAS16_STATUS_INT …
#define DAS16_CTRL_REG …
#define DAS16_CTRL_INTE …
#define DAS16_CTRL_IRQ(x) …
#define DAS16_CTRL_DMAE …
#define DAS16_CTRL_PACING_MASK …
#define DAS16_CTRL_INT_PACER …
#define DAS16_CTRL_EXT_PACER …
#define DAS16_CTRL_SOFT_PACER …
#define DAS16_PACER_REG …
#define DAS16_PACER_BURST_LEN(x) …
#define DAS16_PACER_CTR0 …
#define DAS16_PACER_TRIG0 …
#define DAS16_GAIN_REG …
#define DAS16_TIMER_BASE_REG …
#define DAS1600_CONV_REG …
#define DAS1600_CONV_DISABLE …
#define DAS1600_BURST_REG …
#define DAS1600_BURST_VAL …
#define DAS1600_ENABLE_REG …
#define DAS1600_ENABLE_VAL …
#define DAS1600_STATUS_REG …
#define DAS1600_STATUS_BME …
#define DAS1600_STATUS_ME …
#define DAS1600_STATUS_CD …
#define DAS1600_STATUS_WS …
#define DAS1600_STATUS_CLK_10MHZ …
static const struct comedi_lrange range_das1x01_bip = …;
static const struct comedi_lrange range_das1x01_unip = …;
static const struct comedi_lrange range_das1x02_bip = …;
static const struct comedi_lrange range_das1x02_unip = …;
static const struct comedi_lrange range_das16jr = …;
static const struct comedi_lrange range_das16jr_16 = …;
static const int das16jr_gainlist[] = …;
static const int das16jr_16_gainlist[] = …;
static const int das1600_gainlist[] = …;
enum { … };
static const int *const das16_gainlists[] = …;
static const struct comedi_lrange *const das16_ai_uni_lranges[] = …;
static const struct comedi_lrange *const das16_ai_bip_lranges[] = …;
struct das16_board { … };
static const struct das16_board das16_boards[] = …;
static inline int timer_period(void)
{ … }
struct das16_private_struct { … };
static void das16_ai_setup_dma(struct comedi_device *dev,
struct comedi_subdevice *s,
unsigned int unread_samples)
{ … }
static void das16_interrupt(struct comedi_device *dev)
{ … }
static void das16_timer_interrupt(struct timer_list *t)
{ … }
static void das16_ai_set_mux_range(struct comedi_device *dev,
unsigned int first_chan,
unsigned int last_chan,
unsigned int range)
{ … }
static int das16_ai_check_chanlist(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_cmd *cmd)
{ … }
static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s,
struct comedi_cmd *cmd)
{ … }
static unsigned int das16_set_pacer(struct comedi_device *dev, unsigned int ns,
unsigned int flags)
{ … }
static int das16_cmd_exec(struct comedi_device *dev, struct comedi_subdevice *s)
{ … }
static int das16_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
{ … }
static void das16_ai_munge(struct comedi_device *dev,
struct comedi_subdevice *s, void *array,
unsigned int num_bytes,
unsigned int start_chan_index)
{ … }
static int das16_ai_eoc(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned long context)
{ … }
static int das16_ai_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int das16_ao_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int das16_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int das16_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int das16_probe(struct comedi_device *dev, struct comedi_devconfig *it)
{ … }
static void das16_reset(struct comedi_device *dev)
{ … }
static void das16_alloc_dma(struct comedi_device *dev, unsigned int dma_chan)
{ … }
static void das16_free_dma(struct comedi_device *dev)
{ … }
static const struct comedi_lrange *das16_ai_range(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_devconfig *it,
unsigned int pg_type,
unsigned int status)
{ … }
static const struct comedi_lrange *das16_ao_range(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_devconfig *it)
{ … }
static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{ … }
static void das16_detach(struct comedi_device *dev)
{ … }
static struct comedi_driver das16_driver = …;
module_comedi_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;