I have discovered a bug today in the saa7134 driver inside the function, “saa7134_i2c_xfer”
In order to communicate with certain i2c clients on the saa713x i2c bus, a quirk was implemented to prevent failures during i2c read transactions.
The quirk forces an i2c write/read to a bogus address that is unlikely to be used by any actual i2c client.
However, this quirk is not functioning properly. The reason for the malfunction is that the i2c address chosen to use as the quirk address was 0xfd.
The address 0xfd is indeed an i2c address unlikely to be used by any real i2c client, however, the address itself is invalid! The address, 0xfd, has the read bit set — this is problematic for the hardware, and causes the quirk workaround to fail.
It’s a wonder that nobody else has complained up to this point.
I am asking for testers, just to make sure that this doesn’t cause any other strange errors to occur as a side effect. I don’t expect any
new problems, but its always better to be safe than sorry 🙂
This change should not fix any of the other issues currently being discussed with the saa7134 driver — all I am asking is for people to test and indicate that the change does not incur any new bugs or unwanted behavior.
Please test the following repository, and send in your feedback: