/* this structure is for data unique to this hardware driver. If
several hardware drivers keep similar information in this structure,
- feel free to suggest moving the variable to the comedi_device struct. */
+ feel free to suggest moving the variable to the struct comedi_device struct. */
typedef struct {
/* would be useful for a PCI device */
struct pci_dev *pci_dev;
volatile unsigned int adc_fifo_bits; // bits to write to interupt/adcfifo register
volatile unsigned int s5933_intcsr_bits; // bits to write to amcc s5933 interrupt control/status register
volatile unsigned int ao_control_bits; // bits to write to ao control and status register
- sampl_t ai_buffer[AI_BUFFER_SIZE];
- sampl_t ao_buffer[AO_BUFFER_SIZE];
+ short ai_buffer[AI_BUFFER_SIZE];
+ short ao_buffer[AO_BUFFER_SIZE];
// divisors of master clock for analog output pacing
unsigned int ao_divisor1;
unsigned int ao_divisor2;
* the board, and also about the kernel module that contains
* the device code.
*/
-static int cb_pcidas_attach(comedi_device * dev, comedi_devconfig * it);
-static int cb_pcidas_detach(comedi_device * dev);
+static int cb_pcidas_attach(struct comedi_device * dev, comedi_devconfig * it);
+static int cb_pcidas_detach(struct comedi_device * dev);
static comedi_driver driver_cb_pcidas = {
driver_name:"cb_pcidas",
module:THIS_MODULE,
detach:cb_pcidas_detach,
};
-static int cb_pcidas_ai_rinsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int ai_config_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int cb_pcidas_ao_nofifo_winsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int cb_pcidas_ao_fifo_winsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int cb_pcidas_ao_readback_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int cb_pcidas_ai_cmd(comedi_device * dev, comedi_subdevice * s);
-static int cb_pcidas_ai_cmdtest(comedi_device * dev, comedi_subdevice * s,
+static int cb_pcidas_ai_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int ai_config_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int cb_pcidas_ao_nofifo_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int cb_pcidas_ao_fifo_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int cb_pcidas_ao_readback_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int cb_pcidas_ai_cmd(struct comedi_device * dev, struct comedi_subdevice * s);
+static int cb_pcidas_ai_cmdtest(struct comedi_device * dev, struct comedi_subdevice * s,
comedi_cmd * cmd);
-static int cb_pcidas_ao_cmd(comedi_device * dev, comedi_subdevice * s);
-static int cb_pcidas_ao_inttrig(comedi_device * dev, comedi_subdevice * subdev,
+static int cb_pcidas_ao_cmd(struct comedi_device * dev, struct comedi_subdevice * s);
+static int cb_pcidas_ao_inttrig(struct comedi_device * dev, struct comedi_subdevice * subdev,
unsigned int trig_num);
-static int cb_pcidas_ao_cmdtest(comedi_device * dev, comedi_subdevice * s,
+static int cb_pcidas_ao_cmdtest(struct comedi_device * dev, struct comedi_subdevice * s,
comedi_cmd * cmd);
static irqreturn_t cb_pcidas_interrupt(int irq, void *d PT_REGS_ARG);
-static void handle_ao_interrupt(comedi_device * dev, unsigned int status);
-static int cb_pcidas_cancel(comedi_device * dev, comedi_subdevice * s);
-static int cb_pcidas_ao_cancel(comedi_device * dev, comedi_subdevice * s);
-static void cb_pcidas_load_counters(comedi_device * dev, unsigned int *ns,
+static void handle_ao_interrupt(struct comedi_device * dev, unsigned int status);
+static int cb_pcidas_cancel(struct comedi_device * dev, struct comedi_subdevice * s);
+static int cb_pcidas_ao_cancel(struct comedi_device * dev, struct comedi_subdevice * s);
+static void cb_pcidas_load_counters(struct comedi_device * dev, unsigned int *ns,
int round_flags);
-static int eeprom_read_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int caldac_read_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int caldac_write_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int trimpot_read_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int cb_pcidas_trimpot_write(comedi_device * dev, unsigned int channel,
- lsampl_t value);
-static int trimpot_write_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int dac08_read_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int dac08_write(comedi_device * dev, lsampl_t value);
-static int dac08_write_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int caldac_8800_write(comedi_device * dev, unsigned int address,
+static int eeprom_read_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int caldac_read_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int caldac_write_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int trimpot_read_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int cb_pcidas_trimpot_write(struct comedi_device * dev, unsigned int channel,
+ unsigned int value);
+static int trimpot_write_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int dac08_read_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int dac08_write(struct comedi_device * dev, unsigned int value);
+static int dac08_write_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data);
+static int caldac_8800_write(struct comedi_device * dev, unsigned int address,
uint8_t value);
-static int trimpot_7376_write(comedi_device * dev, uint8_t value);
-static int trimpot_8402_write(comedi_device * dev, unsigned int channel,
+static int trimpot_7376_write(struct comedi_device * dev, uint8_t value);
+static int trimpot_8402_write(struct comedi_device * dev, unsigned int channel,
uint8_t value);
-static int nvram_read(comedi_device * dev, unsigned int address,
+static int nvram_read(struct comedi_device * dev, unsigned int address,
uint8_t * data);
-static inline unsigned int cal_enable_bits(comedi_device * dev)
+static inline unsigned int cal_enable_bits(struct comedi_device * dev)
{
return CAL_EN_BIT | CAL_SRC_BITS(devpriv->calibration_source);
}
* Attach is called by the Comedi core to configure the driver
* for a particular board.
*/
-static int cb_pcidas_attach(comedi_device * dev, comedi_devconfig * it)
+static int cb_pcidas_attach(struct comedi_device * dev, comedi_devconfig * it)
{
- comedi_subdevice *s;
+ struct comedi_subdevice *s;
struct pci_dev *pcidev;
int index;
int i;
* allocated by _attach(). dev->private and dev->subdevices are
* deallocated automatically by the core.
*/
-static int cb_pcidas_detach(comedi_device * dev)
+static int cb_pcidas_detach(struct comedi_device * dev)
{
printk("comedi%d: cb_pcidas: remove\n", dev->minor);
* "instructions" read/write data in "one-shot" or "software-triggered"
* mode.
*/
-static int cb_pcidas_ai_rinsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int cb_pcidas_ai_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
int n, i;
unsigned int bits;
return n;
}
-static int ai_config_calibration_source(comedi_device * dev, lsampl_t * data)
+static int ai_config_calibration_source(struct comedi_device * dev, unsigned int * data)
{
static const int num_calibration_sources = 8;
- lsampl_t source = data[1];
+ unsigned int source = data[1];
if (source >= num_calibration_sources) {
printk("invalid calibration source: %i\n", source);
return 2;
}
-static int ai_config_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int ai_config_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
int id = data[0];
}
// analog output insn for pcidas-1000 and 1200 series
-static int cb_pcidas_ao_nofifo_winsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int cb_pcidas_ao_nofifo_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
int channel;
unsigned long flags;
}
// analog output insn for pcidas-1602 series
-static int cb_pcidas_ao_fifo_winsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int cb_pcidas_ao_fifo_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
int channel;
unsigned long flags;
// analog output readback insn
// XXX loses track of analog output value back after an analog ouput command is executed
-static int cb_pcidas_ao_readback_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int cb_pcidas_ao_readback_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
data[0] = devpriv->ao_value[CR_CHAN(insn->chanspec)];
return 1;
}
-static int eeprom_read_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int eeprom_read_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
uint8_t nvram_data;
int retval;
return 1;
}
-static int caldac_write_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int caldac_write_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
const unsigned int channel = CR_CHAN(insn->chanspec);
return caldac_8800_write(dev, channel, data[0]);
}
-static int caldac_read_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int caldac_read_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
data[0] = devpriv->caldac_value[CR_CHAN(insn->chanspec)];
}
/* 1602/16 pregain offset */
-static int dac08_write(comedi_device * dev, lsampl_t value)
+static int dac08_write(struct comedi_device * dev, unsigned int value)
{
if (devpriv->dac08_value == value)
return 1;
return 1;
}
-static int dac08_write_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int dac08_write_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
return dac08_write(dev, data[0]);
}
-static int dac08_read_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int dac08_read_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
data[0] = devpriv->dac08_value;
return 1;
}
-static int cb_pcidas_trimpot_write(comedi_device * dev,
- unsigned int channel, lsampl_t value)
+static int cb_pcidas_trimpot_write(struct comedi_device * dev,
+ unsigned int channel, unsigned int value)
{
if (devpriv->trimpot_value[channel] == value)
return 1;
return 1;
}
-static int trimpot_write_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int trimpot_write_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
unsigned int channel = CR_CHAN(insn->chanspec);
return cb_pcidas_trimpot_write(dev, channel, data[0]);
}
-static int trimpot_read_insn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int trimpot_read_insn(struct comedi_device * dev, struct comedi_subdevice * s,
+ comedi_insn * insn, unsigned int * data)
{
unsigned int channel = CR_CHAN(insn->chanspec);
return 1;
}
-static int cb_pcidas_ai_cmdtest(comedi_device * dev, comedi_subdevice * s,
+static int cb_pcidas_ai_cmdtest(struct comedi_device * dev, struct comedi_subdevice * s,
comedi_cmd * cmd)
{
int err = 0;
return 0;
}
-static int cb_pcidas_ai_cmd(comedi_device * dev, comedi_subdevice * s)
+static int cb_pcidas_ai_cmd(struct comedi_device * dev, struct comedi_subdevice * s)
{
comedi_async *async = s->async;
comedi_cmd *cmd = &async->cmd;
return 0;
}
-static int cb_pcidas_ao_cmdtest(comedi_device * dev, comedi_subdevice * s,
+static int cb_pcidas_ao_cmdtest(struct comedi_device * dev, struct comedi_subdevice * s,
comedi_cmd * cmd)
{
int err = 0;
return 0;
}
-static int cb_pcidas_ao_cmd(comedi_device * dev, comedi_subdevice * s)
+static int cb_pcidas_ao_cmd(struct comedi_device * dev, struct comedi_subdevice * s)
{
comedi_async *async = s->async;
comedi_cmd *cmd = &async->cmd;
return 0;
}
-static int cb_pcidas_ao_inttrig(comedi_device * dev, comedi_subdevice * s,
+static int cb_pcidas_ao_inttrig(struct comedi_device * dev, struct comedi_subdevice * s,
unsigned int trig_num)
{
unsigned int num_bytes, num_points = thisboard->fifo_size;
num_points = devpriv->ao_count;
num_bytes = cfc_read_array_from_buffer(s, devpriv->ao_buffer,
- num_points * sizeof(sampl_t));
- num_points = num_bytes / sizeof(sampl_t);
+ num_points * sizeof(short));
+ num_points = num_bytes / sizeof(short);
if (cmd->stop_src == TRIG_COUNT) {
devpriv->ao_count -= num_points;
static irqreturn_t cb_pcidas_interrupt(int irq, void *d PT_REGS_ARG)
{
- comedi_device *dev = (comedi_device *) d;
- comedi_subdevice *s = dev->read_subdev;
+ struct comedi_device *dev = (struct comedi_device *) d;
+ struct comedi_subdevice *s = dev->read_subdev;
comedi_async *async;
int status, s5933_status;
int half_fifo = thisboard->fifo_size / 2;
insw(devpriv->adc_fifo + ADCDATA, devpriv->ai_buffer,
num_samples);
cfc_write_array_to_buffer(s, devpriv->ai_buffer,
- num_samples * sizeof(sampl_t));
+ num_samples * sizeof(short));
devpriv->count -= num_samples;
if (async->cmd.stop_src == TRIG_COUNT && devpriv->count == 0) {
async->events |= COMEDI_CB_EOA;
return IRQ_HANDLED;
}
-static void handle_ao_interrupt(comedi_device * dev, unsigned int status)
+static void handle_ao_interrupt(struct comedi_device * dev, unsigned int status)
{
- comedi_subdevice *s = dev->write_subdev;
+ struct comedi_subdevice *s = dev->write_subdev;
comedi_async *async = s->async;
comedi_cmd *cmd = &async->cmd;
unsigned int half_fifo = thisboard->fifo_size / 2;
num_points = devpriv->ao_count;
num_bytes =
cfc_read_array_from_buffer(s, devpriv->ao_buffer,
- num_points * sizeof(sampl_t));
- num_points = num_bytes / sizeof(sampl_t);
+ num_points * sizeof(short));
+ num_points = num_bytes / sizeof(short);
if (async->cmd.stop_src == TRIG_COUNT) {
devpriv->ao_count -= num_points;
}
// cancel analog input command
-static int cb_pcidas_cancel(comedi_device * dev, comedi_subdevice * s)
+static int cb_pcidas_cancel(struct comedi_device * dev, struct comedi_subdevice * s)
{
unsigned long flags;
}
// cancel analog output command
-static int cb_pcidas_ao_cancel(comedi_device * dev, comedi_subdevice * s)
+static int cb_pcidas_ao_cancel(struct comedi_device * dev, struct comedi_subdevice * s)
{
unsigned long flags;
return 0;
}
-static void cb_pcidas_load_counters(comedi_device * dev, unsigned int *ns,
+static void cb_pcidas_load_counters(struct comedi_device * dev, unsigned int *ns,
int rounding_flags)
{
i8253_cascade_ns_to_timer_2div(TIMER_BASE, &(devpriv->divisor1),
devpriv->divisor2, 2);
}
-static void write_calibration_bitstream(comedi_device * dev,
+static void write_calibration_bitstream(struct comedi_device * dev,
unsigned int register_bits, unsigned int bitstream,
unsigned int bitstream_length)
{
}
}
-static int caldac_8800_write(comedi_device * dev, unsigned int address,
+static int caldac_8800_write(struct comedi_device * dev, unsigned int address,
uint8_t value)
{
static const int num_caldac_channels = 8;
return 1;
}
-static int trimpot_7376_write(comedi_device * dev, uint8_t value)
+static int trimpot_7376_write(struct comedi_device * dev, uint8_t value)
{
static const int bitstream_length = 7;
unsigned int bitstream = value & 0x7f;
/* For 1602/16 only
* ch 0 : adc gain
* ch 1 : adc postgain offset */
-static int trimpot_8402_write(comedi_device * dev, unsigned int channel,
+static int trimpot_8402_write(struct comedi_device * dev, unsigned int channel,
uint8_t value)
{
static const int bitstream_length = 10;
return -1;
}
-static int nvram_read(comedi_device * dev, unsigned int address, uint8_t * data)
+static int nvram_read(struct comedi_device * dev, unsigned int address, uint8_t * data)
{
unsigned long iobase = devpriv->s5933_config;