OSDN Git Service

staging: comedi: pcmuio: remove 'iobase' from private data
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Tue, 18 Jun 2013 20:24:05 +0000 (13:24 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Jun 2013 22:51:03 +0000 (15:51 -0700)
It's simple enough to calculate the iobase when needed. Remove this
member from the private data.

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 e21594b..b942b0a 100644 (file)
@@ -162,7 +162,6 @@ struct pcmuio_subdev_private {
 
 struct pcmuio_private {
        struct {
-               unsigned long iobase;
                unsigned int irq;
                spinlock_t spinlock;
        } asics[MAX_ASICS];
@@ -405,7 +404,7 @@ static int pcmuio_handle_asic_interrupt(struct comedi_device *dev, int asic)
 {
        struct pcmuio_private *devpriv = dev->private;
        struct pcmuio_subdev_private *subpriv;
-       unsigned long iobase = devpriv->asics[asic].iobase;
+       unsigned long iobase = dev->iobase + (asic * ASIC_IOSIZE);
        unsigned triggered = 0;
        int got1 = 0;
        unsigned long flags;
@@ -675,10 +674,8 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
                return -ENOMEM;
        dev->private = devpriv;
 
-       for (asic = 0; asic < MAX_ASICS; ++asic) {
-               devpriv->asics[asic].iobase = dev->iobase + asic * ASIC_IOSIZE;
+       for (asic = 0; asic < MAX_ASICS; ++asic)
                spin_lock_init(&devpriv->asics[asic].spinlock);
-       }
 
        n_subdevs = board->num_asics * 2;
        devpriv->sprivs = kcalloc(n_subdevs,
@@ -718,8 +715,8 @@ static int pcmuio_attach(struct comedi_device *dev, struct comedi_devconfig *it)
                                ++asic;
                                thisasic_chanct = 0;
                        }
-                       subpriv->iobases[byte_no] =
-                           devpriv->asics[asic].iobase + port;
+                       subpriv->iobases[byte_no] = dev->iobase +
+                                                   (asic * ASIC_IOSIZE) + port;
 
                        if (thisasic_chanct <
                            CHANS_PER_PORT * INTR_PORTS_PER_ASIC