[U-Boot] PPC4XX Custom Board - Failing to read I2C
Stefan Roese
stefan.roese at gmail.com
Mon Apr 8 16:34:28 CEST 2013
Greg,
On 08.04.2013 16:16, txcotrader wrote:
> Thanks for the suggestion, I2C_BASE_ADDR is the same in both versions. After
> doing some more digging, I can see why v2013.01.01 is not passing
> i2c_transfer. The following routine yields different results in the 2
> versions:
>
> v2013.01.01-
> do {
> /* Get status */
> status = in_8(&i2c->sts);
> printf("gd_ do status->i = %x, status = %d, IIC_STS = %x\n", i,
> status, &i2c->sts);
> udelay(10);
> i--;
> } while ((status & IIC_STS_PT) && !(status & IIC_STS_ERR) &&
> (i > 0));
>
> Result: gd_ do status->i = 80, status = 4, IIC_STS = ef600408
>
> v1.7.02-
> do {
> /* Get status */
> status = in_8((u8 *)IIC_STS);
> printf("gd_ do status->i = %d, status = %d, IIC_STS = %x\n", i,
> status, IIC_STS);
> udelay(10);
> i--;
> } while ((status & IIC_STS_PT) && !(status & IIC_STS_ERR) && (i >
> 0));
>
> Result: gd_ do status->i = 80, status = 40, IIC_STS = ef600408
>
> So in v2013.01.01 (status & IIC_STS_ERR) == 1, versus a (status &
> IIC_STS_ERR) == 0 in v1.7.02. Am I missing some sort of offset config
> someplace? Once again, any help is greatly appreciated.
So look into the manual to check what exactly these IIC_STS
bits/differences mean. 0x4 versus 0x40. This might give you a hint.
Perhaps some clocks missing? Not sure.
Which PPC4xx variant are you using again? 460SX?
Thanks,
Stefan
More information about the U-Boot
mailing list