[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