[Letux-kernel] jz4730-i2c

H. Nikolaus Schaller hns at goldelico.com
Tue Jan 26 11:25:10 CET 2021

Hi Paul,
I think I may have a hint why "spurious interrupts" are reported by
in my latest i2c driver.

If I compare the "1.5.2 Write Operation" and "1.5.3 Read Operation",
the write operation sets the STO bit and then waits for ACKF/TEND.
While for read the STO isn't even mentioned!

And if I think about my state machine, there is no such state
"Wait for STO sent" after finishing the write. Maybe it suffices
to add another state after sending the STO which IMHO generates
another IRQ when done.

I think I also have to study again how I2C works, especially who
is sending the STO and how it relates to who generates the ACK.

What I have also started to try is to blacklist on my test setup
all i2c clients and the i2s driver through some /etc/modprobe.d/blacklist.conf.

This makes the device boot fine and gives a nice platform for
individually loading and testing drivers...

Well, blacklisting the jz4780_dma driver failed because this
ends in a deadlock for MMC initialization.


More information about the Letux-kernel mailing list