From: H Hartley Sweeten Date: Thu, 23 May 2013 20:00:36 +0000 (-0700) Subject: staging: comedi: usbduxsigma: tidy up usbdux_dio_insn_bits() X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=77a52e69cb3e80dca0122acfaaa51bdbcb5dad5a;p=linux-beck.git staging: comedi: usbduxsigma: tidy up usbdux_dio_insn_bits() Rename the function so it has namespace associated with the driver. Rename the local variable used for the private data pointer. Remove the unnecessary casts. Signed-off-by: H Hartley Sweeten Cc: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers/usbduxsigma.c b/drivers/staging/comedi/drivers/usbduxsigma.c index 44043c5127b1..1ead4ede8ec5 100644 --- a/drivers/staging/comedi/drivers/usbduxsigma.c +++ b/drivers/staging/comedi/drivers/usbduxsigma.c @@ -1144,49 +1144,46 @@ static int usbdux_dio_insn_config(struct comedi_device *dev, return insn->n; } -static int usbdux_dio_insn_bits(struct comedi_device *dev, - struct comedi_subdevice *s, - struct comedi_insn *insn, - unsigned int *data) +static int usbduxsigma_dio_insn_bits(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, + unsigned int *data) { - struct usbduxsigma_private *this_usbduxsub = dev->private; - int err; + struct usbduxsigma_private *devpriv = dev->private; + unsigned int mask = data[0]; + unsigned int bits = data[1]; + int ret; - down(&this_usbduxsub->sem); + down(&devpriv->sem); - /* The insn data is a mask in data[0] and the new data - * in data[1], each channel cooresponding to a bit. */ - s->state &= ~data[0]; - s->state |= data[0] & data[1]; - /* The commands are 8 bits wide */ - this_usbduxsub->dux_commands[1] = (s->io_bits) & 0x000000FF; - this_usbduxsub->dux_commands[4] = (s->state) & 0x000000FF; - this_usbduxsub->dux_commands[2] = ((s->io_bits) & 0x0000FF00) >> 8; - this_usbduxsub->dux_commands[5] = ((s->state) & 0x0000FF00) >> 8; - this_usbduxsub->dux_commands[3] = ((s->io_bits) & 0x00FF0000) >> 16; - this_usbduxsub->dux_commands[6] = ((s->state) & 0x00FF0000) >> 16; - - /* This command also tells the firmware to return */ - /* the digital input lines */ - err = send_dux_commands(dev, SENDDIOBITSCOMMAND); - if (err < 0) { - up(&this_usbduxsub->sem); - return err; - } - err = receive_dux_commands(dev, SENDDIOBITSCOMMAND); - if (err < 0) { - up(&this_usbduxsub->sem); - return err; - } + s->state &= ~mask; + s->state |= (bits & mask); - data[1] = (((unsigned int)(this_usbduxsub->insnBuffer[1]))&0xff) | - ((((unsigned int)(this_usbduxsub->insnBuffer[2]))&0xff) << 8) | - ((((unsigned int)(this_usbduxsub->insnBuffer[3]))&0xff) << 16); + devpriv->dux_commands[1] = s->io_bits & 0xff; + devpriv->dux_commands[4] = s->state & 0xff; + devpriv->dux_commands[2] = (s->io_bits >> 8) & 0xff; + devpriv->dux_commands[5] = (s->state >> 8) & 0xff; + devpriv->dux_commands[3] = (s->io_bits >> 16) & 0xff; + devpriv->dux_commands[6] = (s->state >> 16) & 0xff; - s->state = data[1]; + ret = send_dux_commands(dev, SENDDIOBITSCOMMAND); + if (ret < 0) + goto done; + ret = receive_dux_commands(dev, SENDDIOBITSCOMMAND); + if (ret < 0) + goto done; - up(&this_usbduxsub->sem); - return insn->n; + s->state = devpriv->insnBuffer[1] | + (devpriv->insnBuffer[2] << 8) | + (devpriv->insnBuffer[3] << 16); + + data[1] = s->state; + ret = insn->n; + +done: + up(&devpriv->sem); + + return ret; } static void usbdux_pwm_stop(struct usbduxsigma_private *devpriv, int do_unlink) @@ -1518,7 +1515,7 @@ static int usbduxsigma_attach_common(struct comedi_device *dev) s->n_chan = 24; s->maxdata = 1; s->range_table = &range_digital; - s->insn_bits = usbdux_dio_insn_bits; + s->insn_bits = usbduxsigma_dio_insn_bits; s->insn_config = usbdux_dio_insn_config; if (devpriv->high_speed) {