return i;
 }
 
-/************************************/
-/* analog out */
-
-static int usbdux_ao_insn_read(struct comedi_device *dev,
-                              struct comedi_subdevice *s,
-                              struct comedi_insn *insn, unsigned int *data)
+static int usbduxsigma_ao_insn_read(struct comedi_device *dev,
+                                   struct comedi_subdevice *s,
+                                   struct comedi_insn *insn,
+                                   unsigned int *data)
 {
-       struct usbduxsigma_private *this_usbduxsub = dev->private;
+       struct usbduxsigma_private *devpriv = dev->private;
+       unsigned int chan = CR_CHAN(insn->chanspec);
        int i;
-       int chan = CR_CHAN(insn->chanspec);
 
-       down(&this_usbduxsub->sem);
+       down(&devpriv->sem);
        for (i = 0; i < insn->n; i++)
-               data[i] = this_usbduxsub->outBuffer[chan];
+               data[i] = devpriv->outBuffer[chan];
+       up(&devpriv->sem);
 
-       up(&this_usbduxsub->sem);
-       return i;
+       return insn->n;
 }
 
-static int usbdux_ao_insn_write(struct comedi_device *dev,
-                               struct comedi_subdevice *s,
-                               struct comedi_insn *insn, unsigned int *data)
+static int usbduxsigma_ao_insn_write(struct comedi_device *dev,
+                                    struct comedi_subdevice *s,
+                                    struct comedi_insn *insn,
+                                    unsigned int *data)
 {
-       struct usbduxsigma_private *this_usbduxsub = dev->private;
-       int i, err;
-       int chan = CR_CHAN(insn->chanspec);
+       struct usbduxsigma_private *devpriv = dev->private;
+       unsigned int chan = CR_CHAN(insn->chanspec);
+       int ret;
+       int i;
 
-       down(&this_usbduxsub->sem);
-       if (this_usbduxsub->ao_cmd_running) {
-               up(&this_usbduxsub->sem);
-               return 0;
+       down(&devpriv->sem);
+       if (devpriv->ao_cmd_running) {
+               up(&devpriv->sem);
+               return -EBUSY;
        }
 
        for (i = 0; i < insn->n; i++) {
-               /* number of channels: 1 */
-               this_usbduxsub->dux_commands[1] = 1;
-               /* channel number */
-               this_usbduxsub->dux_commands[2] = data[i];
-               this_usbduxsub->outBuffer[chan] = data[i];
-               this_usbduxsub->dux_commands[3] = chan;
-               err = send_dux_commands(dev, SENDDACOMMANDS);
-               if (err < 0) {
-                       up(&this_usbduxsub->sem);
-                       return err;
+               devpriv->dux_commands[1] = 1;           /* num channels */
+               devpriv->dux_commands[2] = data[i];     /* value */
+               devpriv->dux_commands[3] = chan;        /* channel number */
+               ret = send_dux_commands(dev, SENDDACOMMANDS);
+               if (ret < 0) {
+                       up(&devpriv->sem);
+                       return ret;
                }
+               devpriv->outBuffer[chan] = data[i];
        }
-       up(&this_usbduxsub->sem);
+       up(&devpriv->sem);
 
-       return i;
+       return insn->n;
 }
 
 static int usbduxsigma_ao_inttrig(struct comedi_device *dev,
        s->len_chanlist = 4;
        s->maxdata      = 0x00ff;
        s->range_table  = &range_unipolar2_5;
-       s->insn_write   = usbdux_ao_insn_write;
-       s->insn_read    = usbdux_ao_insn_read;
+       s->insn_write   = usbduxsigma_ao_insn_write;
+       s->insn_read    = usbduxsigma_ao_insn_read;
        s->do_cmdtest   = usbduxsigma_ao_cmdtest;
        s->do_cmd       = usbduxsigma_ao_cmd;
        s->cancel       = usbdux_ao_cancel;