LTC4307 automatic stuck bus recovery

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am working with a board which has an LTC4307 I2C bus isolator chip,
connected to an MPC8548 processor.  Occasionally under high CPU load,
we see mysterious I2C errors (bad data, ACK errors).

Our theory is that calls to i2c_wait() inside mpc_write() are blocking
for so long that the LTC4307 thinks the bus is locked up, and resets it.
This chip takes action after only 30ms.  There are several workloads where
we see the process doing the I2C writes is not getting rescheduled in time
to write the next byte.

So my question is this: is this something the I2C code should deal with,
or is this something better pushed up to userspace?  Raising the priority
of the process has shown improvements.  It seems like the kernel code could
at least detect the problem and return an error if the hardware imposes
realtime constraints.

Thanks,
Brian Dominy


--
To unsubscribe from this list: send the line "unsubscribe linux-i2c" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux