summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-05-23 20:00:36 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-05-30 11:41:03 (GMT)
commit77a52e69cb3e80dca0122acfaaa51bdbcb5dad5a (patch)
tree995fa8cd8214d463cc128fac1705db3003ca1682 /drivers
parenta65b091554965e292b5b10977ecffacff74d8908 (diff)
downloadlinux-fsl-qoriq-77a52e69cb3e80dca0122acfaaa51bdbcb5dad5a.tar.xz
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 <hsweeten@visionengravers.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/comedi/drivers/usbduxsigma.c73
1 files changed, 35 insertions, 38 deletions
diff --git a/drivers/staging/comedi/drivers/usbduxsigma.c b/drivers/staging/comedi/drivers/usbduxsigma.c
index 44043c5..1ead4ed 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) {