staging: comedi: usbdux: simplify initializing the ao urb transfer_buffer
Remove the ugly casting of datap to the ao urb->transfer_buffer. The format of the data in the buffer is simply. [0] = # of channels to update (s->async->cmd.chanlist.len) [1] = lsb of value for 1st channel to update [2] = msb of value for 1st channel to update [3] = 1st channel to update (depvriv->dac_commands[0]) If more than 1 channel is to be updated they are simply added to the buffer: [4] = lsb of value for 2st channel to update [5] = msb of value for 2st channel to update [6] = 1st channel to update (depvriv->dac_commands[1]) etc. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a998a3db53
commit
c769f85e27
1 changed files with 10 additions and 9 deletions
|
@ -425,8 +425,10 @@ static void usbduxsub_ao_isoc_irq(struct urb *urb)
|
|||
struct comedi_device *dev = urb->context;
|
||||
struct comedi_subdevice *s = dev->write_subdev;
|
||||
struct usbdux_private *devpriv = dev->private;
|
||||
int i, ret;
|
||||
int8_t *datap;
|
||||
int len;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
switch (urb->status) {
|
||||
case 0:
|
||||
|
@ -484,9 +486,11 @@ static void usbduxsub_ao_isoc_irq(struct urb *urb)
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* transmit data to the USB bus */
|
||||
((uint8_t *) (urb->transfer_buffer))[0] =
|
||||
s->async->cmd.chanlist_len;
|
||||
datap = urb->transfer_buffer;
|
||||
len = s->async->cmd.chanlist_len;
|
||||
*datap++ = len;
|
||||
for (i = 0; i < s->async->cmd.chanlist_len; i++) {
|
||||
unsigned int chan = devpriv->dac_commands[i];
|
||||
short val;
|
||||
|
@ -498,12 +502,9 @@ static void usbduxsub_ao_isoc_irq(struct urb *urb)
|
|||
COMEDI_CB_OVERFLOW);
|
||||
}
|
||||
/* pointer to the DA */
|
||||
datap =
|
||||
(&(((int8_t *) urb->transfer_buffer)[i * 3 + 1]));
|
||||
/* get the data from comedi */
|
||||
datap[0] = val;
|
||||
datap[1] = val >> 8;
|
||||
datap[2] = chan;
|
||||
*datap++ = val & 0xff;
|
||||
*datap++ = (val >> 8) & 0xff;
|
||||
*datap++ = chan;
|
||||
devpriv->ao_readback[chan] = val;
|
||||
|
||||
s->async->events |= COMEDI_CB_BLOCK;
|
||||
|
|
Loading…
Add table
Reference in a new issue