diff options
author | Huayang Duan <huayang.duan@mediatek.com> | 2019-08-19 14:06:31 +0800 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2019-09-20 07:22:10 +0000 |
commit | 7378015b740713f7ecd3ee53715154de1411541a (patch) | |
tree | 61e183eac302695b1462e0aa4fa6eb5705065236 /src/soc/mediatek/mt8183/emi.c | |
parent | e68da64969fe3cd42b8b83e60d2337777f187620 (diff) | |
download | coreboot-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.c | 9 |
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); } |