diff options
Diffstat (limited to 'plat/imx/imx8m/ddr')
-rw-r--r-- | plat/imx/imx8m/ddr/dram.c | 6 | ||||
-rw-r--r-- | plat/imx/imx8m/ddr/dram_retention.c | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/plat/imx/imx8m/ddr/dram.c b/plat/imx/imx8m/ddr/dram.c index 3424e92c..333fbaba 100644 --- a/plat/imx/imx8m/ddr/dram.c +++ b/plat/imx/imx8m/ddr/dram.c @@ -76,6 +76,9 @@ static void save_rank_setting(void) uint32_t i, offset; uint32_t pstate_num = dram_info.num_fsp; + /* only support maximum 3 setpoints */ + pstate_num = (pstate_num > MAX_FSP_NUM) ? MAX_FSP_NUM : pstate_num; + for(i = 0; i < pstate_num; i++) { offset = i ? (i + 1) * 0x1000 : 0; if (dram_info.dram_type == DDRC_LPDDR4) { @@ -200,6 +203,9 @@ void dram_info_init(unsigned long dram_timing_base) break; dram_info.num_fsp = i; + /* only support maximum 3 setpoints */ + dram_info.num_fsp = (i > MAX_FSP_NUM) ? MAX_FSP_NUM : i; + /* save the DRAMTMG2/9 for rank to rank workaround */ save_rank_setting(); diff --git a/plat/imx/imx8m/ddr/dram_retention.c b/plat/imx/imx8m/ddr/dram_retention.c index 6a19f0e7..2dd79b61 100644 --- a/plat/imx/imx8m/ddr/dram_retention.c +++ b/plat/imx/imx8m/ddr/dram_retention.c @@ -24,6 +24,9 @@ static void rank_setting_update(void) uint32_t i, offset; uint32_t pstate_num = dram_info.num_fsp; + /* only support maximum 3 setpoints */ + pstate_num = (pstate_num > MAX_FSP_NUM) ? MAX_FSP_NUM : pstate_num; + for (i = 0; i < pstate_num; i++) { offset = i ? (i + 1) * 0x1000 : 0; if (dram_info.dram_type == DDRC_LPDDR4) { |