Hartmut Hackmann wrote:
> I know the I2C bus and have saa7134 documentation. But i have no
> experience
> with the MT352. The errata sheet does not mention a I2C bug. But the lost
> arbitration is interesting. Assuming there is only one master on the bus,
I have had a quick look at the 7134 I2C driver - I might not have time
to do more work on it soon, so I thought I'd better share a couple of
possible problems that I've noticed:
I haven't checked this against the 7134 datasheet, but:
Line 258 : if (!(msgs[i].flags & I2C_M_NOSTART) || 0 ==
i) {
Seems to say that "START", "ADDRESS" should only be sent on the first
message of an i2c transaction (0 == i), this would seem to disagree with
Documentation/i2c/i2c_protocol (maybe the 7134 does something clever
automatically, I didn't check).
Also, the transfer is not restarted in a lost arbitration condition (not
sure if this is a bug or not - maybe it's the job of the client driver
to do this - I'm not sure)
The first problem might possibly cause trouble if the 352 driver
switched to using multi-message i2c transactions, rather than single
message
> this indicates that there either is wild oscillation or a protocol
> problem
> with the MT352 resp. the card. Did somebody try to slow down the bus?
The 7134 only seems to support 100kHz, or 400kHz operation. I haven't
yet verified that the driver is always using 100kHz mode at the moment
tho', or seen if there is a way to to force the i2c hardware to wait
around. I'll try and do some more on this in the next couple of days.
Cheers,
Tim.