diff options
author | H Hartley Sweeten <hsweeten@visionengravers.com> | 2013-11-26 18:42:18 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-12-03 12:20:22 -0500 |
commit | e30b22a9ccbe0b3c2e9c68ab3e46c69f56c3ae35 (patch) | |
tree | 207272c36d8bb22ae3bc22f64132c358b3714329 | |
parent | eeb6f2d3b7406e569c718f265100cce0227841bd (diff) |
staging: comedi: pcl818: tidy up the irq support in pcl818_attach()
Tidy up the code that does the request_irq().
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/pcl818.c | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/drivers/staging/comedi/drivers/pcl818.c b/drivers/staging/comedi/drivers/pcl818.c index 945a5dd4ec48..15b424733a9e 100644 --- a/drivers/staging/comedi/drivers/pcl818.c +++ b/drivers/staging/comedi/drivers/pcl818.c | |||
@@ -1204,7 +1204,6 @@ static int pcl818_attach(struct comedi_device *dev, struct comedi_devconfig *it) | |||
1204 | const struct pcl818_board *board = comedi_board(dev); | 1204 | const struct pcl818_board *board = comedi_board(dev); |
1205 | struct pcl818_private *devpriv; | 1205 | struct pcl818_private *devpriv; |
1206 | int ret; | 1206 | int ret; |
1207 | unsigned int irq; | ||
1208 | int dma; | 1207 | int dma; |
1209 | unsigned long pages; | 1208 | unsigned long pages; |
1210 | struct comedi_subdevice *s; | 1209 | struct comedi_subdevice *s; |
@@ -1228,28 +1227,15 @@ static int pcl818_attach(struct comedi_device *dev, struct comedi_devconfig *it) | |||
1228 | return -EIO; | 1227 | return -EIO; |
1229 | } | 1228 | } |
1230 | 1229 | ||
1231 | /* grab our IRQ */ | 1230 | if ((1 << it->options[1]) & board->IRQbits) { |
1232 | irq = 0; | 1231 | ret = request_irq(it->options[1], interrupt_pcl818, 0, |
1233 | if (board->IRQbits != 0) { /* board support IRQ */ | 1232 | dev->board_name, dev); |
1234 | irq = it->options[1]; | 1233 | if (ret == 0) { |
1235 | if (irq) { /* we want to use IRQ */ | 1234 | dev->irq = it->options[1]; |
1236 | if (((1 << irq) & board->IRQbits) == 0) { | 1235 | devpriv->irq_free = 1; |
1237 | irq = 0; /* Bad IRQ */ | ||
1238 | } else { | ||
1239 | if (request_irq(irq, interrupt_pcl818, 0, | ||
1240 | dev->board_name, dev)) { | ||
1241 | irq = 0; /* Can't use IRQ */ | ||
1242 | } | ||
1243 | } | ||
1244 | } | 1236 | } |
1245 | } | 1237 | } |
1246 | 1238 | ||
1247 | dev->irq = irq; | ||
1248 | if (irq) | ||
1249 | devpriv->irq_free = 1; /* 1=we have allocated irq */ | ||
1250 | else | ||
1251 | devpriv->irq_free = 0; | ||
1252 | |||
1253 | devpriv->irq_blocked = 0; /* number of subdevice which use IRQ */ | 1239 | devpriv->irq_blocked = 0; /* number of subdevice which use IRQ */ |
1254 | devpriv->ai_mode = 0; /* mode of irq */ | 1240 | devpriv->ai_mode = 0; /* mode of irq */ |
1255 | 1241 | ||
@@ -1311,7 +1297,7 @@ no_dma: | |||
1311 | s->range_table = board->ai_range_type; | 1297 | s->range_table = board->ai_range_type; |
1312 | s->cancel = pcl818_ai_cancel; | 1298 | s->cancel = pcl818_ai_cancel; |
1313 | s->insn_read = pcl818_ai_insn_read; | 1299 | s->insn_read = pcl818_ai_insn_read; |
1314 | if (irq) { | 1300 | if (dev->irq) { |
1315 | dev->read_subdev = s; | 1301 | dev->read_subdev = s; |
1316 | s->subdev_flags |= SDF_CMD_READ; | 1302 | s->subdev_flags |= SDF_CMD_READ; |
1317 | s->do_cmdtest = ai_cmdtest; | 1303 | s->do_cmdtest = ai_cmdtest; |