diff --git a/drivers/renesas/common/ddr/ddr_b/boot_init_dram_config.c b/drivers/renesas/common/ddr/ddr_b/boot_init_dram_config.c index 45b6b088c..bbb020086 100644 --- a/drivers/renesas/common/ddr/ddr_b/boot_init_dram_config.c +++ b/drivers/renesas/common/ddr/ddr_b/boot_init_dram_config.c @@ -12,6 +12,9 @@ #if (RZG_SOC == 1) #define BOARDNUM 4 #else + +#include + #define BOARDNUM 22 #endif /* RZG_SOC == 1 */ #define BOARD_JUDGE_AUTO @@ -1967,6 +1970,44 @@ static uint32_t rzg2_board_judge(void) } #endif /* RZG_SOC == 1 */ +#if (RZG_SOC == 0) && (RCAR_DRAM_LPDDR4_MEMCONF != 0) +static uint32_t ddr_rank_judge(void) +{ + uint32_t brd; + +#if (RCAR_DRAM_MEMRANK == 0) + int32_t ret; + uint32_t type = 0U; + uint32_t rev = 0U; + + brd = 99U; + ret = rcar_get_board_type(&type, &rev); + if ((ret == 0) && (rev != 0xFFU)) { + if (type == (uint32_t)BOARD_SALVATOR_XS) { + if (rev == 0x11U) { + brd = 14U; + } else { + brd = 8U; + } + } else if (type == (uint32_t)BOARD_STARTER_KIT_PRE) { + if (rev == 0x21U) { + brd = 14U; + } else { + brd = 8U; + } + } + } +#elif (RCAR_DRAM_MEMRANK == 1) + brd = 14U; +#elif (RCAR_DRAM_MEMRANK == 2) + brd = 8U; +#else +#error Invalid value was set to RCAR_DRAM_MEMRANK +#endif /* (RCAR_DRAM_MEMRANK == 0) */ + return brd; +} +#endif /* (RCAR_DRAM_LPDDR4_MEMCONF != 0) */ + static uint32_t _board_judge(void) { uint32_t brd; @@ -1985,7 +2026,7 @@ static uint32_t _board_judge(void) #if (RCAR_DRAM_LPDDR4_MEMCONF == 0) brd = 7; #else - brd = 8; + brd = ddr_rank_judge(); #endif } } else if (prr_product == PRR_PRODUCT_M3) { @@ -2039,7 +2080,7 @@ static uint32_t _board_judge(void) #if (RCAR_DRAM_LPDDR4_MEMCONF == 0) brd = 7; #else - brd = 8; + brd = ddr_rank_judge(); #endif } } else if (prr_product == PRR_PRODUCT_M3N) {