}
}
-static int dt9812_analog_in(struct slot_dt9812 *slot, int channel, u16 *value,
- enum dt9812_gain gain)
+static int dt9812_analog_in(struct comedi_device *dev,
+ int channel, u16 *value, enum dt9812_gain gain)
{
+ struct dt9812_private *devpriv = dev->private;
+ struct slot_dt9812 *slot = devpriv->slot;
struct dt9812_rmw_byte rmw[3];
u8 reg[3] = {
F020_SFR_ADC0CN,
F020_SFR_ADC0L
};
u8 val[3];
- int result = -ENODEV;
+ int ret = -ENODEV;
down(&slot->mutex);
if (!slot->usb)
rmw[2].and_mask = 0xff;
rmw[2].or_value = F020_MASK_ADC0CN_AD0EN | F020_MASK_ADC0CN_AD0BUSY;
- result = dt9812_rmw_multiple_registers(slot->usb, 3, rmw);
- if (result)
+ ret = dt9812_rmw_multiple_registers(slot->usb, 3, rmw);
+ if (ret)
goto exit;
/* read the status and ADC */
- result = dt9812_read_multiple_registers(slot->usb, 3, reg, val);
- if (result)
+ ret = dt9812_read_multiple_registers(slot->usb, 3, reg, val);
+ if (ret)
goto exit;
+
/*
* An ADC conversion takes 16 SAR clocks cycles, i.e. about 9us.
* Therefore, between the instant that AD0BUSY was set via
exit:
up(&slot->mutex);
- return result;
+
+ return ret;
}
static int dt9812_analog_out_shadow(struct slot_dt9812 *slot, int channel,
struct comedi_subdevice *s, struct comedi_insn *insn,
unsigned int *data)
{
- struct dt9812_private *devpriv = dev->private;
unsigned int channel = CR_CHAN(insn->chanspec);
int n;
for (n = 0; n < insn->n; n++) {
u16 value = 0;
- dt9812_analog_in(devpriv->slot, channel, &value, DT9812_GAIN_1);
+ dt9812_analog_in(dev, channel, &value, DT9812_GAIN_1);
data[n] = value;
}
return n;