summaryrefslogtreecommitdiff
path: root/src/soc/mediatek/mt8183/emi.c
diff options
context:
space:
mode:
authorHuayang Duan <huayang.duan@mediatek.com>2019-08-19 14:06:31 +0800
committerPatrick Georgi <pgeorgi@google.com>2019-09-20 07:22:10 +0000
commit7378015b740713f7ecd3ee53715154de1411541a (patch)
tree61e183eac302695b1462e0aa4fa6eb5705065236 /src/soc/mediatek/mt8183/emi.c
parente68da64969fe3cd42b8b83e60d2337777f187620 (diff)
downloadcoreboot-7378015b740713f7ecd3ee53715154de1411541a.tar.xz
mediatek/mt8183: Implement the dramc init setting
This patch implements the dram init setting by replacing the hard-coded init sequence with a series of functions to support calibration for more frequencies. These functions are modified from MediaTek's internal DRAM full calibration source code. BUG=b:80501386 BRANCH=none TEST=1. Kukui boots correctly 2. Stress test (/usr/sbin/memtester 500M) passes on Kukui Change-Id: I756ad37e78cd1384ee0eb97e5e18c5461d73bc7b Signed-off-by: Huayang Duan <huayang.duan@mediatek.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34988 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Diffstat (limited to 'src/soc/mediatek/mt8183/emi.c')
-rw-r--r--src/soc/mediatek/mt8183/emi.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/soc/mediatek/mt8183/emi.c b/src/soc/mediatek/mt8183/emi.c
index 937d06de37..26e8260deb 100644
--- a/src/soc/mediatek/mt8183/emi.c
+++ b/src/soc/mediatek/mt8183/emi.c
@@ -279,16 +279,17 @@ static void dramc_ac_timing_optimize(void)
}
}
-static void init_dram(const struct sdram_params *params)
+static void init_dram(const struct sdram_params *params, u8 freq_group)
{
global_option_init(params);
emi_init(params);
dramc_set_broadcast(DRAMC_BROADCAST_ON);
dramc_init_pre_settings();
- dramc_sw_impedance(params);
+ dramc_sw_impedance_cal(params, ODT_OFF);
+ dramc_sw_impedance_cal(params, ODT_ON);
- dramc_init();
+ dramc_init(params, freq_group);
emi_init2(params);
}
@@ -312,6 +313,6 @@ static void do_calib(const struct sdram_params *params)
void mt_set_emi(const struct sdram_params *params)
{
- init_dram(params);
+ init_dram(params, LP4X_DDR3200);
do_calib(params);
}