#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/ctype.h>
#include <linux/jiffies.h>
#include <linux/slab.h>
#include <linux/timer.h>
#include <linux/comedi/comedi_pci.h>
#include "jr3_pci.h"
#define PCI_VENDOR_ID_JR3 …
enum jr3_pci_boardid { … };
struct jr3_pci_board { … };
static const struct jr3_pci_board jr3_pci_boards[] = …;
struct jr3_pci_transform { … };
struct jr3_pci_poll_delay { … };
struct jr3_pci_dev_private { … };
jr3_pci_single_range;
enum jr3_pci_poll_state { … };
struct jr3_pci_subdev_private { … };
static struct jr3_pci_poll_delay poll_delay_min_max(int min, int max)
{ … }
static int is_complete(struct jr3_sensor __iomem *sensor)
{ … }
static void set_transforms(struct jr3_sensor __iomem *sensor,
const struct jr3_pci_transform *transf, short num)
{ … }
static void use_transform(struct jr3_sensor __iomem *sensor,
short transf_num)
{ … }
static void use_offset(struct jr3_sensor __iomem *sensor, short offset_num)
{ … }
static void set_offset(struct jr3_sensor __iomem *sensor)
{ … }
struct six_axis_t { … };
static void set_full_scales(struct jr3_sensor __iomem *sensor,
struct six_axis_t full_scale)
{ … }
static struct six_axis_t get_max_full_scales(struct jr3_sensor __iomem *sensor)
{ … }
static unsigned int jr3_pci_ai_read_chan(struct comedi_device *dev,
struct comedi_subdevice *s,
unsigned int chan)
{ … }
static int jr3_pci_ai_insn_read(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{ … }
static int jr3_pci_open(struct comedi_device *dev)
{ … }
static int read_idm_word(const u8 *data, size_t size, int *pos,
unsigned int *val)
{ … }
static int jr3_check_firmware(struct comedi_device *dev,
const u8 *data, size_t size)
{ … }
static void jr3_write_firmware(struct comedi_device *dev,
int subdev, const u8 *data, size_t size)
{ … }
static int jr3_download_firmware(struct comedi_device *dev,
const u8 *data, size_t size,
unsigned long context)
{ … }
static struct jr3_pci_poll_delay
jr3_pci_poll_subdevice(struct comedi_subdevice *s)
{ … }
static void jr3_pci_poll_dev(struct timer_list *t)
{ … }
static struct jr3_pci_subdev_private *
jr3_pci_alloc_spriv(struct comedi_device *dev, struct comedi_subdevice *s)
{ … }
static void jr3_pci_show_copyright(struct comedi_device *dev)
{ … }
static int jr3_pci_auto_attach(struct comedi_device *dev,
unsigned long context)
{ … }
static void jr3_pci_detach(struct comedi_device *dev)
{ … }
static struct comedi_driver jr3_pci_driver = …;
static int jr3_pci_pci_probe(struct pci_dev *dev,
const struct pci_device_id *id)
{ … }
static const struct pci_device_id jr3_pci_pci_table[] = …;
MODULE_DEVICE_TABLE(pci, jr3_pci_pci_table);
static struct pci_driver jr3_pci_pci_driver = …;
module_comedi_pci_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_FIRMWARE(…) …;