On Thu, Jan 05, 2017 at 01:06:53PM +0100, Andrzej Hajda wrote: > In case of arbitration lost adequate interrupt sometimes is not signaled. As > a result transfer timeouts and is not retried, as it should. To avoid such > cases code is added to check transaction status in case of every interrupt. > > Signed-off-by: Andrzej Hajda <a.hajda@xxxxxxxxxxx> > --- > + > + switch (trans_status & HSI2C_MASTER_ST_MASK) { > + case HSI2C_MASTER_ST_LOSE: > + i2c->state = -EAGAIN; > + goto stop; > + } Why not using if() instead of switch() as in the rest of the driver? And there is arbitration lost checking already with int_status & HSI2C_INT_TRANS_ABORT. Any guess why it doesn't trigger?
Attachment:
signature.asc
Description: PGP signature