diff options
author | H Hartley Sweeten <hartleys@visionengravers.com> | 2012-10-24 23:31:14 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-10-25 02:35:49 (GMT) |
commit | 618351aed1dc9b0340bc755ffc0dba6caf190299 (patch) | |
tree | d1226709732718ed37ac9a6ef3432782f81f4918 | |
parent | 2730c736d99c766c6e6c7674c4be53fb0f9d3315 (diff) | |
download | linux-fsl-qoriq-618351aed1dc9b0340bc755ffc0dba6caf190299.tar.xz |
staging: comedi: cb_pcidda: check for subdev_8255_init() failure
The subdev_8255_init() can fail, make sure to check for it.
This board has two 8255 subdevices, one at iobase PCI bar2 and one
at iobase PCI bar2 + 4. Init the subdevices using a for() loop to
make the code a bit more concise.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/comedi/drivers/cb_pcidda.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/staging/comedi/drivers/cb_pcidda.c b/drivers/staging/comedi/drivers/cb_pcidda.c index 511401f..8371fa2 100644 --- a/drivers/staging/comedi/drivers/cb_pcidda.c +++ b/drivers/staging/comedi/drivers/cb_pcidda.c @@ -520,11 +520,13 @@ static int cb_pcidda_attach_pci(struct comedi_device *dev, s->range_table = thisboard->ranges; s->insn_write = cb_pcidda_ao_winsn; - /* two 8255 digital io subdevices */ - s = &dev->subdevices[1]; - subdev_8255_init(dev, s, NULL, iobase_8255); - s = &dev->subdevices[2]; - subdev_8255_init(dev, s, NULL, iobase_8255 + PORT2A); + /* two 8255 digital io subdevices */ + for (i = 0; i < 2; i++) { + s = &dev->subdevices[1 + i]; + ret = subdev_8255_init(dev, s, NULL, iobase_8255 + (i * 4)); + if (ret) + return ret; + } /* Read the caldac eeprom data */ for (i = 0; i < EEPROM_SIZE; i++) |