
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