[PATCH 23/32] staging: comedi: vmk80xx: cleanup counter subdevice init

H Hartley Sweeten hsweeten at visionengravers.com
Wed Feb 6 00:27:37 UTC 2013


Change the 'cnt_bits' in the boardinfo to 'cnt_maxdata' so that the
calculation of s->maxdata can be removed. Also, change the type to
match the comedi_subdevice type. Add a comment about the '0' value
for DEVICE_VMK8061.

The s->maxdata should always be set for the subdevice. Move it out
of the conditional.

Rename the (*insn_read), (*insn_config_, and (*insn_write) functions
for the counter subdevice to make grepping easier.

For aesthetic reasons, add some whitespace to the subdevice init.

Signed-off-by: H Hartley Sweeten <hsweeten at visionengravers.com>
Cc: Ian Abbott <abbotti at mev.co.uk>
Cc: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
---
 drivers/staging/comedi/drivers/vmk80xx.c | 43 +++++++++++++++++---------------
 1 file changed, 23 insertions(+), 20 deletions(-)

diff --git a/drivers/staging/comedi/drivers/vmk80xx.c b/drivers/staging/comedi/drivers/vmk80xx.c
index 4d51f6c..26a9a96 100644
--- a/drivers/staging/comedi/drivers/vmk80xx.c
+++ b/drivers/staging/comedi/drivers/vmk80xx.c
@@ -163,7 +163,7 @@ struct vmk80xx_board {
 	unsigned int ai_maxdata;
 	int ao_nchans;
 	int di_nchans;
-	__le16 cnt_bits;
+	unsigned int cnt_maxdata;
 	__u8 pwm_chans;
 	__le16 pwm_bits;
 };
@@ -177,7 +177,7 @@ static const struct vmk80xx_board vmk80xx_boardinfo[] = {
 		.ai_maxdata	= 0x00ff,
 		.ao_nchans	= 2,
 		.di_nchans	= 6,
-		.cnt_bits	= 16,
+		.cnt_maxdata	= 0xffff,
 		.pwm_chans	= 0,
 		.pwm_bits	= 0,
 	},
@@ -189,7 +189,7 @@ static const struct vmk80xx_board vmk80xx_boardinfo[] = {
 		.ai_maxdata	= 0x03ff,
 		.ao_nchans	= 8,
 		.di_nchans	= 8,
-		.cnt_bits	= 0,
+		.cnt_maxdata	= 0,	/* unknown, device is not writeable */
 		.pwm_chans	= 1,
 		.pwm_bits	= 10,
 	},
@@ -900,9 +900,10 @@ out:
 	return retval;
 }
 
-static int vmk80xx_cnt_rinsn(struct comedi_device *dev,
-			     struct comedi_subdevice *s,
-			     struct comedi_insn *insn, unsigned int *data)
+static int vmk80xx_cnt_insn_read(struct comedi_device *dev,
+				 struct comedi_subdevice *s,
+				 struct comedi_insn *insn,
+				 unsigned int *data)
 {
 	struct vmk80xx_private *devpriv = dev->private;
 	int chan;
@@ -947,9 +948,10 @@ static int vmk80xx_cnt_rinsn(struct comedi_device *dev,
 	return n;
 }
 
-static int vmk80xx_cnt_cinsn(struct comedi_device *dev,
-			     struct comedi_subdevice *s,
-			     struct comedi_insn *insn, unsigned int *data)
+static int vmk80xx_cnt_insn_config(struct comedi_device *dev,
+				   struct comedi_subdevice *s,
+				   struct comedi_insn *insn,
+				   unsigned int *data)
 {
 	struct vmk80xx_private *devpriv = dev->private;
 	unsigned int insn_cmd;
@@ -993,9 +995,10 @@ static int vmk80xx_cnt_cinsn(struct comedi_device *dev,
 	return n;
 }
 
-static int vmk80xx_cnt_winsn(struct comedi_device *dev,
-			     struct comedi_subdevice *s,
-			     struct comedi_insn *insn, unsigned int *data)
+static int vmk80xx_cnt_insn_write(struct comedi_device *dev,
+				  struct comedi_subdevice *s,
+				  struct comedi_insn *insn,
+				  unsigned int *data)
 {
 	struct vmk80xx_private *devpriv = dev->private;
 	unsigned long debtime;
@@ -1248,15 +1251,15 @@ static int vmk80xx_attach_common(struct comedi_device *dev)
 
 	/* Counter subdevice */
 	s = &dev->subdevices[4];
-	s->type = COMEDI_SUBD_COUNTER;
-	s->subdev_flags = SDF_READABLE;
-	s->n_chan = 2;
-	s->insn_read = vmk80xx_cnt_rinsn;
-	s->insn_config = vmk80xx_cnt_cinsn;
+	s->type		= COMEDI_SUBD_COUNTER;
+	s->subdev_flags	= SDF_READABLE;
+	s->n_chan	= 2;
+	s->maxdata	= boardinfo->cnt_maxdata;
+	s->insn_read	= vmk80xx_cnt_insn_read;
+	s->insn_config	= vmk80xx_cnt_insn_config;
 	if (devpriv->model == VMK8055_MODEL) {
-		s->subdev_flags |= SDF_WRITEABLE;
-		s->maxdata = (1 << boardinfo->cnt_bits) - 1;
-		s->insn_write = vmk80xx_cnt_winsn;
+		s->subdev_flags	|= SDF_WRITEABLE;
+		s->insn_write	= vmk80xx_cnt_insn_write;
 	}
 
 	/* PWM subdevice */
-- 
1.8.1.1.293.gfe73786




More information about the devel mailing list