- if (request_irq(chip->chip_irq,chip->chipspecops->irq_handler,SA_SHIRQ,DEVICE_NAME,chip))
- return -1;
- else {
- DEBUGMSG("Registered interrupt %d\n",chip->chip_irq);
+ if ((chip->flags & CHIP_IRQ_VME) == 0) {
+ if (request_irq(chip->chip_irq,can_default_irq_dispatch,SA_SHIRQ,DEVICE_NAME,chip))
+ return -1;
+ else {
+ DEBUGMSG("Registered interrupt %d\n",chip->chip_irq);
+ chip->flags |= CHIP_IRQ_SETUP;
+ }
+ } else {
+#ifdef CAN_ENABLE_VME_SUPPORT
+ if (chip->chip_irq < 1 || chip->chip_irq > 255) {
+ CANMSG("Bad irq parameter. (1 <= irq <= 255).\n");
+ return -EINVAL;
+ }
+
+ request_vmeirq(chip->chip_irq, can_default_irq_dispatch, chip);
+ DEBUGMSG("Registered VME interrupt vector %d\n",chip->chip_irq);