X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/blobdiff_plain/2a4663dd0b20d96d1ffe20993dd0c63ed2ca9f20..258e4a224adc90317b3d11622a3076ba6d61b0d2:/lincan/src/i82527.c?ds=sidebyside diff --git a/lincan/src/i82527.c b/lincan/src/i82527.c index 443124a..3aed30b 100644 --- a/lincan/src/i82527.c +++ b/lincan/src/i82527.c @@ -425,6 +425,9 @@ void i82527_irq_write_handler(struct chip_t *chip, struct msgobj_t *obj) if(obj->tx_slot){ /* Do local transmitted message distribution if enabled */ if (processlocal){ + /* fill CAN message timestamp */ + can_filltimestamp(&obj->tx_slot->msg.timestamp); + obj->tx_slot->msg.flags |= MSG_LOCAL; canque_filter_msg2edges(obj->qends, &obj->tx_slot->msg); } @@ -514,6 +517,9 @@ void i82527_irq_read_handler(struct chip_t *chip, struct msgobj_t *obj, int objn } + /* fill CAN message timestamp */ + can_filltimestamp(&obj->rx_msg.timestamp); + canque_filter_msg2edges(obj->qends, &obj->rx_msg); if (msgctl1 & NEWD_SET) @@ -605,13 +611,12 @@ void i82527_irq_sync_activities(struct chip_t *chip, struct msgobj_t *obj) } } -can_irqreturn_t i82527_irq_handler(int irq, void *dev_id, struct pt_regs *regs) +int i82527_irq_handler(int irq, struct chip_t *chip) { unsigned char msgcfg; unsigned irq_register; unsigned object; - struct chip_t *chip=(struct chip_t *)dev_id; struct msgobj_t *obj; /*put_reg=device->hwspecops->write_register;*/ @@ -621,7 +626,7 @@ can_irqreturn_t i82527_irq_handler(int irq, void *dev_id, struct pt_regs *regs) if(!irq_register) { DEBUGMSG("i82527: spurious IRQ\n"); - return CAN_IRQ_NONE; + return CANCHIP_IRQ_NONE; } @@ -632,7 +637,7 @@ can_irqreturn_t i82527_irq_handler(int irq, void *dev_id, struct pt_regs *regs) if (irq_register == 0x01) { DEBUGMSG("Status register: 0x%x\n",can_read_reg(chip, iSTAT)); continue; - /*return CAN_IRQ_NONE;*/ + /*return CANCHIP_IRQ_NONE;*/ } if (irq_register == 0x02) @@ -640,7 +645,7 @@ can_irqreturn_t i82527_irq_handler(int irq, void *dev_id, struct pt_regs *regs) else if(irq_register < 14) object = irq_register-3; else - return CAN_IRQ_NONE; + return CANCHIP_IRQ_NONE; obj=chip->msgobj[object]; @@ -658,7 +663,7 @@ can_irqreturn_t i82527_irq_handler(int irq, void *dev_id, struct pt_regs *regs) } while((irq_register=i82527_seg_read_reg(chip, iIRQ)) != 0); - return CAN_IRQ_HANDLED; + return CANCHIP_IRQ_HANDLED; } void i82527_irq_rtr_handler(struct chip_t *chip, struct msgobj_t *obj,