#include <linux/module.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/comedi/comedidev.h>
#include <linux/comedi/comedi_8254.h>
#define PCL711_TIMER_BASE …
#define PCL711_AI_LSB_REG …
#define PCL711_AI_MSB_REG …
#define PCL711_AI_MSB_DRDY …
#define PCL711_AO_LSB_REG(x) …
#define PCL711_AO_MSB_REG(x) …
#define PCL711_DI_LSB_REG …
#define PCL711_DI_MSB_REG …
#define PCL711_INT_STAT_REG …
#define PCL711_INT_STAT_CLR …
#define PCL711_AI_GAIN_REG …
#define PCL711_AI_GAIN(x) …
#define PCL711_MUX_REG …
#define PCL711_MUX_CHAN(x) …
#define PCL711_MUX_CS0 …
#define PCL711_MUX_CS1 …
#define PCL711_MUX_DIFF …
#define PCL711_MODE_REG …
#define PCL711_MODE(x) …
#define PCL711_MODE_DEFAULT …
#define PCL711_MODE_SOFTTRIG …
#define PCL711_MODE_EXT …
#define PCL711_MODE_EXT_IRQ …
#define PCL711_MODE_PACER …
#define PCL711_MODE_PACER_IRQ …
#define PCL711_MODE_IRQ(x) …
#define PCL711_SOFTTRIG_REG …
#define PCL711_SOFTTRIG …
#define PCL711_DO_LSB_REG …
#define PCL711_DO_MSB_REG …
static const struct comedi_lrange range_pcl711b_ai = …;
static const struct comedi_lrange range_acl8112hg_ai = …;
static const struct comedi_lrange range_acl8112dg_ai = …;
struct pcl711_board { … };
static const struct pcl711_board boardtypes[] = …;
static void pcl711_ai_set_mode(struct comedi_device *dev, unsigned int mode)
{ … }
static unsigned int pcl711_ai_get_sample(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int pcl711_ai_cancel(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static irqreturn_t pcl711_interrupt(int irq, void *d)
{ … }
static void pcl711_set_changain(struct comedi_device *dev,
struct comedi_subdevice *s,
unsigned int chanspec)
{ … }
static int pcl711_ai_eoc(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned long context)
{ … }
static int pcl711_ai_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int pcl711_ai_cmdtest(struct comedi_device *dev,
struct comedi_subdevice *s, struct comedi_cmd *cmd)
{ … }
static int pcl711_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
{ … }
static void pcl711_ao_write(struct comedi_device *dev,
unsigned int chan, unsigned int val)
{ … }
static int pcl711_ao_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int pcl711_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int pcl711_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int pcl711_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{ … }
static struct comedi_driver pcl711_driver = …;
module_comedi_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;