diff options
-rw-r--r-- | drivers/staging/comedi/drivers/pcl812.c | 31 |
1 files changed, 6 insertions, 25 deletions
diff --git a/drivers/staging/comedi/drivers/pcl812.c b/drivers/staging/comedi/drivers/pcl812.c index e31cf44faa33..804174b573c2 100644 --- a/drivers/staging/comedi/drivers/pcl812.c +++ b/drivers/staging/comedi/drivers/pcl812.c | |||
@@ -1088,7 +1088,6 @@ static int pcl812_attach(struct comedi_device *dev, struct comedi_devconfig *it) | |||
1088 | const struct pcl812_board *board = comedi_board(dev); | 1088 | const struct pcl812_board *board = comedi_board(dev); |
1089 | struct pcl812_private *devpriv; | 1089 | struct pcl812_private *devpriv; |
1090 | int ret, subdev; | 1090 | int ret, subdev; |
1091 | unsigned int irq; | ||
1092 | unsigned int dma; | 1091 | unsigned int dma; |
1093 | unsigned long pages; | 1092 | unsigned long pages; |
1094 | struct comedi_subdevice *s; | 1093 | struct comedi_subdevice *s; |
@@ -1102,31 +1101,13 @@ static int pcl812_attach(struct comedi_device *dev, struct comedi_devconfig *it) | |||
1102 | if (!devpriv) | 1101 | if (!devpriv) |
1103 | return -ENOMEM; | 1102 | return -ENOMEM; |
1104 | 1103 | ||
1105 | irq = 0; | 1104 | if ((1 << it->options[1]) & board->IRQbits) { |
1106 | if (board->IRQbits != 0) { /* board support IRQ */ | 1105 | ret = request_irq(it->options[1], interrupt_pcl812, 0, |
1107 | irq = it->options[1]; | 1106 | dev->board_name, dev); |
1108 | if (irq) { /* we want to use IRQ */ | 1107 | if (ret == 0) |
1109 | if (((1 << irq) & board->IRQbits) == 0) { | 1108 | dev->irq = it->options[1]; |
1110 | printk | ||
1111 | (", IRQ %u is out of allowed range, " | ||
1112 | "DISABLING IT", irq); | ||
1113 | irq = 0; /* Bad IRQ */ | ||
1114 | } else { | ||
1115 | if (request_irq(irq, interrupt_pcl812, 0, | ||
1116 | dev->board_name, dev)) { | ||
1117 | printk | ||
1118 | (", unable to allocate IRQ %u, " | ||
1119 | "DISABLING IT", irq); | ||
1120 | irq = 0; /* Can't use IRQ */ | ||
1121 | } else { | ||
1122 | printk(KERN_INFO ", irq=%u", irq); | ||
1123 | } | ||
1124 | } | ||
1125 | } | ||
1126 | } | 1109 | } |
1127 | 1110 | ||
1128 | dev->irq = irq; | ||
1129 | |||
1130 | dma = 0; | 1111 | dma = 0; |
1131 | devpriv->dma = dma; | 1112 | devpriv->dma = dma; |
1132 | if (!dev->irq) | 1113 | if (!dev->irq) |
@@ -1395,7 +1376,7 @@ no_dma: | |||
1395 | break; | 1376 | break; |
1396 | case boardA821: | 1377 | case boardA821: |
1397 | devpriv->max_812_ai_mode0_rangewait = 1; | 1378 | devpriv->max_812_ai_mode0_rangewait = 1; |
1398 | devpriv->mode_reg_int = (irq << 4) & 0xf0; | 1379 | devpriv->mode_reg_int = (dev->irq << 4) & 0xf0; |
1399 | break; | 1380 | break; |
1400 | case boardPCL813B: | 1381 | case boardPCL813B: |
1401 | case boardPCL813: | 1382 | case boardPCL813: |