From 5277c09606450daaffa43f3cf15fcc427d7ba612 Mon Sep 17 00:00:00 2001 From: Jacky Bai Date: Mon, 13 Apr 2020 17:44:50 +0800 Subject: [PATCH] fix(imx8m): correct the rank info get fro mstr the bitfield of active_ranks in MSTR is defined as below. Correct the rank num get in dram_info. 0x01: one rank; 0x11: two rank; Signed-off-by: Jacky Bai Reviewed-by: Anson Huang Change-Id: Idcadb39f492a8fe81c973ac4136d9a1eaa32f54b --- plat/imx/imx8m/ddr/dram.c | 5 +++-- plat/imx/imx8m/include/dram.h | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/plat/imx/imx8m/ddr/dram.c b/plat/imx/imx8m/ddr/dram.c index 8ea9ba192..0b0a52710 100644 --- a/plat/imx/imx8m/ddr/dram.c +++ b/plat/imx/imx8m/ddr/dram.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 NXP + * Copyright 2019-2023 NXP * * SPDX-License-Identifier: BSD-3-Clause */ @@ -129,7 +129,8 @@ void dram_info_init(unsigned long dram_timing_base) ddrc_mstr = mmio_read_32(DDRC_MSTR(0)); dram_info.dram_type = ddrc_mstr & DDR_TYPE_MASK; - dram_info.num_rank = (ddrc_mstr >> 24) & ACTIVE_RANK_MASK; + dram_info.num_rank = ((ddrc_mstr >> 24) & ACTIVE_RANK_MASK) == 0x3 ? + DDRC_ACTIVE_TWO_RANK : DDRC_ACTIVE_ONE_RANK; /* Get current fsp info */ current_fsp = mmio_read_32(DDRC_DFIMISC(0)) & 0xf; diff --git a/plat/imx/imx8m/include/dram.h b/plat/imx/imx8m/include/dram.h index ad11a2724..c9f18e80b 100644 --- a/plat/imx/imx8m/include/dram.h +++ b/plat/imx/imx8m/include/dram.h @@ -1,5 +1,5 @@ /* - * Copyright 2019-2022 NXP + * Copyright 2019-2023 NXP * * SPDX-License-Identifier: BSD-3-Clause */ @@ -20,6 +20,8 @@ #define DDRC_DDR3L BIT(0) #define DDR_TYPE_MASK U(0x3f) #define ACTIVE_RANK_MASK U(0x3) +#define DDRC_ACTIVE_ONE_RANK U(0x1) +#define DDRC_ACTIVE_TWO_RANK U(0x2) /* reg & config param */ struct dram_cfg_param { -- 2.39.5