#include <linux/module.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/comedi/comedi_pci.h>
#include "s626.h"
struct s626_buffer_dma { … };
struct s626_private { … };
#define S626_INDXMASK(C) …
#define S626_OVERMASK(C) …
static void s626_mc_enable(struct comedi_device *dev,
unsigned int cmd, unsigned int reg)
{ … }
static void s626_mc_disable(struct comedi_device *dev,
unsigned int cmd, unsigned int reg)
{ … }
static bool s626_mc_test(struct comedi_device *dev,
unsigned int cmd, unsigned int reg)
{ … }
#define S626_BUGFIX_STREG(REGADRS) …
#define S626_VECTPORT(VECTNUM) …
static const struct comedi_lrange s626_range_table = …;
static void s626_debi_transfer(struct comedi_device *dev)
{ … }
static u16 s626_debi_read(struct comedi_device *dev, u16 addr)
{ … }
static void s626_debi_write(struct comedi_device *dev, u16 addr,
u16 wdata)
{ … }
static void s626_debi_replace(struct comedi_device *dev, unsigned int addr,
unsigned int mask, unsigned int wdata)
{ … }
static int s626_i2c_handshake_eoc(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned long context)
{ … }
static int s626_i2c_handshake(struct comedi_device *dev, u32 val)
{ … }
static u8 s626_i2c_read(struct comedi_device *dev, u8 addr)
{ … }
static const u8 s626_trimchan[] = …;
static const u8 s626_trimadrs[] = …;
enum { … };
static int s626_send_dac_eoc(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned long context)
{ … }
static int s626_send_dac(struct comedi_device *dev, u32 val)
{ … }
static int s626_set_dac(struct comedi_device *dev,
u16 chan, int16_t dacdata)
{ … }
static int s626_write_trim_dac(struct comedi_device *dev,
u8 logical_chan, u8 dac_data)
{ … }
static int s626_load_trim_dacs(struct comedi_device *dev)
{ … }
static void s626_set_latch_source(struct comedi_device *dev,
unsigned int chan, u16 value)
{ … }
static void s626_preload(struct comedi_device *dev,
unsigned int chan, u32 value)
{ … }
static void s626_reset_cap_flags(struct comedi_device *dev,
unsigned int chan)
{ … }
static void s626_set_mode_a(struct comedi_device *dev,
unsigned int chan, u16 setup,
u16 disable_int_src)
{ … }
static void s626_set_mode_b(struct comedi_device *dev,
unsigned int chan, u16 setup,
u16 disable_int_src)
{ … }
static void s626_set_mode(struct comedi_device *dev,
unsigned int chan,
u16 setup, u16 disable_int_src)
{ … }
static void s626_set_enable(struct comedi_device *dev,
unsigned int chan, u16 enab)
{ … }
static void s626_set_load_trig(struct comedi_device *dev,
unsigned int chan, u16 trig)
{ … }
static void s626_set_int_src(struct comedi_device *dev,
unsigned int chan, u16 int_source)
{ … }
static void s626_pulse_index(struct comedi_device *dev,
unsigned int chan)
{ … }
static unsigned int s626_ai_reg_to_uint(unsigned int data)
{ … }
static int s626_dio_set_irq(struct comedi_device *dev, unsigned int chan)
{ … }
static int s626_dio_reset_irq(struct comedi_device *dev, unsigned int group,
unsigned int mask)
{ … }
static int s626_dio_clear_irq(struct comedi_device *dev)
{ … }
static void s626_handle_dio_interrupt(struct comedi_device *dev,
u16 irqbit, u8 group)
{ … }
static void s626_check_dio_interrupts(struct comedi_device *dev)
{ … }
static void s626_check_counter_interrupts(struct comedi_device *dev)
{ … }
static bool s626_handle_eos_interrupt(struct comedi_device *dev)
{ … }
static irqreturn_t s626_irq_handler(int irq, void *d)
{ … }
static void s626_reset_adc(struct comedi_device *dev, u8 *ppl)
{ … }
static int s626_ai_eoc(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned long context)
{ … }
static int s626_ai_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int s626_ai_load_polllist(u8 *ppl, struct comedi_cmd *cmd)
{ … }
static int s626_ai_inttrig(struct comedi_device *dev,
struct comedi_subdevice *s,
unsigned int trig_num)
{ … }
static int s626_ns_to_timer(unsigned int *nanosec, unsigned int flags)
{ … }
static void s626_timer_load(struct comedi_device *dev,
unsigned int chan, int tick)
{ … }
static int s626_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
{ … }
static int s626_ai_cmdtest(struct comedi_device *dev,
struct comedi_subdevice *s, struct comedi_cmd *cmd)
{ … }
static int s626_ai_cancel(struct comedi_device *dev, struct comedi_subdevice *s)
{ … }
static int s626_ao_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static void s626_dio_init(struct comedi_device *dev)
{ … }
static int s626_dio_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int s626_dio_insn_config(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int s626_enc_insn_config(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{ … }
static int s626_enc_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int s626_enc_insn_write(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn, unsigned int *data)
{ … }
static void s626_write_misc2(struct comedi_device *dev, u16 new_image)
{ … }
static void s626_counters_init(struct comedi_device *dev)
{ … }
static int s626_allocate_dma_buffers(struct comedi_device *dev)
{ … }
static void s626_free_dma_buffers(struct comedi_device *dev)
{ … }
static int s626_initialize(struct comedi_device *dev)
{ … }
static int s626_auto_attach(struct comedi_device *dev,
unsigned long context_unused)
{ … }
static void s626_detach(struct comedi_device *dev)
{ … }
static struct comedi_driver s626_driver = …;
static int s626_pci_probe(struct pci_dev *dev,
const struct pci_device_id *id)
{ … }
static const struct pci_device_id s626_pci_table[] = …;
MODULE_DEVICE_TABLE(pci, s626_pci_table);
static struct pci_driver s626_pci_driver = …;
module_comedi_pci_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;