soft_i2c/i2c_probe(): Perform reads instead of writes
PATCH 1/1 soft_i2c/i2c_probe(): Perform reads instead of writes
A non-text attachment was scrubbed...
Name: uboot.softi2c.probe.patch
Type: text/x-patch
Size: 521 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20050526/3ce30481/attachment.bin
PATCH 1/1 soft_i2c/i2c_probe(): Perform reads instead of writes
Peter,
I believe the implementation was correct but the comment was wrong. It should be a write transaction with just address byte. After the address byte is transmitted the I2C slave will acknowledge (if present) and we finish the transaction by generating the stop condition. i.e. fake write.
Best regards,
Tolunay
Quoted 33 lines · Peter Korsgaard
Hi,
The following little patch makes the
i2c_probefunction use reads instead of writes to match the comment (broken in r1.2).* Patch by Peter Korsgaard, 26 May 2005:
Use reads instead of writes for probe insoft_i2c.------------------------------------------------------------------------
Index:
common/soft_i2c.c
===================================================================
RCS file: /cvsroot/u-boot/u-boot/common/soft_i2c.c,v retrieving revision 1.5
diff -u -p -u -r1.5soft_i2c.csoft_i2c.c +1
-2@@ -290,7 +290,7 @@ int i2c_probe(uchar addr)/* perform 1 byte read transaction */ send_start (); - rc =write_byte ((addr <<1 ) |0 ); + rc =write_byte ((addr <<1 ) |1 );send_stop ();return (rc ?1 :0 ); ------------------------------------------------------------------------
PATCH 1/1 soft_i2c/i2c_probe(): Perform reads instead of writes
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Tolunay" == Tolunay Orkun <[email protected]> writes:
Hi, and sorry for the slow response!
Tolunay> Peter, I believe the implementation was correct but the Tolunay> comment was wrong. It should be a write transaction with Tolunay> just address byte. After the address byte is transmitted the Tolunay> I2C slave will acknowledge (if present) and we finish the Tolunay> transaction by generating the stop condition. i.e. fake Tolunay> write.
Why write? Wouldn't a zero byte read transaction be safer?
Signature · 1 line
Bye, Peter Korsgaard
PATCH 1/1 soft_i2c/i2c_probe(): Perform reads instead of writes
Quoted 6 lines · Peter Korsgaard
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
"Tolunay" == Tolunay Orkun <[email protected]> writes:
Hi, and sorry for the slow response!
Quoted 11 lines
Tolunay> Peter, I believe the implementation was correct but the Tolunay> comment was wrong. It should be a write transaction with Tolunay> just address byte. After the address byte is transmitted the Tolunay> I2C slave will acknowledge (if present) and we finish the Tolunay> transaction by generating the stop condition. i.e. fake Tolunay> write.
Why write? Wouldn't a zero byte read transaction be safer?
I have read somewhere (that I cannot find now), that some device would lock up on 0-byte read vs 0-byte write. Since the current code is working as it is unless there is demonstrable problem with it, I would fix the comment only.
PATCH 1/1 soft_i2c/i2c_probe(): Perform reads instead of writes
Quoted 15 lines · Tolunay Orkun
Quoted 13 lines · Peter Korsgaard
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
Quoted 3 lines
"Tolunay" == Tolunay Orkun <[email protected]> writes:
Hi, and sorry for the slow response!
Tolunay> Peter, I believe the implementation was correct but the Tolunay> comment was wrong. It should be a write transaction with Tolunay> just address byte. After the address byte is transmitted the Tolunay> I2C slave will acknowledge (if present) and we finish the Tolunay> transaction by generating the stop condition. i.e. fake Tolunay> write.
Quoted 8 lines
Quoted 4 lines
Why write? Wouldn't a zero byte read transaction be safer?
I have read somewhere (that I cannot find now), that some device would lock up on 0-byte read vs 0-byte write. Since the current code is working as it is unless there is demonstrable problem with it, I would fix the comment only.
Ebony (PPC440GP eval board) has a device like this, IIRC it's a clock driver, zero-read locks the bus completely.
In general, zero write is safer, also SMBUS spec defines such transaction as SMBUS QUICK; interestingly, there is no read equivalent :).
Also, from personal testing, using zero-write as detection hack, yields more devices than zero-read.
Signature · 1 line
Eugene
PATCH 1/1 soft_i2c/i2c_probe(): Perform reads instead of writes
In reply to Tolunay OrkunA non-text attachment was scrubbed...
Name: uboot.softi2c.probe.patch
Type: text/x-patch
Size: 510 bytes
Desc: not available
Url : http://lists.denx.de/pipermail/u-boot/attachments/20050615/dde88430/attachment.bin
PATCH 1/1 soft_i2c/i2c_probe(): Perform reads instead of writes
In reply to Peter KorsgaardQuoted 3 lines · In message <[email protected]> you wrote:
* Patch by Peter Korsgaard, 26 May 2005:
Use reads instead of writes for probe insoft_i2c.
Rejected. Tolunay's explanation was correct: only the comment was wrong. Fixed the comment now.
Best regards,
Wolfgang Denk
Signature · 6 lines
Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de I distrust all systematisers, and avoid them. The will to a system shows a lack of honesty. - Friedrich Wilhelm Nietzsche _G?tzen-D?mmerung [The Twilight of the Idols]_ ``Maxims and Missiles'' no. 26