Re: 405 I2C
From: andrew may <hidden>
Date: 2002-05-22 19:53:24
On Wed, May 22, 2002 at 12:36:36PM +0200, Kenneth Johansson wrote:
On Tue, 2002-05-21 at 20:00, andrew may wrote:quoted
well i2c...read_byte_data is really a write of 1 byte followed by a read of 1 byte. The scan is just a read of 1 byte.Yepp thats the difference.quoted
So you should be going through the combined xfer function.Yes your right I missed that. It dose look like it's the first write that never get an ack. This is the debug output from a one byte read from address 0 from a non existing device. kernel: iic_xfer: iic_xfer: Clearing status register kernel: iic_xfer: Waiting for any pending transfers to complete kernel: iic_xfer: Clearing master data buffer kernel: iic_xfer: Loading slave address kernel: iic_xfer: Call combined transaction kernel: Beginning combined transaction kernel: This one is a write kernel: iic_sendbytes: Waiting for interrupt kernel: iic_ibmocp_handler: in interrupt handler kernel: iic_ibmocp_handler: status = 26 kernel: i2c-algo-ppc405.o: fail: only wrote -1 bytes. It dose look like I actually have to learn how this is supposed to work we seem to have more than one problem with the current code :(
Here is a patch to my latest working copy. The comments describe the new iic_xfer function. The stuff is in the #if 1 section and it is about 280 lines and it replaces the #else section which is about 470 lines. So if you are going to work on it I would suggest starting with the new iic_xfer rather than the one that is there now. You will need to remove the ibm_gpio_out_timer calls in the IRQ handler I used to trigger stuff. There is still plenty of things to do with this, but it is in a works for me state, and I am not planning on spending time on this stuff right now.
Attachments
- i2c-522.patch.gz [application/octet-stream] 5986 bytes