staging: comedi: pcmuio: simplify 'n_subdevs' and 's->n_chan'
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Tue, 18 Jun 2013 20:23:46 +0000 (13:23 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Jun 2013 22:51:02 +0000 (15:51 -0700)
The number of subdevices needed by the driver is based on the
'num_asics' reported by the boardinfo and each subdevice always
has 24 channels. Simplify the attach a bit.

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>
drivers/staging/comedi/drivers/pcmuio.c

index 85a64807a073b5afd253bff2587883517f02324c..e21594bde226a80535a67cb6979d0936998a9ced 100644 (file)
@@ -658,7 +658,7 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        struct comedi_subdevice *s;
        struct pcmuio_private *devpriv;
        struct pcmuio_subdev_private *subpriv;
-       int sdev_no, chans_left, n_subdevs, port, asic, thisasic_chanct = 0;
+       int sdev_no, n_subdevs, port, asic, thisasic_chanct = 0;
        unsigned int irq[MAX_ASICS];
        int ret;
 
@@ -680,9 +680,7 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
                spin_lock_init(&devpriv->asics[asic].spinlock);
        }
 
-       chans_left = CHANS_PER_ASIC * board->num_asics;
-       n_subdevs = (chans_left / MAX_CHANS_PER_SUBDEV) +
-                   (!!(chans_left % MAX_CHANS_PER_SUBDEV));
+       n_subdevs = board->num_asics * 2;
        devpriv->sprivs = kcalloc(n_subdevs,
                                  sizeof(struct pcmuio_subdev_private),
                                  GFP_KERNEL);
@@ -707,7 +705,7 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
                s->type = COMEDI_SUBD_DIO;
                s->insn_bits = pcmuio_dio_insn_bits;
                s->insn_config = pcmuio_dio_insn_config;
-               s->n_chan = min(chans_left, MAX_CHANS_PER_SUBDEV);
+               s->n_chan = 24;
                subpriv->intr.asic = -1;
                s->len_chanlist = 1;
 
@@ -738,15 +736,6 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
                        thisasic_chanct += CHANS_PER_PORT;
                }
                spin_lock_init(&subpriv->intr.spinlock);
-
-               chans_left -= s->n_chan;
-
-               if (!chans_left) {
-                       /* reset to our first asic, to do intr subdevs */
-                       asic = 0;
-                       port = 0;
-               }
-
        }
 
        init_asics(dev);        /* clear out all the registers, basically */