unsigned irq_register;
unsigned object;
struct msgobj_t *obj;
+ int loop_cnt=CHIP_MAX_IRQLOOP;
/*put_reg=device->hwspecops->write_register;*/
/*get_reg=device->hwspecops->read_register;*/
do {
+ if(!loop_cnt--) {
+ CANMSG("i82527_irq_handler IRQ %d stuck\n",irq);
+ return CANCHIP_IRQ_STUCK;
+ }
+
DEBUGMSG("i82527: iIRQ 0x%02x\n",irq_register);
if (irq_register == 0x01) {
i82527_irq_read_handler(chip, obj, object);
}
+
+ irq_register=i82527_seg_read_reg(chip, iIRQ);
- } while((irq_register=i82527_seg_read_reg(chip, iIRQ)) != 0);
+ } while(irq_register != 0);
return CANCHIP_IRQ_HANDLED;
}