#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/errno.h>
#include <linux/interrupt.h>
#include <linux/timex.h>
#include <linux/timer.h>
#include <linux/io.h>
#include <linux/pnp.h>
#include <linux/comedi/comedidev.h>
#define C6XDIGIO_DATA_REG …
#define C6XDIGIO_DATA_CHAN(x) …
#define C6XDIGIO_DATA_PWM …
#define C6XDIGIO_DATA_ENCODER …
#define C6XDIGIO_STATUS_REG …
#define C6XDIGIO_CTRL_REG …
#define C6XDIGIO_TIME_OUT …
static int c6xdigio_chk_status(struct comedi_device *dev, unsigned long context)
{ … }
static int c6xdigio_write_data(struct comedi_device *dev,
unsigned int val, unsigned int status)
{ … }
static int c6xdigio_get_encoder_bits(struct comedi_device *dev,
unsigned int *bits,
unsigned int cmd,
unsigned int status)
{ … }
static void c6xdigio_pwm_write(struct comedi_device *dev,
unsigned int chan, unsigned int val)
{ … }
static int c6xdigio_encoder_read(struct comedi_device *dev,
unsigned int chan)
{ … }
static int c6xdigio_pwm_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int c6xdigio_pwm_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int c6xdigio_encoder_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static void c6xdigio_init(struct comedi_device *dev)
{ … }
static const struct pnp_device_id c6xdigio_pnp_tbl[] = …;
static struct pnp_driver c6xdigio_pnp_driver = …;
static int c6xdigio_attach(struct comedi_device *dev,
struct comedi_devconfig *it)
{ … }
static void c6xdigio_detach(struct comedi_device *dev)
{ … }
static struct comedi_driver c6xdigio_driver = …;
module_comedi_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;