[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