#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/comedi/comedi_pci.h>
#include "amcc_s5933.h"
#include "z8536.h"
#define APCI1500_Z8536_PORTC_REG …
#define APCI1500_Z8536_PORTB_REG …
#define APCI1500_Z8536_PORTA_REG …
#define APCI1500_Z8536_CTRL_REG …
#define APCI1500_CLK_SEL_REG …
#define APCI1500_DI_REG …
#define APCI1500_DO_REG …
struct apci1500_private { … };
static unsigned int z8536_read(struct comedi_device *dev, unsigned int reg)
{ … }
static void z8536_write(struct comedi_device *dev,
unsigned int val, unsigned int reg)
{ … }
static void z8536_reset(struct comedi_device *dev)
{ … }
static void apci1500_port_enable(struct comedi_device *dev, bool enable)
{ … }
static void apci1500_timer_enable(struct comedi_device *dev,
unsigned int chan, bool enable)
{ … }
static bool apci1500_ack_irq(struct comedi_device *dev,
unsigned int reg)
{ … }
static irqreturn_t apci1500_interrupt(int irq, void *d)
{ … }
static int apci1500_di_cancel(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int apci1500_di_inttrig_start(struct comedi_device *dev,
struct comedi_subdevice *s,
unsigned int trig_num)
{ … }
static int apci1500_di_cmd(struct comedi_device *dev,
struct comedi_subdevice *s)
{ … }
static int apci1500_di_cmdtest(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_cmd *cmd)
{ … }
static int apci1500_di_cfg_trig(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int apci1500_di_insn_config(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int apci1500_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int apci1500_do_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int apci1500_timer_insn_config(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int apci1500_timer_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int apci1500_timer_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int apci1500_auto_attach(struct comedi_device *dev,
unsigned long context)
{ … }
static void apci1500_detach(struct comedi_device *dev)
{ … }
static struct comedi_driver apci1500_driver = …;
static int apci1500_pci_probe(struct pci_dev *dev,
const struct pci_device_id *id)
{ … }
static const struct pci_device_id apci1500_pci_table[] = …;
MODULE_DEVICE_TABLE(pci, apci1500_pci_table);
static struct pci_driver apci1500_pci_driver = …;
module_comedi_pci_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;