[U-Boot] PPC4XX Custom Board - Failing to read I2C
Stefan Roese
sr at denx.de
Wed Apr 3 02:51:45 CEST 2013
On 02.04.2013 23:48, txcotrader wrote:
> Hello,
>
> I'm looking for some direction. I'm trying to update my version of u-boot
> for a custom board based off of the PPC460SX. I'm struggling to understand
> why I cannot get past reading the I2C on the DIMM. I'm receiving this error:
>
> CPU: AMCC PowerPC 460SX Rev. A at 231.291 MHz (PLB=33 OPB=16 EBC=4)
> Security support
> Bootstrap Option A - Boot ROM Location EBC (8 bits)
> Internal PCI arbiter enabled
> 32 kB I-Cache 32 kB D-Cache
> Board: x Processor Board - AMCC 460SX
>
> *** DEBUG: NDFC register configurations ***
> SDR0_EBC = 0x30011ffe
> SDR0_NFC0 = 0x411b0683
> SDR0_PFC1 = 0x41120000
> EBC0_B0CR = 0xff08a000
> EBC0_B0AP = 0x10055e00
> EBC0_B1CR = 0xd1018000
> EBC0_B1AP = 0x018003c0
> EBC0_B2CR = 0xd0018000
> EBC0_B2AP = 0x03804240
> EBC0_B3CR = 0x00000000
> EBC0_B3AP = 0x00000000
>
> SDR0_SDSTP0 = 0xb40b3149
> SDR0_SDSTP1 = 0xe8000210
> SDR0_SDSTP2 = 0x00002030
> SDR0_SDSTP3 = 0xc3001380
>
> CPR0_PLL0C = 0x40000340
> CPR0_PLL1C = 0x40000340
> CPR0_PLL0D = 0xb3010600
> CPR0_PLL1D = 0x00010600
> CPR0_PLBD = 0x04000000
> CPR0_OPBD = 0x02000000
> CPR0_PERD = 0x01000000
> CPR0_ICFG = 0x00000000
> CPR0_DDRD = 0x02000000
>
> L2: 512KB
> EBC_BXAP_FPGA: 03804240
> EBC_BXCR_FPGA_CS2: d0018000
> I2C: ready
> DRAM:
> spd_read(0x50) returned 0
> spd_read(0x50) returned 0
> DIMM slot 0: Not populated
> ERROR - No memory installed. Install a DDR-SDRAM DIMM.
Okay, here you seem to have configured 0x50 as I2C address for the SPD
EEPROM.
> I2C configs:
>
> #define CONFIG_I2C_MULTI_BUS 1
> #define CONFIG_SYS_I2C_SPEED 400000 /* I2C speed
> */
>
> /*#define CONFIG_SYS_I2C_MULTI_EEPROMS*/
> #define CONFIG_SYS_I2C_EEPROM_ADDR (0xa8>>1)
> #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
> #define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 5
> #define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
>
> /* I2C bootstrap EEPROM */
> #define IIC0_BOOTPROM_ADDR 0x54
> #define IIC0_PLX_FPGA_ADDR 0x69
> #define IIC0_PLX_PPC_ADDR 0x6A
>
> /* I2C bootstrap EEPROM */
> #define CONFIG_4xx_CONFIG_I2C_EEPROM_ADDR 0x52
> #define CONFIG_4xx_CONFIG_I2C_EEPROM_OFFSET 0
> #define CONFIG_4xx_CONFIG_BLOCKSIZE 16
>
> /* RTC configuration */
> #define CONFIG_RTC_DS1337 1
> #define CONFIG_SYS_I2C_RTC_ADDR 0x68
>
>
> I found myself digging pretty deep into i2c_transfer.c but I think there is
> a configuration error. Any advice would be greatly appreciated.
The SPD I2C EEPROM address is missing in your configs here. I assume you
have something like this in your header:
#define CONFIG_SPD_EEPROM*/
#define SPD_EEPROM_ADDRESS { 0x50 }
Now change this 0x50 to the correct address. Most of the time something
between 0x50 and 0x54.
Hope this helps,
Stefan
More information about the U-Boot
mailing list