Port-arm archive

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

Raspberry Pi I2C implementation still broken?

Hello all,

According to the following bug report:

and mailing list posts:

Either the IOCTL or I2C driver the Raspberry Pi I2C implementation is broken. I believe I may have found another bug in the implementation by trying to read/write an I2C EEPROM using IOCTL, but I'm guessing it is related to the already existing IOCTL issues that cause writes to always succeed. It's also possible my sample code is wrong :P. So, before I file a problem report: Has there been any progress in fixing the above I2C write errors?

If I can determine this is a separate bug, I'll use this post as the basis for a problem report. Linked is some sample code I wrote that reads and writes an Atmel EEPROM using IOTCL: https://gist.github.com/cr1901/5fa37836788a52236c8e . The particular EEPROM's datasheet is here: http://www.atmel.com/devices/AT24HC04B.aspx . Searching for any reference to "stretching" in the datasheet returns no results. So I think I can eliminate the known bug in Broadcom's I2C implementation, as described here: https://github.com/raspberrypi/linux/issues/254 .

Specifically, the written data to the EEPROM is being garbled when sent, but the EEPROM successfully enters its write phase (i.e. cmdbuf/cmdlen in IOCTL are being sent properly). I have confirmed this by writing and reading the EEPROM sequentially without a 5ms delay, and IOCTL correctly fails, as during an internal write, the EEPROM does not respond to any inputs. Reads, as far as I can tell, succeed- new EEPROMs always return 0xFF for each address prior to write, and return the garbage data written for already-programmed EEPROMs. Perhaps I'm using the IOCTL interface incorrectly?

As always, thanks for any assistance. I'm not in a position to test/write a driver patch for the RPi, but I'll take a look at the code anyway.


William D. Jones

Home | Main Index | Thread Index | Old Index