diff options
-rw-r--r-- | arch/arm/include/asm/arch-imx8m/imx8m_ddr.h | 2 | ||||
-rw-r--r-- | drivers/ddr/imx8m/ddrphy_utils.c | 8 | ||||
-rw-r--r-- | drivers/ddr/imx8m/helper.c | 4 |
3 files changed, 14 insertions, 0 deletions
diff --git a/arch/arm/include/asm/arch-imx8m/imx8m_ddr.h b/arch/arm/include/asm/arch-imx8m/imx8m_ddr.h index ec698cfd88..b319592c93 100644 --- a/arch/arm/include/asm/arch-imx8m/imx8m_ddr.h +++ b/arch/arm/include/asm/arch-imx8m/imx8m_ddr.h @@ -46,6 +46,8 @@ struct dram_timing_info { /* ddr phy PIE */ struct dram_cfg_param *ddrphy_pie; unsigned int ddrphy_pie_num; + /* initialized drate table */ + unsigned int fsp_table[4]; }; extern struct dram_timing_info dram_timing; diff --git a/drivers/ddr/imx8m/ddrphy_utils.c b/drivers/ddr/imx8m/ddrphy_utils.c index c1eace23f1..b7c314ec98 100644 --- a/drivers/ddr/imx8m/ddrphy_utils.c +++ b/drivers/ddr/imx8m/ddrphy_utils.c @@ -108,6 +108,10 @@ void wait_ddrphy_training_complete(void) void ddrphy_init_set_dfi_clk(unsigned int drate) { switch (drate) { + case 3200: + dram_pll_init(DRAM_PLL_OUT_800M); + dram_disable_bypass(); + break; case 3000: dram_pll_init(DRAM_PLL_OUT_750M); dram_disable_bypass(); @@ -120,6 +124,10 @@ void ddrphy_init_set_dfi_clk(unsigned int drate) dram_pll_init(DRAM_PLL_OUT_400M); dram_disable_bypass(); break; + case 667: + dram_pll_init(DRAM_PLL_OUT_167M); + dram_disable_bypass(); + break; case 400: dram_enable_bypass(DRAM_BYPASSCLK_400M); break; diff --git a/drivers/ddr/imx8m/helper.c b/drivers/ddr/imx8m/helper.c index f5d1c37f82..dff1e2a962 100644 --- a/drivers/ddr/imx8m/helper.c +++ b/drivers/ddr/imx8m/helper.c @@ -131,6 +131,10 @@ void dram_config_save(struct dram_timing_info *timing_info, saved_timing->ddrphy_trained_csr_num = timing_info->ddrphy_trained_csr_num; saved_timing->ddrphy_pie_num = timing_info->ddrphy_pie_num; + /* save the fsp table */ + for (i = 0; i < 4; i++) + saved_timing->fsp_table[i] = timing_info->fsp_table[i]; + cfg = (struct dram_cfg_param *)(saved_timing_base + sizeof(*timing_info)); /* save ddrc config */ |