MPC8245's I2C support on linux kernel
Matthew S. McClintock
mattsm at arlut.utexas.edu
Thu Apr 22 00:15:09 EST 2004
We use this one on our MPC8245 board:
http://www.humboldt.co.uk/mpc10xi2c.html
On Tue, 2004-04-20 at 14:29, xiaogeng_jin at agilent.com wrote:
> Hi,
>
> Is anyone aware of the compatibility of I2C controller in MPC8245 and MPC8240? Now DENX supports i2c-algo-8240.c in its distribution. Is this algorithm working for MPC8245's I2C controller? It should be.
>
> However I have some problem using this module on my custom MPC8245 board. There is no problem for write. Data seems to be written into SEEPROM. The following message is captured by the i2c monitor.
> Msg 3 [Start]#A0[W][A]00[A]00[A]01[A]02[A]03[A]04[A][Stop]
>
> But for read, only the first byte is returned when I try to read multiple bytes. The following messages show that I try to read 4 bytes at the beginning of SEEPROM.
> Msg 14 [Start]#A0[W][A]00[A]00[A][Stop]
> Msg 15 [Start]#A0[R][A]01[N]FF[N]FF[N]FF[N]FF[N][Stop]
>
> I suspect that the i2c controller doesn't generate the ack bit, which is supposed to do so. Why does the controller generate ACK automatically for write operations but not for read operations?
>
> Then I go back to check the code of i2c-algo-8240.c and find m8240_readbytes() has confused me.
> //m8240_iic_write(&i2c->i2ccr, M8240_I2CCR_TXAK, M8240_I2CCR_TXAK);
> Why is TXAK set only after all multiple bytes are read? I think the ACK should be generated after each byte is read if the ACK is generated by the driver instead of the controller itself. Should TXAK be set during the initialization?
>
> Thanks,
> -Shawn.
>
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded
mailing list