powerpc/8xxx: Replace fsl_ddr_get_mem_data_rate with get_ddr_freq()
PATCH 1/2 powerpc/8xxx: Replace fsl_ddr_get_mem_data_rate with get_ddr_freq()
Every 85xx board implements fsl_ddr_get_mem_data_rate via get_ddr_freq() and every 86xx board uses get_bus_freq(). If implement get_ddr_freq() as a static inline to call get_bus_freq() we can remove fsl_ddr_get_mem_data_rate altogether and just call get_ddr_freq() directly.
--- arch/powerpc/cpu/mpc8xxx/ddr/util.c | 6 ++---- board/freescale/corenet_ds/ddr.c | 5 ----- board/freescale/mpc8536ds/ddr.c | 5 ----- board/freescale/mpc8540ads/ddr.c | 8 -------- board/freescale/mpc8541cds/ddr.c | 5 ----- board/freescale/mpc8544ds/ddr.c | 5 ----- board/freescale/mpc8548cds/ddr.c | 5 ----- board/freescale/mpc8555cds/ddr.c | 5 ----- board/freescale/mpc8560ads/ddr.c | 8 -------- board/freescale/mpc8568mds/ddr.c | 6 ------ board/freescale/mpc8569mds/ddr.c | 6 ------ board/freescale/mpc8572ds/ddr.c | 5 ----- board/freescale/mpc8610hpcd/ddr.c | 5 ----- board/freescale/mpc8641hpcn/ddr.c | 7 +------ board/freescale/p1022ds/ddr.c | 5 ----- board/freescale/p2020ds/ddr.c | 5 ----- board/sbc8548/ddr.c | 5 ----- board/sbc8560/ddr.c | 8 -------- board/sbc8641d/ddr.c | 5 ----- board/socrates/ddr.c | 5 ----- board/stx/stxgp3/ddr.c | 8 -------- board/stx/stxssa/ddr.c | 8 -------- board/xes/xpedite517x/ddr.c | 7 +------ board/xes/xpedite520x/ddr.c | 5 ----- board/xes/xpedite537x/ddr.c | 5 ----- board/xes/xpedite550x/ddr.c | 5 ----- include/common.h | 4 ++++ 27 files changed, 8 insertions(+), 148 deletions(-)
arch/powerpc/cpu/mpc8xxx/ddr/util.c +2 -4
@@ -11,8 +11,6 @@#include "ddr.h" -unsigned int fsl_ddr_get_mem_data_rate (void ); -/* * Round mclk_ps to nearest 10 ps in memory controller code. *
@@ -24,7 +22,7 @@ unsigned int get_memory_clk_period_ps(void) {unsigned int mclk_ps; - mclk_ps =2000000000000ULL /fsl_ddr_get_mem_data_rate (); + mclk_ps =2000000000000ULL /get_ddr_freq (0 );/* round to nearest 10 ps */ return 10 * ((mclk_ps +5 ) /10 ); }
@@ -40,7 +38,7 @@ unsigned int picos_to_mclk(unsigned int picos)if (!picos)return 0 ; - clks =fsl_ddr_get_mem_data_rate () * (unsigned long long ) picos; + clks =get_ddr_freq (0 ) * (unsigned long long ) picos; clks_temp = clks; clks = clks / ULL_2e12;if (clks_temp % ULL_2e12) {
board/freescale/corenet_ds/ddr.c +0 -5
@@ -118,11 +118,6 @@ static void get_spd(ddr3_spd_eeprom_t *spd, unsigned char i2c_address) } } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr3_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8536ds/ddr.c +0 -5
@@ -17,11 +17,6 @@ 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)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8540ads/ddr.c +0 -8
@@ -18,14 +18,6 @@ get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr1_spd_eeprom_t)); } - -unsigned int -fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} - -void fsl_ddr_get_spd (ddr1_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num)
board/freescale/mpc8541cds/ddr.c +0 -5
@@ -18,11 +18,6 @@ get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr1_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr1_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8544ds/ddr.c +0 -5
@@ -18,11 +18,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr2_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8548cds/ddr.c +0 -5
@@ -18,11 +18,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr2_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8555cds/ddr.c +0 -5
@@ -18,11 +18,6 @@ get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr1_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr1_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8560ads/ddr.c +0 -8
@@ -18,14 +18,6 @@ get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr1_spd_eeprom_t)); } - -unsigned int -fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} - -void fsl_ddr_get_spd (ddr1_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num)
board/freescale/mpc8568mds/ddr.c +0 -6
@@ -18,12 +18,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr2_spd_eeprom_t)); } - -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8569mds/ddr.c +0 -6
@@ -18,12 +18,6 @@ get_spd(ddr3_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr3_spd_eeprom_t)); } - -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr3_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8572ds/ddr.c +0 -5
@@ -17,11 +17,6 @@ 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)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8610hpcd/ddr.c +0 -5
@@ -18,11 +18,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr2_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_bus_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/freescale/mpc8641hpcn/ddr.c +1 -6
@@ -18,11 +18,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr2_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_bus_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
@@ -144,7 +139,7 @@ void fsl_ddr_board_options(memctl_options_t *popts,/* Get clk_adjust, cpo, write_data_delay, according to the board ddr * freqency and n_banks specified in board_specific_parameters table. */ - ddr_freq =fsl_ddr_get_mem_data_rate () /1000000 ; + ddr_freq =get_ddr_freq (0 ) /1000000 ;for (j =0 ; j <CONFIG_DIMM_SLOTS_PER_CTLR ; j++) {if (pdimm[j].n_ranks >0 ) {for (i =0 ; i < num_params; i++) {
board/freescale/p1022ds/ddr.c +0 -5
@@ -15,11 +15,6 @@#include <asm/fsl_ddr_sdram.h> #include <asm/fsl_ddr_dimm_params.h> -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr3_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {int ret;
board/freescale/p2020ds/ddr.c +0 -5
@@ -17,11 +17,6 @@ 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)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (generic_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/sbc8548/ddr.c +0 -5
@@ -18,11 +18,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr2_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/sbc8560/ddr.c +0 -8
@@ -18,14 +18,6 @@ get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr1_spd_eeprom_t)); } - -unsigned int -fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} - -void fsl_ddr_get_spd (ddr1_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num)
board/sbc8641d/ddr.c +0 -5
@@ -18,11 +18,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr2_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_bus_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/socrates/ddr.c +0 -5
@@ -18,11 +18,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr2_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/stx/stxgp3/ddr.c +0 -8
@@ -18,14 +18,6 @@ get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr1_spd_eeprom_t)); } - -unsigned int -fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} - -void fsl_ddr_get_spd (ddr1_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num)
board/stx/stxssa/ddr.c +0 -8
@@ -18,14 +18,6 @@ get_spd(ddr1_spd_eeprom_t *spd, unsigned char i2c_address)i2c_read (i2c_address,0 ,1 , (uchar *)spd,sizeof (ddr1_spd_eeprom_t)); } - -unsigned int -fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} - -void fsl_ddr_get_spd (ddr1_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num)
board/xes/xpedite517x/ddr.c +1 -6
@@ -32,11 +32,6 @@ static void get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) sizeof(ddr2_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_bus_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
@@ -144,7 +139,7 @@ void fsl_ddr_board_options(memctl_options_t *popts,unsigned int datarate;get_sys_info (&sysinfo); - datarate =fsl_ddr_get_mem_data_rate () /1000000 ; + datarate =get_ddr_freq (0 ) /1000000 ;for (i =0 ; i <ARRAY_SIZE (bopts_ctrl[ctrl_num]); i++) { if ((bopts[i].datarate_mhz_low <= datarate) &&
board/xes/xpedite520x/ddr.c +0 -5
@@ -27,11 +27,6 @@ get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) } } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/xes/xpedite537x/ddr.c +0 -5
@@ -33,11 +33,6 @@ static void get_spd(ddr2_spd_eeprom_t *spd, unsigned char i2c_address) sizeof(ddr2_spd_eeprom_t)); } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -void fsl_ddr_get_spd (ddr2_spd_eeprom_t *ctrl_dimms_spd,unsigned int ctrl_num) {
board/xes/xpedite550x/ddr.c +0 -5
@@ -46,11 +46,6 @@ void fsl_ddr_get_spd(ddr3_spd_eeprom_t *ctrl_dimms_spd, } } -unsigned int fsl_ddr_get_mem_data_rate (void ) -{ -return get_ddr_freq (0 ); -} -/* * There are traditionally three board-specific SDRAM timing parameters * which must be calculated based on the particular PCB artwork. These are:
include/common.h +4 -0
@@ -538,6 +538,10 @@ ulong get_ddr_freq (ulong);#if defined(CONFIG_MPC86xx)typedef MPC86xx_SYS_INFO sys_info_t ;void get_sys_info (sys_info_t * ); +static inline ulong get_ddr_freq (ulong dummy) +{ +return get_bus_freq (dummy); +}#endif #if defined(CONFIG_4xx) || defined(CONFIG_IOP480 )
Signature · 1 line
1.6.0.6
Kumar Gala
AppliedPATCH 1/2 powerpc/8xxx: Replace fsl_ddr_get_mem_data_rate with get_ddr_freq()
Quoted 28 lines · Kumar Gala
Every 85xx board implements
fsl_ddr_get_mem_data_rateviaget_ddr_freq()and every 86xx board usesget_bus_freq(). If implementget_ddr_freq()as a static inline to callget_bus_freq()we can removefsl_ddr_get_mem_data_ratealtogether and just callget_ddr_freq()directly.Signed-off-by Kumar Gala <[email protected]>---
arch/powerpc/cpu/mpc8xxx/ddr/util.c | 6 ++---- board/freescale/corenet_ds/ddr.c | 5 ----- board/freescale/mpc8536ds/ddr.c | 5 ----- board/freescale/mpc8540ads/ddr.c | 8 -------- board/freescale/mpc8541cds/ddr.c | 5 ----- board/freescale/mpc8544ds/ddr.c | 5 ----- board/freescale/mpc8548cds/ddr.c | 5 ----- board/freescale/mpc8555cds/ddr.c | 5 ----- board/freescale/mpc8560ads/ddr.c | 8 -------- board/freescale/mpc8568mds/ddr.c | 6 ------ board/freescale/mpc8569mds/ddr.c | 6 ------ board/freescale/mpc8572ds/ddr.c | 5 ----- board/freescale/mpc8610hpcd/ddr.c | 5 ----- board/freescale/mpc8641hpcn/ddr.c | 7 +------ board/freescale/p1022ds/ddr.c | 5 ----- board/freescale/p2020ds/ddr.c | 5 ----- board/sbc8548/ddr.c | 5 ----- board/sbc8560/ddr.c | 8 -------- board/sbc8641d/ddr.c | 5 ----- board/socrates/ddr.c | 5 -----
Quoted 8 lines
board/stx/stxgp3/ddr.c | 8 -------- board/stx/stxssa/ddr.c | 8 -------- board/xes/xpedite517x/ddr.c | 7 +------ board/xes/xpedite520x/ddr.c | 5 ----- board/xes/xpedite537x/ddr.c | 5 ----- board/xes/xpedite550x/ddr.c | 5 ----- include/common.h | 4 ++++ 27 files changed, 8 insertions(+), 148 deletions(-)
applied to 85xx next
- k
PATCH v2 2/2 powerpc/8xxx: Refactor fsl_ddr_get_spd into common code from board
In reply to Kumar GalaMove fsl_ddr_get_spd into common mpc8xxx/ddr/main.c as most boards pretty much do the same thing. The only variations are in how many controllers or DIMMs per controller exist. To make this work we standardize on the names of the SPD_EEPROM_ADDRESS defines based on the use case of the board.
We allow boards to override get_spd to either do board specific fixups to the SPD data or deal with any unique behavior of how the SPD eeproms are wired up.
---
* Fix error check in fsl_ddr_get_spd related to # of DDR controllers
arch/powerpc/cpu/mpc8xxx/ddr/main.c | 63 +++++++++++++++++++++++++++++++++-- board/freescale/corenet_ds/ddr.c | 27 --------------- board/freescale/mpc8536ds/ddr.c | 21 ----------- board/freescale/mpc8540ads/ddr.c | 22 ------------ board/freescale/mpc8541cds/ddr.c | 21 ----------- board/freescale/mpc8544ds/ddr.c | 22 ------------ board/freescale/mpc8548cds/ddr.c | 22 ------------ board/freescale/mpc8555cds/ddr.c | 21 ----------- board/freescale/mpc8560ads/ddr.c | 22 ------------ board/freescale/mpc8568mds/ddr.c | 22 ------------ board/freescale/mpc8569mds/ddr.c | 22 ------------ board/freescale/mpc8572ds/ddr.c | 23 ------------- board/freescale/mpc8610hpcd/ddr.c | 21 ----------- board/freescale/mpc8641hpcn/ddr.c | 30 ---------------- board/freescale/p1022ds/ddr.c | 18 ---------- board/freescale/p2020ds/ddr.c | 19 ---------- board/sbc8548/ddr.c | 22 ------------ board/sbc8560/ddr.c | 22 ------------ board/sbc8641d/ddr.c | 30 ---------------- board/socrates/ddr.c | 22 ------------ board/stx/stxgp3/ddr.c | 22 ------------ board/stx/stxssa/ddr.c | 21 ----------- board/xes/xpedite517x/ddr.c | 25 +------------- board/xes/xpedite520x/ddr.c | 17 +--------- board/xes/xpedite537x/ddr.c | 17 +--------- board/xes/xpedite550x/ddr.c | 15 +-------- include/configs/MPC8569MDS.h | 3 +- include/configs/MPC8610HPCD.h | 2 +- include/configs/P1022DS.h | 2 +- include/configs/P2020DS.h | 2 +- include/configs/xpedite550x.h | 2 +- 31 files changed, 69 insertions(+), 551 deletions(-)
arch/powerpc/cpu/mpc8xxx/ddr/main.c +60 -3
@@ -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) { +debug ("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:
board/freescale/corenet_ds/ddr.c +0 -27
@@ -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;
board/freescale/mpc8536ds/ddr.c +0 -21
@@ -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)
board/freescale/mpc8540ads/ddr.c +0 -22
@@ -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)
board/freescale/mpc8541cds/ddr.c +0 -21
@@ -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)
board/freescale/mpc8544ds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8548cds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8555cds/ddr.c +0 -21
@@ -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)
board/freescale/mpc8560ads/ddr.c +0 -22
@@ -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)
board/freescale/mpc8568mds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8569mds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8572ds/ddr.c +0 -23
@@ -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;
board/freescale/mpc8610hpcd/ddr.c +0 -21
@@ -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)
board/freescale/mpc8641hpcn/ddr.c +0 -30
@@ -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;
board/freescale/p1022ds/ddr.c +0 -18
@@ -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;
board/freescale/p2020ds/ddr.c +0 -19
@@ -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;
board/sbc8548/ddr.c +0 -22
@@ -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)
board/sbc8560/ddr.c +0 -22
@@ -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)
board/sbc8641d/ddr.c +0 -30
@@ -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)
board/socrates/ddr.c +0 -22
@@ -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)
board/stx/stxgp3/ddr.c +0 -22
@@ -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)
board/stx/stxssa/ddr.c +0 -21
@@ -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)
board/xes/xpedite517x/ddr.c +1 -24
@@ -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:
board/xes/xpedite520x/ddr.c +1 -16
@@ -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)
board/xes/xpedite537x/ddr.c +1 -16
@@ -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:
board/xes/xpedite550x/ddr.c +1 -14
@@ -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:
include/configs/MPC8569MDS.h +1 -2
@@ -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 */
include/configs/MPC8610HPCD.h +1 -1
@@ -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 */
include/configs/P1022DS.h +1 -1
@@ -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
include/configs/P2020DS.h +1 -1
@@ -128,7 +128,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 */
include/configs/xpedite550x.h +1 -1
@@ -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
Signature · 1 line
1.7.2.3
PATCH v2 2/2 powerpc/8xxx: Refactor fsl_ddr_get_spd into common code from board
Quoted 12 lines · Kumar Gala
arch/powerpc/cpu/mpc8xxx/ddr/main.c +12
-0+#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 */
arch/powerpc/cpu/mpc8xxx/ddr/main.c extern void fsl_ddr_set_lawbar( · line 51
Quoted 10 lines
arch/powerpc/cpu/mpc8xxx/ddr/main.c +10
-0+}; +#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
Wouldn't it be easier if we just temporarily defined values for SPD_EEPROM_ADDRESSx? Like this:
#ifndef SPD_EEPROM_ADDRESS2
#define SPD_EEPROM_ADDRESS2 0
#endif
...
u8 spd_i2c_addr[2][2] = {
Review
Quoted 7 lines
(quoted diff) +7
-0+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) { + ? ? ? ? ? ? ? debug("DDR: failed to read SPD from address %u\n", i2c_address);
This should probably be a printf() instead.
Signature · 2 lines
Timur Tabi Linux kernel developer at Freescale
PATCH v2 2/2 powerpc/8xxx: Refactor fsl_ddr_get_spd into common code from board
Quoted 27 lines · Timur Tabi
Quoted 12 lines · Kumar Gala
arch/powerpc/cpu/mpc8xxx/ddr/main.c +12
-0+#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 */arch/powerpc/cpu/mpc8xxx/ddr/main.c extern void fsl_ddr_set_lawbar( · line 51
Quoted 10 lines
arch/powerpc/cpu/mpc8xxx/ddr/main.c +10
-0+}; +#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 Wouldn't it be easier if we just temporarily defined values for
SPD_EEPROM_ADDRESSx? Like this:
Quoted 6 lines
#ifndef
SPD_EEPROM_ADDRESS2
#defineSPD_EEPROM_ADDRESS20
#endif
...u8 spd_i2c_addr[2][2] = {
This is problematic because because if you notice SPD_EEPROM_ADDRESS2 is used for both controller 2 / dimm 1 & controller 1 / dimm 2.
Quoted 9 lines
arch/powerpc/cpu/mpc8xxx/ddr/main.c extern void fsl_ddr_set_lawbar( · line 59
Quoted 7 lines
arch/powerpc/cpu/mpc8xxx/ddr/main.c +7
-0+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) { +debug ("DDR: failed to read SPD from address %u\n" , i2c_address);This should probably be a
printf()instead.
will change
- k
[U-Boot] !!! Trouble with u-boot and leon3 !!!!
Hi All,
We have built u-boot (from git as suggested by U-Boot SPARC / LEON Port v 1.0.0 April 2009.
The building is successfull.
I configured for execution in ram (CONFIG_SYS_TEXT_BASE = 0x40000000) and the system runs.
But nothing I see on the serial console connected to minicom. When I do Crtl+C the system stop at an address inside such function:arch/sparc/cpu/leon3/cpu_init.c - void cpu_init_f(void)
I found that it fails:
/* Find AMBA APB IRQMP Controller */
if (ambapp_apb_first(VENDOR_GAISLER, GAISLER_IRQMP, &apbdev) != 1) {
/* no IRQ controller, something is wrong
* ==> jump to start (or hang)
*/
while (1) ;
}so the while (1) occurs.
I discovered that:ambapp_apb_first(VENDOR_GAISLER, GAISLER_IRQMP, &apbdev)
Any suggetions?
PATCH v3 2/2 powerpc/8xxx: Refactor fsl_ddr_get_spd into common code from board
In reply to Timur TabiMove fsl_ddr_get_spd into common mpc8xxx/ddr/main.c as most boards pretty much do the same thing. The only variations are in how many controllers or DIMMs per controller exist. To make this work we standardize on the names of the SPD_EEPROM_ADDRESS defines based on the use case of the board.
We allow boards to override get_spd to either do board specific fixups to the SPD data or deal with any unique behavior of how the SPD eeproms are wired up.
---
* Changed __get_spd error message from debug -> printf
arch/powerpc/cpu/mpc8xxx/ddr/main.c | 63 +++++++++++++++++++++++++++++++++-- board/freescale/corenet_ds/ddr.c | 27 --------------- board/freescale/mpc8536ds/ddr.c | 21 ----------- board/freescale/mpc8540ads/ddr.c | 22 ------------ board/freescale/mpc8541cds/ddr.c | 21 ----------- board/freescale/mpc8544ds/ddr.c | 22 ------------ board/freescale/mpc8548cds/ddr.c | 22 ------------ board/freescale/mpc8555cds/ddr.c | 21 ----------- board/freescale/mpc8560ads/ddr.c | 22 ------------ board/freescale/mpc8568mds/ddr.c | 22 ------------ board/freescale/mpc8569mds/ddr.c | 22 ------------ board/freescale/mpc8572ds/ddr.c | 23 ------------- board/freescale/mpc8610hpcd/ddr.c | 21 ----------- board/freescale/mpc8641hpcn/ddr.c | 30 ---------------- board/freescale/p1022ds/ddr.c | 18 ---------- board/freescale/p2020ds/ddr.c | 19 ---------- board/sbc8548/ddr.c | 22 ------------ board/sbc8560/ddr.c | 22 ------------ board/sbc8641d/ddr.c | 30 ---------------- board/socrates/ddr.c | 22 ------------ board/stx/stxgp3/ddr.c | 22 ------------ board/stx/stxssa/ddr.c | 21 ----------- board/xes/xpedite517x/ddr.c | 25 +------------- board/xes/xpedite520x/ddr.c | 17 +--------- board/xes/xpedite537x/ddr.c | 17 +--------- board/xes/xpedite550x/ddr.c | 15 +-------- include/configs/MPC8569MDS.h | 3 +- include/configs/MPC8610HPCD.h | 2 +- include/configs/P1022DS.h | 2 +- include/configs/P2020DS.h | 2 +- include/configs/xpedite550x.h | 2 +- 31 files changed, 69 insertions(+), 551 deletions(-)
arch/powerpc/cpu/mpc8xxx/ddr/main.c +60 -3
@@ -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:
board/freescale/corenet_ds/ddr.c +0 -27
@@ -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;
board/freescale/mpc8536ds/ddr.c +0 -21
@@ -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)
board/freescale/mpc8540ads/ddr.c +0 -22
@@ -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)
board/freescale/mpc8541cds/ddr.c +0 -21
@@ -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)
board/freescale/mpc8544ds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8548cds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8555cds/ddr.c +0 -21
@@ -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)
board/freescale/mpc8560ads/ddr.c +0 -22
@@ -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)
board/freescale/mpc8568mds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8569mds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8572ds/ddr.c +0 -23
@@ -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;
board/freescale/mpc8610hpcd/ddr.c +0 -21
@@ -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)
board/freescale/mpc8641hpcn/ddr.c +0 -30
@@ -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;
board/freescale/p1022ds/ddr.c +0 -18
@@ -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;
board/freescale/p2020ds/ddr.c +0 -19
@@ -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;
board/sbc8548/ddr.c +0 -22
@@ -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)
board/sbc8560/ddr.c +0 -22
@@ -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)
board/sbc8641d/ddr.c +0 -30
@@ -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)
board/socrates/ddr.c +0 -22
@@ -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)
board/stx/stxgp3/ddr.c +0 -22
@@ -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)
board/stx/stxssa/ddr.c +0 -21
@@ -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)
board/xes/xpedite517x/ddr.c +1 -24
@@ -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:
board/xes/xpedite520x/ddr.c +1 -16
@@ -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)
board/xes/xpedite537x/ddr.c +1 -16
@@ -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:
board/xes/xpedite550x/ddr.c +1 -14
@@ -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:
include/configs/MPC8569MDS.h +1 -2
@@ -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 */
include/configs/MPC8610HPCD.h +1 -1
@@ -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 */
include/configs/P1022DS.h +1 -1
@@ -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
include/configs/P2020DS.h +1 -1
@@ -128,7 +128,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 */
include/configs/xpedite550x.h +1 -1
@@ -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
Signature · 1 line
1.7.2.3
Kumar Gala
AppliedPATCH v3 2/2 powerpc/8xxx: Refactor fsl_ddr_get_spd into common code from board
Quoted 6 lines · Kumar Gala
Move
fsl_ddr_get_spdinto commonmpc8xxx/ddr/main.cas most boards pretty much do the same thing. The only variations are in how many controllers or DIMMs per controller exist. To make this work we standardize on the names of theSPD_EEPROM_ADDRESSdefines based on the use case of the board.
Quoted 7 lines
We allow boards to override
get_spdto either do board specific fixups to the SPD data or deal with any unique behavior of how the SPD eeproms are wired up.Signed-off-by Kumar Gala <[email protected]>---
* Changed__get_spderror message from debug -> printf
applied to 85xx next
- k
PATCH 2/2 powerpc/8xxx: Refactor fsl_ddr_get_spd into common code from board
In reply to Kumar GalaMove fsl_ddr_get_spd into common mpc8xxx/ddr/main.c as most boards pretty much do the same thing. The only variations are in how many controllers or DIMMs per controller exist. To make this work we standardize on the names of the SPD_EEPROM_ADDRESS defines based on the use case of the board.
We allow boards to override get_spd to either do board specific fixups to the SPD data or deal with any unique behavior of how the SPD eeproms are wired up.
--- arch/powerpc/cpu/mpc8xxx/ddr/main.c | 63 +++++++++++++++++++++++++++++++++-- board/freescale/corenet_ds/ddr.c | 27 --------------- board/freescale/mpc8536ds/ddr.c | 21 ----------- board/freescale/mpc8540ads/ddr.c | 22 ------------ board/freescale/mpc8541cds/ddr.c | 21 ----------- board/freescale/mpc8544ds/ddr.c | 22 ------------ board/freescale/mpc8548cds/ddr.c | 22 ------------ board/freescale/mpc8555cds/ddr.c | 21 ----------- board/freescale/mpc8560ads/ddr.c | 22 ------------ board/freescale/mpc8568mds/ddr.c | 22 ------------ board/freescale/mpc8569mds/ddr.c | 22 ------------ board/freescale/mpc8572ds/ddr.c | 23 ------------- board/freescale/mpc8610hpcd/ddr.c | 21 ----------- board/freescale/mpc8641hpcn/ddr.c | 30 ---------------- board/freescale/p1022ds/ddr.c | 18 ---------- board/freescale/p2020ds/ddr.c | 19 ---------- board/sbc8548/ddr.c | 22 ------------ board/sbc8560/ddr.c | 22 ------------ board/sbc8641d/ddr.c | 30 ---------------- board/socrates/ddr.c | 22 ------------ board/stx/stxgp3/ddr.c | 22 ------------ board/stx/stxssa/ddr.c | 21 ----------- board/xes/xpedite517x/ddr.c | 25 +------------- board/xes/xpedite520x/ddr.c | 17 +--------- board/xes/xpedite537x/ddr.c | 17 +--------- board/xes/xpedite550x/ddr.c | 15 +-------- include/configs/MPC8569MDS.h | 3 +- include/configs/MPC8610HPCD.h | 2 +- include/configs/P1022DS.h | 2 +- include/configs/P2020DS.h | 2 +- include/configs/xpedite550x.h | 2 +- 31 files changed, 69 insertions(+), 551 deletions(-)
arch/powerpc/cpu/mpc8xxx/ddr/main.c +60 -3
@@ -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) { +debug ("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) { +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:
board/freescale/corenet_ds/ddr.c +0 -27
@@ -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;
board/freescale/mpc8536ds/ddr.c +0 -21
@@ -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)
board/freescale/mpc8540ads/ddr.c +0 -22
@@ -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)
board/freescale/mpc8541cds/ddr.c +0 -21
@@ -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)
board/freescale/mpc8544ds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8548cds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8555cds/ddr.c +0 -21
@@ -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)
board/freescale/mpc8560ads/ddr.c +0 -22
@@ -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)
board/freescale/mpc8568mds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8569mds/ddr.c +0 -22
@@ -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)
board/freescale/mpc8572ds/ddr.c +0 -23
@@ -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;
board/freescale/mpc8610hpcd/ddr.c +0 -21
@@ -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)
board/freescale/mpc8641hpcn/ddr.c +0 -30
@@ -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;
board/freescale/p1022ds/ddr.c +0 -18
@@ -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;
board/freescale/p2020ds/ddr.c +0 -19
@@ -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;
board/sbc8548/ddr.c +0 -22
@@ -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)
board/sbc8560/ddr.c +0 -22
@@ -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)
board/sbc8641d/ddr.c +0 -30
@@ -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)
board/socrates/ddr.c +0 -22
@@ -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)
board/stx/stxgp3/ddr.c +0 -22
@@ -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)
board/stx/stxssa/ddr.c +0 -21
@@ -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)
board/xes/xpedite517x/ddr.c +1 -24
@@ -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:
board/xes/xpedite520x/ddr.c +1 -16
@@ -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)
board/xes/xpedite537x/ddr.c +1 -16
@@ -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:
board/xes/xpedite550x/ddr.c +1 -14
@@ -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:
include/configs/MPC8569MDS.h +1 -2
@@ -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 */
include/configs/MPC8610HPCD.h +1 -1
@@ -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 */
include/configs/P1022DS.h +1 -1
@@ -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
include/configs/P2020DS.h +1 -1
@@ -128,7 +128,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 */
include/configs/xpedite550x.h +1 -1
@@ -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
Signature · 1 line
1.6.0.6