From: ppisa Date: Wed, 3 May 2006 00:36:00 +0000 (+0200) Subject: Merge: The SJA1000 interrupt support modified to provide more robust error recovery... X-Git-Tag: CLT_COMM_CAN_usb_can1_kriz_bp~28 X-Git-Url: http://rtime.felk.cvut.cz/gitweb/lincan.git/commitdiff_plain/9722ae7a46ccd6b394603f8e0925a71015ddedcd?hp=670f778928805316446efe487a42b733b0f0d90c Merge: The SJA1000 interrupt support modified to provide more robust error recovery handling. Merge commit 'remotes/sf-ocera-lincan/master' --- diff --git a/lincan/src/sja1000p.c b/lincan/src/sja1000p.c index 36319a1..ffadb6c 100644 --- a/lincan/src/sja1000p.c +++ b/lincan/src/sja1000p.c @@ -767,7 +767,8 @@ int sja1000p_irq_handler(int irq, struct canchip_t *chip) /* (irq_register & sjaIR_TI) */ /* old variant using SJAIR, collides with intended use with irq_accept */ - if ((status & sjaSR_TBS) && can_msgobj_test_fl(obj,TX_PENDING)) { + if (((status & sjaSR_TBS) && can_msgobj_test_fl(obj,TX_PENDING))|| + (can_msgobj_test_fl(obj,TX_REQUEST))) { DEBUGMSG("sja1000_irq_handler: TI or TX_PENDING and TBS\n"); obj->ret = 0; can_msgobj_set_fl(obj,TX_REQUEST); @@ -824,7 +825,7 @@ int sja1000p_irq_handler(int irq, struct canchip_t *chip) can_msgobj_set_fl(obj,TX_REQUEST); } while((irq_register & (sjaIR_BEI|sjaIR_EPI|sjaIR_DOI|sjaIR_EI|sjaIR_RI)) || - (can_msgobj_test_fl(obj,TX_PENDING) && !can_msgobj_test_fl(obj,TX_LOCK)) || + (can_msgobj_test_fl(obj,TX_REQUEST) && !can_msgobj_test_fl(obj,TX_LOCK)) || (status & sjaSR_RBS)); return CANCHIP_IRQ_HANDLED;