diff options
31 files changed, 69 insertions, 551 deletions
| diff --git a/arch/powerpc/cpu/mpc8xxx/ddr/main.c b/arch/powerpc/cpu/mpc8xxx/ddr/main.c index bb96d66a9..c8fa12353 100644 --- a/arch/powerpc/cpu/mpc8xxx/ddr/main.c +++ b/arch/powerpc/cpu/mpc8xxx/ddr/main.c @@ -13,6 +13,7 @@   */  #include <common.h> +#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include "ddr.h" @@ -26,9 +27,65 @@ extern void fsl_ddr_set_lawbar(  extern void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,  				   unsigned int ctrl_num); -/* Board-specific functions defined in each board's ddr.c */ -extern void fsl_ddr_get_spd(generic_spd_eeprom_t *ctrl_dimms_spd, -			   unsigned int ctrl_num); +#if defined(SPD_EEPROM_ADDRESS) || \ +    defined(SPD_EEPROM_ADDRESS1) || defined(SPD_EEPROM_ADDRESS2) || \ +    defined(SPD_EEPROM_ADDRESS3) || defined(SPD_EEPROM_ADDRESS4) +#if (CONFIG_NUM_DDR_CONTROLLERS == 1) && (CONFIG_DIMM_SLOTS_PER_CTLR == 1) +u8 spd_i2c_addr[CONFIG_NUM_DDR_CONTROLLERS][CONFIG_DIMM_SLOTS_PER_CTLR] = { +	[0][0] = SPD_EEPROM_ADDRESS, +}; +#endif +#if (CONFIG_NUM_DDR_CONTROLLERS == 2) && (CONFIG_DIMM_SLOTS_PER_CTLR == 1) +u8 spd_i2c_addr[CONFIG_NUM_DDR_CONTROLLERS][CONFIG_DIMM_SLOTS_PER_CTLR] = { +	[0][0] = SPD_EEPROM_ADDRESS1,	/* controller 1 */ +	[1][0] = SPD_EEPROM_ADDRESS2,	/* controller 2 */ +}; +#endif +#if (CONFIG_NUM_DDR_CONTROLLERS == 2) && (CONFIG_DIMM_SLOTS_PER_CTLR == 2) +u8 spd_i2c_addr[CONFIG_NUM_DDR_CONTROLLERS][CONFIG_DIMM_SLOTS_PER_CTLR] = { +	[0][0] = SPD_EEPROM_ADDRESS1,	/* controller 1 */ +	[0][1] = SPD_EEPROM_ADDRESS2,	/* controller 1 */ +	[1][0] = SPD_EEPROM_ADDRESS3,	/* controller 2 */ +	[1][1] = SPD_EEPROM_ADDRESS4,	/* controller 2 */ +}; +#endif + +static void __get_spd(generic_spd_eeprom_t *spd, u8 i2c_address) +{ +	int ret = i2c_read(i2c_address, 0, 1, (uchar *)spd, +				sizeof(generic_spd_eeprom_t)); + +	if (ret) { +		printf("DDR: failed to read SPD from address %u\n", i2c_address); +		memset(spd, 0, sizeof(generic_spd_eeprom_t)); +	} +} + +__attribute__((weak, alias("__get_spd"))) +void get_spd(generic_spd_eeprom_t *spd, u8 i2c_address); + +void fsl_ddr_get_spd(generic_spd_eeprom_t *ctrl_dimms_spd, +		      unsigned int ctrl_num) +{ +	unsigned int i; +	unsigned int i2c_address = 0; + +	if (ctrl_num >= CONFIG_NUM_DDR_CONTROLLERS) { +		printf("%s unexpected ctrl_num = %u\n", __FUNCTION__, ctrl_num); +		return; +	} + +	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { +		i2c_address = spd_i2c_addr[ctrl_num][i]; +		get_spd(&(ctrl_dimms_spd[i]), i2c_address); +	} +} +#else +void fsl_ddr_get_spd(generic_spd_eeprom_t *ctrl_dimms_spd, +		      unsigned int ctrl_num) +{ +} +#endif /* SPD_EEPROM_ADDRESSx */  /*   * ASSUMPTIONS: diff --git a/board/freescale/corenet_ds/ddr.c b/board/freescale/corenet_ds/ddr.c index d83b9bfb6..98024c72d 100644 --- a/board/freescale/corenet_ds/ddr.c +++ b/board/freescale/corenet_ds/ddr.c @@ -107,33 +107,6 @@ phys_size_t fixed_sdram(void)  	return ddr_size;  } -static void get_spd(ddr3_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	int ret; - -	ret = i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr3_spd_eeprom_t)); -	if (ret) { -		debug("DDR: failed to read SPD from address %u\n", i2c_address); -		memset(spd, 0, sizeof(ddr3_spd_eeprom_t)); -	} -} - -void fsl_ddr_get_spd(ddr3_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) -			i2c_address = SPD_EEPROM_ADDRESS1; -		else if (ctrl_num == 1 && i == 0) -			i2c_address = SPD_EEPROM_ADDRESS2; - -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  typedef struct {  	u32 datarate_mhz_low;  	u32 datarate_mhz_high; diff --git a/board/freescale/mpc8536ds/ddr.c b/board/freescale/mpc8536ds/ddr.c index 565e2132a..d10370c9f 100644 --- a/board/freescale/mpc8536ds/ddr.c +++ b/board/freescale/mpc8536ds/ddr.c @@ -7,31 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; - -	if (ctrl_num) { -		printf("%s unexpected ctrl_num = %u\n", __FUNCTION__, ctrl_num); -		return; -	} - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		get_spd(&(ctrl_dimms_spd[i]), SPD_EEPROM_ADDRESS); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8540ads/ddr.c b/board/freescale/mpc8540ads/ddr.c index 64a3ee15b..571137443 100644 --- a/board/freescale/mpc8540ads/ddr.c +++ b/board/freescale/mpc8540ads/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr1_spd_eeprom_t)); -} - -void -fsl_ddr_get_spd(ddr1_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8541cds/ddr.c b/board/freescale/mpc8541cds/ddr.c index ce08af112..78d73b0ea 100644 --- a/board/freescale/mpc8541cds/ddr.c +++ b/board/freescale/mpc8541cds/ddr.c @@ -7,31 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr1_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr1_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8544ds/ddr.c b/board/freescale/mpc8544ds/ddr.c index 87f0a22bb..94219b947 100644 --- a/board/freescale/mpc8544ds/ddr.c +++ b/board/freescale/mpc8544ds/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; - -	if (ctrl_num) { -		printf("%s unexpected ctrl_num = %u\n", __FUNCTION__, ctrl_num); -		return; -	} - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		get_spd(&(ctrl_dimms_spd[i]), SPD_EEPROM_ADDRESS); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8548cds/ddr.c b/board/freescale/mpc8548cds/ddr.c index bc6e71abc..996ffe206 100644 --- a/board/freescale/mpc8548cds/ddr.c +++ b/board/freescale/mpc8548cds/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -			unsigned int ctrl_num) -{ -	unsigned int i; - -	if (ctrl_num) { -		printf("%s unexpected ctrl_num = %u\n", __FUNCTION__, ctrl_num); -		return; -	} - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		get_spd(&(ctrl_dimms_spd[i]), SPD_EEPROM_ADDRESS); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8555cds/ddr.c b/board/freescale/mpc8555cds/ddr.c index ce08af112..78d73b0ea 100644 --- a/board/freescale/mpc8555cds/ddr.c +++ b/board/freescale/mpc8555cds/ddr.c @@ -7,31 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr1_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr1_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8560ads/ddr.c b/board/freescale/mpc8560ads/ddr.c index 64a3ee15b..571137443 100644 --- a/board/freescale/mpc8560ads/ddr.c +++ b/board/freescale/mpc8560ads/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr1_spd_eeprom_t)); -} - -void -fsl_ddr_get_spd(ddr1_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8568mds/ddr.c b/board/freescale/mpc8568mds/ddr.c index 9a4c5c9ad..b1f4f1f84 100644 --- a/board/freescale/mpc8568mds/ddr.c +++ b/board/freescale/mpc8568mds/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; - -	if (ctrl_num) { -		printf("%s unexpected ctrl_num = %u\n", __FUNCTION__, ctrl_num); -		return; -	} - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		get_spd(&(ctrl_dimms_spd[i]), SPD_EEPROM_ADDRESS); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8569mds/ddr.c b/board/freescale/mpc8569mds/ddr.c index bedbedd49..68f686b7e 100644 --- a/board/freescale/mpc8569mds/ddr.c +++ b/board/freescale/mpc8569mds/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr3_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr3_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr3_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) -			i2c_address = SPD_EEPROM_ADDRESS1; -		if (ctrl_num == 0 && i == 1) -			i2c_address = SPD_EEPROM_ADDRESS2; -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8572ds/ddr.c b/board/freescale/mpc8572ds/ddr.c index 52c7d734b..ab471afb9 100644 --- a/board/freescale/mpc8572ds/ddr.c +++ b/board/freescale/mpc8572ds/ddr.c @@ -7,33 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS1; -		} -		if (ctrl_num == 1 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS2; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  typedef struct {  	u32 datarate_mhz_low;  	u32 datarate_mhz_high; diff --git a/board/freescale/mpc8610hpcd/ddr.c b/board/freescale/mpc8610hpcd/ddr.c index 5523c0e13..94219b947 100644 --- a/board/freescale/mpc8610hpcd/ddr.c +++ b/board/freescale/mpc8610hpcd/ddr.c @@ -7,31 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS1; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/freescale/mpc8641hpcn/ddr.c b/board/freescale/mpc8641hpcn/ddr.c index 07bb92f76..bd0b299d0 100644 --- a/board/freescale/mpc8641hpcn/ddr.c +++ b/board/freescale/mpc8641hpcn/ddr.c @@ -7,40 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS1; -		} -		if (ctrl_num == 0 && i == 1) { -			i2c_address = SPD_EEPROM_ADDRESS2; -		} -		if (ctrl_num == 1 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS3; -		} -		if (ctrl_num == 1 && i == 1) { -			i2c_address = SPD_EEPROM_ADDRESS4; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  typedef struct {  	u32 datarate_mhz_low;  	u32 datarate_mhz_high; diff --git a/board/freescale/p1022ds/ddr.c b/board/freescale/p1022ds/ddr.c index 80c1d6320..20b996e52 100644 --- a/board/freescale/p1022ds/ddr.c +++ b/board/freescale/p1022ds/ddr.c @@ -10,28 +10,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -void fsl_ddr_get_spd(ddr3_spd_eeprom_t *ctrl_dimms_spd, unsigned int ctrl_num) -{ -	int ret; - -	/* -	 * The P1022 has only one DDR controller, and the board has only one -	 * DIMM slot. -	 */ -	ret = i2c_read(SPD_EEPROM_ADDRESS1, 0, 1, (u8 *)ctrl_dimms_spd, -		       sizeof(ddr3_spd_eeprom_t)); -	if (ret) { -		debug("DDR: failed to read SPD from address %u\n", -		      SPD_EEPROM_ADDRESS1); -		memset(ctrl_dimms_spd, 0, sizeof(ddr3_spd_eeprom_t)); -	} -} -  typedef struct {  	u32 datarate_mhz_low;  	u32 datarate_mhz_high; diff --git a/board/freescale/p2020ds/ddr.c b/board/freescale/p2020ds/ddr.c index b52582f6f..9bf7d2f58 100644 --- a/board/freescale/p2020ds/ddr.c +++ b/board/freescale/p2020ds/ddr.c @@ -7,29 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void get_spd(generic_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr3_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(generic_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) -			i2c_address = SPD_EEPROM_ADDRESS1; -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  typedef struct {  	u32 datarate_mhz_low;  	u32 datarate_mhz_high; diff --git a/board/sbc8548/ddr.c b/board/sbc8548/ddr.c index bc6e71abc..996ffe206 100644 --- a/board/sbc8548/ddr.c +++ b/board/sbc8548/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -			unsigned int ctrl_num) -{ -	unsigned int i; - -	if (ctrl_num) { -		printf("%s unexpected ctrl_num = %u\n", __FUNCTION__, ctrl_num); -		return; -	} - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		get_spd(&(ctrl_dimms_spd[i]), SPD_EEPROM_ADDRESS); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/sbc8560/ddr.c b/board/sbc8560/ddr.c index f7e956afb..e9babc647 100644 --- a/board/sbc8560/ddr.c +++ b/board/sbc8560/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr1_spd_eeprom_t)); -} - -void -fsl_ddr_get_spd(ddr1_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/sbc8641d/ddr.c b/board/sbc8641d/ddr.c index bed94bf31..996ffe206 100644 --- a/board/sbc8641d/ddr.c +++ b/board/sbc8641d/ddr.c @@ -7,40 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS1; -		} -		if (ctrl_num == 0 && i == 1) { -			i2c_address = SPD_EEPROM_ADDRESS2; -		} -		if (ctrl_num == 1 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS3; -		} -		if (ctrl_num == 1 && i == 1) { -			i2c_address = SPD_EEPROM_ADDRESS4; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/socrates/ddr.c b/board/socrates/ddr.c index 455832618..e9db476f4 100644 --- a/board/socrates/ddr.c +++ b/board/socrates/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); -} - -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; - -	if (ctrl_num) { -		printf("%s unexpected ctrl_num = %u\n", __FUNCTION__, ctrl_num); -		return; -	} - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		get_spd(&(ctrl_dimms_spd[i]), SPD_EEPROM_ADDRESS); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/stx/stxgp3/ddr.c b/board/stx/stxgp3/ddr.c index 64a3ee15b..571137443 100644 --- a/board/stx/stxgp3/ddr.c +++ b/board/stx/stxgp3/ddr.c @@ -7,32 +7,10 @@   */  #include <common.h> -#include <i2c.h>  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr1_spd_eeprom_t)); -} - -void -fsl_ddr_get_spd(ddr1_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/stx/stxssa/ddr.c b/board/stx/stxssa/ddr.c index 64a3ee15b..56c87b2fc 100644 --- a/board/stx/stxssa/ddr.c +++ b/board/stx/stxssa/ddr.c @@ -12,27 +12,6 @@  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address) -{ -	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr1_spd_eeprom_t)); -} - -void -fsl_ddr_get_spd(ddr1_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) { -			i2c_address = SPD_EEPROM_ADDRESS; -		} -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/xes/xpedite517x/ddr.c b/board/xes/xpedite517x/ddr.c index 981bf41e0..3a6e297f4 100644 --- a/board/xes/xpedite517x/ddr.c +++ b/board/xes/xpedite517x/ddr.c @@ -26,35 +26,12 @@  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) +void get_spd(ddr2_spd_eeprom_t *spd, u8 i2c_address)  {  	i2c_read(i2c_address, SPD_EEPROM_OFFSET, 2, (uchar *)spd,  		sizeof(ddr2_spd_eeprom_t));  } -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -			unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0) { -			i2c_address = SPD_EEPROM_ADDRESS1; -#ifdef SPD_EEPROM_ADDRESS2 -		} else if (ctrl_num == 1) { -			i2c_address = SPD_EEPROM_ADDRESS2; -#endif -		} else { -			/* An inalid ctrl number was give, use default SPD */ -			printf("ERROR: invalid DDR ctrl: %d\n", ctrl_num); -			i2c_address = SPD_EEPROM_ADDRESS1; -		} - -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  /*   * There are four board-specific SDRAM timing parameters which must be   * calculated based on the particular PCB artwork.  These are: diff --git a/board/xes/xpedite520x/ddr.c b/board/xes/xpedite520x/ddr.c index f8d945ace..3671cb8af 100644 --- a/board/xes/xpedite520x/ddr.c +++ b/board/xes/xpedite520x/ddr.c @@ -12,8 +12,7 @@  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void -get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) +void get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)  {  	i2c_read(i2c_address, 0, 1, (uchar *)spd, sizeof(ddr2_spd_eeprom_t)); @@ -27,20 +26,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)  	}  } -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -			unsigned int ctrl_num) -{ -	unsigned int i; - -	if (ctrl_num) { -		printf("%s: invalid ctrl_num = %d\n", __func__, ctrl_num); -		return; -	} - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) -		get_spd(&(ctrl_dimms_spd[i]), SPD_EEPROM_ADDRESS); -} -  void fsl_ddr_board_options(memctl_options_t *popts,  				dimm_params_t *pdimm,  				unsigned int ctrl_num) diff --git a/board/xes/xpedite537x/ddr.c b/board/xes/xpedite537x/ddr.c index 307f875db..d0662b0c5 100644 --- a/board/xes/xpedite537x/ddr.c +++ b/board/xes/xpedite537x/ddr.c @@ -27,27 +27,12 @@  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) +void get_spd(ddr2_spd_eeprom_t *spd, u8 i2c_address)  {  	i2c_read(i2c_address, SPD_EEPROM_OFFSET, 2, (uchar *)spd,  		 sizeof(ddr2_spd_eeprom_t));  } -void fsl_ddr_get_spd(ddr2_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0) -			i2c_address = SPD_EEPROM_ADDRESS1; -		if (ctrl_num == 1) -			i2c_address = SPD_EEPROM_ADDRESS2; -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  /*   * There are four board-specific SDRAM timing parameters which must be   * calculated based on the particular PCB artwork.  These are: diff --git a/board/xes/xpedite550x/ddr.c b/board/xes/xpedite550x/ddr.c index 9e6964960..3b6e08bfc 100644 --- a/board/xes/xpedite550x/ddr.c +++ b/board/xes/xpedite550x/ddr.c @@ -27,25 +27,12 @@  #include <asm/fsl_ddr_sdram.h>  #include <asm/fsl_ddr_dimm_params.h> -static void get_spd(ddr3_spd_eeprom_t *spd, unsigned char i2c_address) +void get_spd(ddr3_spd_eeprom_t *spd, u8 i2c_address)  {  	i2c_read(i2c_address, SPD_EEPROM_OFFSET, 2, (uchar *)spd,  		 sizeof(ddr3_spd_eeprom_t));  } -void fsl_ddr_get_spd(ddr3_spd_eeprom_t *ctrl_dimms_spd, -		      unsigned int ctrl_num) -{ -	unsigned int i; -	unsigned int i2c_address = 0; - -	for (i = 0; i < CONFIG_DIMM_SLOTS_PER_CTLR; i++) { -		if (ctrl_num == 0 && i == 0) -			i2c_address = SPD_EEPROM_ADDRESS1; -		get_spd(&(ctrl_dimms_spd[i]), i2c_address); -	} -} -  /*   *     There are traditionally three board-specific SDRAM timing parameters   *     which must be calculated based on the particular PCB artwork.  These are: diff --git a/include/configs/MPC8569MDS.h b/include/configs/MPC8569MDS.h index b815ed044..5f804254f 100644 --- a/include/configs/MPC8569MDS.h +++ b/include/configs/MPC8569MDS.h @@ -139,8 +139,7 @@ extern unsigned long get_clock_freq(void);  #define CONFIG_CHIP_SELECTS_PER_CTRL	(2 * CONFIG_DIMM_SLOTS_PER_CTLR)  /* I2C addresses of SPD EEPROMs */ -#define SPD_EEPROM_ADDRESS1    0x51    /* CTLR 0 DIMM 0 */ -#define SPD_EEPROM_ADDRESS2    0x52    /* CTLR 1 DIMM 0 */ +#define SPD_EEPROM_ADDRESS    0x51    /* CTLR 0 DIMM 0 */  /* These are used when DDR doesn't use SPD.  */  #define CONFIG_SYS_SDRAM_SIZE           1024		/* DDR is 1024MB */ diff --git a/include/configs/MPC8610HPCD.h b/include/configs/MPC8610HPCD.h index 03ee394b3..7b25e071b 100644 --- a/include/configs/MPC8610HPCD.h +++ b/include/configs/MPC8610HPCD.h @@ -108,7 +108,7 @@  #define CONFIG_DIMM_SLOTS_PER_CTLR	1  #define CONFIG_CHIP_SELECTS_PER_CTRL	(2 * CONFIG_DIMM_SLOTS_PER_CTLR) -#define SPD_EEPROM_ADDRESS1	0x51	/* CTLR 0 DIMM 0 */ +#define SPD_EEPROM_ADDRESS	0x51	/* CTLR 0 DIMM 0 */  /* These are used when DDR doesn't use SPD.  */  #define CONFIG_SYS_SDRAM_SIZE	256		/* DDR is 256MB */ diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h index 84b7e1d22..5f47d1a7a 100644 --- a/include/configs/P1022DS.h +++ b/include/configs/P1022DS.h @@ -87,7 +87,7 @@  /* I2C addresses of SPD EEPROMs */  #define CONFIG_SYS_SPD_BUS_NUM		1 -#define SPD_EEPROM_ADDRESS1		0x51	/* CTLR 0 DIMM 0 */ +#define SPD_EEPROM_ADDRESS		0x51	/* CTLR 0 DIMM 0 */  /*   * Memory map diff --git a/include/configs/P2020DS.h b/include/configs/P2020DS.h index 6648d6ea4..1815191f5 100644 --- a/include/configs/P2020DS.h +++ b/include/configs/P2020DS.h @@ -130,7 +130,7 @@  /* I2C addresses of SPD EEPROMs */  #define CONFIG_DDR_SPD  #define CONFIG_SYS_SPD_BUS_NUM		0	/* SPD EEPROM located on I2C bus 0 */ -#define SPD_EEPROM_ADDRESS1	0x51	/* CTLR 0 DIMM 0 */ +#define SPD_EEPROM_ADDRESS	0x51	/* CTLR 0 DIMM 0 */  /* These are used when DDR doesn't use SPD.  */  #define CONFIG_SYS_SDRAM_SIZE		1024		/* DDR is 1GB */ diff --git a/include/configs/xpedite550x.h b/include/configs/xpedite550x.h index a051913ff..17aab5a7b 100644 --- a/include/configs/xpedite550x.h +++ b/include/configs/xpedite550x.h @@ -67,7 +67,7 @@  #define CONFIG_SPD_EEPROM		/* Use SPD EEPROM for DDR setup */  #define CONFIG_DDR_SPD  #define CONFIG_MEM_INIT_VALUE		0xdeadbeef -#define SPD_EEPROM_ADDRESS1			0x54 +#define SPD_EEPROM_ADDRESS			0x54  #define SPD_EEPROM_OFFSET		0x200	/* OFFSET of SPD in EEPROM */  #define CONFIG_NUM_DDR_CONTROLLERS	1  #define CONFIG_DIMM_SLOTS_PER_CTLR	1 |