#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/comedi/comedidev.h>
#define PARPORT_DATA_REG …
#define PARPORT_STATUS_REG …
#define PARPORT_CTRL_REG …
#define PARPORT_CTRL_IRQ_ENA …
#define PARPORT_CTRL_BIDIR_ENA …
static int parport_data_reg_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int parport_data_reg_insn_config(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int parport_status_reg_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int parport_ctrl_reg_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int parport_intr_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int parport_intr_cmdtest(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_cmd *cmd)
{ … }
static int parport_intr_cmd(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int parport_intr_cancel(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static irqreturn_t parport_interrupt(int irq, void *d)
{ … }
static int parport_attach(struct comedi_device *dev,
struct comedi_devconfig *it)
{ … }
static struct comedi_driver parport_driver = …;
module_comedi_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;