#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/comedi/comedi_pci.h>
#define NI6527_DI_REG(x) …
#define NI6527_DO_REG(x) …
#define NI6527_ID_REG …
#define NI6527_CLR_REG …
#define NI6527_CLR_EDGE …
#define NI6527_CLR_OVERFLOW …
#define NI6527_CLR_FILT …
#define NI6527_CLR_INTERVAL …
#define NI6527_CLR_IRQS …
#define NI6527_CLR_RESET_FILT …
#define NI6527_FILT_INTERVAL_REG(x) …
#define NI6527_FILT_ENA_REG(x) …
#define NI6527_STATUS_REG …
#define NI6527_STATUS_IRQ …
#define NI6527_STATUS_OVERFLOW …
#define NI6527_STATUS_EDGE …
#define NI6527_CTRL_REG …
#define NI6527_CTRL_FALLING …
#define NI6527_CTRL_RISING …
#define NI6527_CTRL_IRQ …
#define NI6527_CTRL_OVERFLOW …
#define NI6527_CTRL_EDGE …
#define NI6527_CTRL_DISABLE_IRQS …
#define NI6527_CTRL_ENABLE_IRQS …
#define NI6527_RISING_EDGE_REG(x) …
#define NI6527_FALLING_EDGE_REG(x) …
enum ni6527_boardid { … };
struct ni6527_board { … };
static const struct ni6527_board ni6527_boards[] = …;
struct ni6527_private { … };
static void ni6527_set_filter_interval(struct comedi_device *dev,
unsigned int val)
{ … }
static void ni6527_set_filter_enable(struct comedi_device *dev,
unsigned int val)
{ … }
static int ni6527_di_insn_config(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int ni6527_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int ni6527_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static irqreturn_t ni6527_interrupt(int irq, void *d)
{ … }
static int ni6527_intr_cmdtest(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_cmd *cmd)
{ … }
static int ni6527_intr_cmd(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int ni6527_intr_cancel(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int ni6527_intr_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{ … }
static void ni6527_set_edge_detection(struct comedi_device *dev,
unsigned int mask,
unsigned int rising,
unsigned int falling)
{ … }
static int ni6527_intr_insn_config(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static void ni6527_reset(struct comedi_device *dev)
{ … }
static int ni6527_auto_attach(struct comedi_device *dev,
unsigned long context)
{ … }
static void ni6527_detach(struct comedi_device *dev)
{ … }
static struct comedi_driver ni6527_driver = …;
static int ni6527_pci_probe(struct pci_dev *dev,
const struct pci_device_id *id)
{ … }
static const struct pci_device_id ni6527_pci_table[] = …;
MODULE_DEVICE_TABLE(pci, ni6527_pci_table);
static struct pci_driver ni6527_pci_driver = …;
module_comedi_pci_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;