summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYork Sun <yorksun at freescale.com>2015-05-28 14:54:08 +0530
committerYork Sun <yorksun@freescale.com>2015-07-20 11:44:35 -0700
commitb92557cd3f37538fbd813e72f447109cbde4ff87 (patch)
treef3c97211f77fd35938ff7f0fd951e21657d97f1e
parentff1b8e3f556ca8e339e9b85c31575592e3100e02 (diff)
downloadu-boot-imx-b92557cd3f37538fbd813e72f447109cbde4ff87.zip
u-boot-imx-b92557cd3f37538fbd813e72f447109cbde4ff87.tar.gz
u-boot-imx-b92557cd3f37538fbd813e72f447109cbde4ff87.tar.bz2
driver/ddr/fsl: Add a hook to update SPD address
In case SPD address changes between board revisions, updating SPD address can be called from board file. Signed-off-by: York Sun <yorksun at freescale.com> Signed-off-by: Prabhakar Kushwaha <prabhakar at freescale.com>
-rw-r--r--drivers/ddr/fsl/main.c8
-rw-r--r--include/fsl_ddr.h3
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/ddr/fsl/main.c b/drivers/ddr/fsl/main.c
index fa22383..14ecf12 100644
--- a/drivers/ddr/fsl/main.c
+++ b/drivers/ddr/fsl/main.c
@@ -135,6 +135,13 @@ static void __get_spd(generic_spd_eeprom_t *spd, u8 i2c_address)
__attribute__((weak, alias("__get_spd")))
void get_spd(generic_spd_eeprom_t *spd, u8 i2c_address);
+/* This function allows boards to update SPD address */
+__weak void update_spd_address(unsigned int ctrl_num,
+ unsigned int slot,
+ unsigned int *addr)
+{
+}
+
void fsl_ddr_get_spd(generic_spd_eeprom_t *ctrl_dimms_spd,
unsigned int ctrl_num, unsigned int dimm_slots_per_ctrl)
{
@@ -148,6 +155,7 @@ void fsl_ddr_get_spd(generic_spd_eeprom_t *ctrl_dimms_spd,
for (i = 0; i < dimm_slots_per_ctrl; i++) {
i2c_address = spd_i2c_addr[ctrl_num][i];
+ update_spd_address(ctrl_num, i, &i2c_address);
get_spd(&(ctrl_dimms_spd[i]), i2c_address);
}
}
diff --git a/include/fsl_ddr.h b/include/fsl_ddr.h
index 4099a74..728503b 100644
--- a/include/fsl_ddr.h
+++ b/include/fsl_ddr.h
@@ -136,4 +136,7 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
int fsl_ddr_get_dimm_params(dimm_params_t *pdimm,
unsigned int controller_number,
unsigned int dimm_number);
+void update_spd_address(unsigned int ctrl_num,
+ unsigned int slot,
+ unsigned int *addr);
#endif