summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH Hartley Sweeten <hsweeten@visionengravers.com>2013-06-10 10:15:55 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-06-11 17:16:46 -0700
commit84f7db9d8f9ee9bcee16143aab93b68b43e7e5cc (patch)
treebffa55087f24a082738b5382584cda8dc81eb158
parent0a0c2cb96b51c88d5a7c28ea8b1614cf421b8ae1 (diff)
staging: comedi: pcl724: tidy up subdev_8255_init() calls
subdev_8255_init() can fail, make sure to check for it and return the errno. The private function subdev_8255_cb() is identical to the default io callback used by the 8255 driver. Remove it and pass NULL to subdev_8255_init() so the default callback will be used. The private function subdev_8255mapped_cb() is used for the memory memory mapped io of the pet48dio board. Rename this function so it has namespace associated with the driver. Casting the iobase passed to subdev_8255_init() is not needed. Use a local variable for the iobase and remove the casts. 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>
-rw-r--r--drivers/staging/comedi/drivers/pcl724.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/drivers/staging/comedi/drivers/pcl724.c b/drivers/staging/comedi/drivers/pcl724.c
index bfa969af95da..5391294ef14c 100644
--- a/drivers/staging/comedi/drivers/pcl724.c
+++ b/drivers/staging/comedi/drivers/pcl724.c
@@ -94,19 +94,7 @@ static const struct pcl724_board boardtypes[] = {
},
};
-static int subdev_8255_cb(int dir, int port, int data, unsigned long arg)
-{
- unsigned long iobase = arg;
-
- if (dir) {
- outb(data, iobase + port);
- return 0;
- } else {
- return inb(iobase + port);
- }
-}
-
-static int subdev_8255mapped_cb(int dir, int port, int data,
+static int pcl724_8255mapped_io(int dir, int port, int data,
unsigned long iobase)
{
int movport = SIZE_8255 * (iobase >> 12);
@@ -127,6 +115,7 @@ static int pcl724_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{
const struct pcl724_board *board = comedi_board(dev);
struct comedi_subdevice *s;
+ unsigned long iobase;
unsigned int iorange;
int ret, i, n_subdevices;
@@ -150,13 +139,15 @@ static int pcl724_attach(struct comedi_device *dev, struct comedi_devconfig *it)
for (i = 0; i < dev->n_subdevices; i++) {
s = &dev->subdevices[i];
if (board->is_pet48) {
- subdev_8255_init(dev, s, subdev_8255mapped_cb,
- (unsigned long)(dev->iobase +
- i * 0x1000));
- } else
- subdev_8255_init(dev, s, subdev_8255_cb,
- (unsigned long)(dev->iobase +
- SIZE_8255 * i));
+ iobase = dev->iobase + (i * 0x1000);
+ ret = subdev_8255_init(dev, s, pcl724_8255mapped_io,
+ iobase);
+ } else {
+ iobase = dev->iobase + (i * SIZE_8255);
+ ret = subdev_8255_init(dev, s, NULL, iobase);
+ }
+ if (ret)
+ return ret;
}
return 0;