From: H Hartley Sweeten Date: Mon, 10 Jun 2013 17:15:55 +0000 (-0700) Subject: staging: comedi: pcl724: tidy up subdev_8255_init() calls X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=84f7db9d8f9ee9bcee16143aab93b68b43e7e5cc;p=linux-beck.git 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 Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- 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;