venice: display DRAM MR registers and decoding if debug enabled

While this is interesting and useful for debugging there isn't extremely
useful information so we will only show it if debug is enabled.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
This commit is contained in:
Tim Harvey
2025-07-14 10:23:04 -07:00
committed by Fabio Estevam
parent 2c692bff83
commit 6dc91a8408

View File

@@ -271,7 +271,65 @@ void board_init_f(ulong dummy)
dram_timing->fsp_msg[0].drate,
dram_timing->fsp_msg[0].drate / 2,
dram_desc[0] ? dram_desc : "");
puts("\n");
#ifdef DEBUG
u8 mr[9] = { 0 };
/* Read MR5-MR8 to obtain details about DRAM part (and verify DRAM working) */
for (i = 5; i < 9; i++)
mr[i] = lpddr4_mr_read(0xf, i) & 0xff;
printf(" (0x%02x%02x%02x%02x", mr[5], mr[6], mr[7], mr[8]);
/* MR5 MFG_ID */
switch (mr[5]) {
case 0xff:
printf(" Micron");
break;
default:
break;
}
/* MR8 OP[7:6] Width */
i = 0;
switch ((mr[8] >> 6) & 0x3) {
case 0:
i = 16;
break;
case 1:
i = 8;
break;
}
if (i)
printf(" x%d", i);
/* MR8 OP[5:2] Density */
i = 0;
switch ((mr[8] >> 2) & 0xf) {
case 0:
i = 4;
break;
case 1:
i = 6;
break;
case 2:
i = 8;
break;
case 3:
i = 12;
break;
case 4:
i = 16;
break;
case 5:
i = 24;
break;
case 6:
i = 32;
break;
default:
break;
}
if (i)
printf(" %dGb per die", i);
#endif
puts(")\n");
} else {
hang();
}