#ifndef CAN_WITH_RTL
+/**
+ * can_default_irq_dispatch - the first level interrupt dispatch handler
+ * @irq: interrupt vector number, this value is system specific
+ * @dev_id: driver private pointer registered at time of request_irq() call.
+ * The CAN driver uses this pointer to store relationship of interrupt
+ * to chip state structure - @struct canchip_t
+ * @regs: system dependent value pointing to registers stored in exception frame
+ *
+ * File: src/setup.c
+ */
can_irqreturn_t can_default_irq_dispatch(int irq, void *dev_id, struct pt_regs *regs)
{
int retval;
return -1;
if(!chip->chipspecops->irq_handler)
return 0;
+ if(chip->flags & CHIP_IRQ_CUSTOM)
+ return 1;
if ((chip->flags & CHIP_IRQ_VME) == 0) {
if (request_irq(chip->chip_irq,can_default_irq_dispatch,SA_SHIRQ,DEVICE_NAME,chip))
void can_chip_free_irq(struct canchip_t *chip)
{
if((chip->flags & CHIP_IRQ_SETUP) && (chip->chip_irq>=0)) {
+ if(chip->flags & CHIP_IRQ_CUSTOM)
+ return;
+
if ((chip->flags & CHIP_IRQ_VME) == 0)
free_irq(chip->chip_irq, chip);
else {