]> rtime.felk.cvut.cz Git - lincan.git/blobdiff - lincan/src/setup.c
Changed SJA1000 chip IRQ handling to loop until all requests are served
[lincan.git] / lincan / src / setup.c
index c77d03cdc7850d61717f5c2587a7e577f5b1be93..9c4af7669dce09e11cd66fc8bc5b45a3c4f5120a 100644 (file)
@@ -589,6 +589,8 @@ int can_chip_setup_irq(struct canchip_t *chip)
                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))
@@ -620,6 +622,9 @@ int can_chip_setup_irq(struct canchip_t *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 {