if (i82527_enable_configuration(chip))
return -ENODEV;
- clock /=2;
+ if(chip->int_cpu_reg & iCPU_DSC)
+ clock /=2;
/* tseg even = round down, odd = round up */
for (tseg=(0+0+2)*2; tseg<=(MAX_TSEG2+MAX_TSEG1+2)*2+1; tseg++) {
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);
+ CANMSG("i82527_irq_register 0x%x\n",irq_register);
+ return CANCHIP_IRQ_STUCK;
+ }
+
DEBUGMSG("i82527: iIRQ 0x%02x\n",irq_register);
if (irq_register == 0x01) {
i82527_irq_read_handler(chip, obj, object);
}
-
+
} while((irq_register=i82527_seg_read_reg(chip, iIRQ)) != 0);
return CANCHIP_IRQ_HANDLED;
chipspecops->start_chip = i82527_start_chip;
chipspecops->stop_chip = i82527_stop_chip;
chipspecops->irq_handler = i82527_irq_handler;
+ chipspecops->irq_accept = NULL;
return 0;
}