nyx: info: use a more advanced ram detection

This commit is contained in:
CTCaer
2025-01-24 16:26:27 +02:00
parent d27ba04077
commit 855bf0ba01

View File

@@ -683,7 +683,7 @@ static lv_res_t _create_window_hw_info_status(lv_obj_t *btn)
u32 ranks = EMC(EMC_ADR_CFG) + 1; u32 ranks = EMC(EMC_ADR_CFG) + 1;
u32 channels = (EMC(EMC_FBIO_CFG7) >> 1) & 3; u32 channels = (EMC(EMC_FBIO_CFG7) >> 1) & 3;
channels = (channels & 1) + ((channels & 2) >> 1); channels = (channels & 1) + ((channels & 2) >> 1);
s_printf(txt_buf, "#00DDFF %s SDRAM ##FF8000 (Ch 0 | Ch 1):#\n#FF8000 Vendor:# ", h_cfg.t210b01 ? "LPDDR4X" : "LPDDR4"); s_printf(txt_buf, "#00DDFF %s SDRAM ##FF8000 (Module 0 | 1):#\n#FF8000 Vendor:# ", h_cfg.t210b01 ? "LPDDR4X" : "LPDDR4");
switch (ram_vendor.chip0.rank0_ch0) switch (ram_vendor.chip0.rank0_ch0)
{ {
case 1: case 1:
@@ -755,49 +755,76 @@ static lv_res_t _create_window_hw_info_status(lv_obj_t *btn)
s_printf(txt_buf + strlen(txt_buf), "#FF8000 Unknown# (%d)", ram_vendor.chip1.rank0_ch0); s_printf(txt_buf + strlen(txt_buf), "#FF8000 Unknown# (%d)", ram_vendor.chip1.rank0_ch0);
break; break;
} }
s_printf(txt_buf + strlen(txt_buf), "\n#FF8000 Rev ID:# %X.%02X #FF8000 |# %X.%02X\n#FF8000 Density:# %d",
ram_rev0.chip0.rank0_ch0, ram_rev1.chip0.rank0_ch0, ram_rev0.chip1.rank0_ch0, ram_rev1.chip1.rank0_ch0, ranks * channels); s_printf(txt_buf + strlen(txt_buf), "\n#FF8000 Rev ID:# %X.%02X #FF8000 |# %X.%02X\n#FF8000 Density:# ",
ram_rev0.chip0.rank0_ch0, ram_rev1.chip0.rank0_ch0, ram_rev0.chip1.rank0_ch0, ram_rev1.chip1.rank0_ch0);
u32 actual_ranks = (ram_vendor.chip0.rank0_ch0 == ram_vendor.chip0.rank1_ch0 &&
ram_vendor.chip0.rank0_ch1 == ram_vendor.chip0.rank1_ch1 &&
ram_rev0.chip0.rank0_ch0 == ram_rev0.chip0.rank1_ch0 &&
ram_rev0.chip0.rank0_ch1 == ram_rev0.chip0.rank1_ch1 &&
ram_rev1.chip0.rank0_ch0 == ram_rev1.chip0.rank1_ch0 &&
ram_rev1.chip0.rank0_ch1 == ram_rev1.chip0.rank1_ch1 &&
ram_density.chip0.rank0_ch0 == ram_density.chip0.rank1_ch0 &&
ram_density.chip0.rank0_ch1 == ram_density.chip0.rank1_ch1)
? 2 : 1;
bool rank_bad = ranks != actual_ranks;
s_printf(txt_buf + strlen(txt_buf), "%s %d x %s", rank_bad ? "#FFDD00" : "", actual_ranks * channels, rank_bad ? "#" : "");
switch ((ram_density.chip0.rank0_ch0 & 0x3C) >> 2) switch ((ram_density.chip0.rank0_ch0 & 0x3C) >> 2)
{ {
case 2: case 2:
strcat(txt_buf, " x 512MB"); strcat(txt_buf, "512MB");
break; break;
case 3: case 3:
strcat(txt_buf, " x 768MB"); strcat(txt_buf, "768MB");
break; break;
case 4: case 4:
strcat(txt_buf, " x 1GB"); strcat(txt_buf, "1GB");
break; break;
case 5: case 5:
strcat(txt_buf, " x 1.5GB"); strcat(txt_buf, "1.5GB");
break; break;
case 6: case 6:
strcat(txt_buf, " x 2GB"); strcat(txt_buf, "2GB");
break; break;
default: default:
s_printf(txt_buf + strlen(txt_buf), " x Unk (%d)", (ram_density.chip0.rank0_ch0 & 0x3C) >> 2); s_printf(txt_buf + strlen(txt_buf), "Unk (%d)", (ram_density.chip0.rank0_ch0 & 0x3C) >> 2);
break; break;
} }
s_printf(txt_buf + strlen(txt_buf), " #FF8000 |# %d", ranks * channels);
actual_ranks = (ram_vendor.chip1.rank0_ch0 == ram_vendor.chip1.rank1_ch0 &&
ram_vendor.chip1.rank0_ch1 == ram_vendor.chip1.rank1_ch1 &&
ram_rev0.chip1.rank0_ch0 == ram_rev0.chip1.rank1_ch0 &&
ram_rev0.chip1.rank0_ch1 == ram_rev0.chip1.rank1_ch1 &&
ram_rev1.chip1.rank0_ch0 == ram_rev1.chip1.rank1_ch0 &&
ram_rev1.chip1.rank0_ch1 == ram_rev1.chip1.rank1_ch1 &&
ram_density.chip1.rank0_ch0 == ram_density.chip1.rank1_ch0 &&
ram_density.chip1.rank0_ch1 == ram_density.chip1.rank1_ch1)
? 2 : 1;
rank_bad = ranks != actual_ranks;
s_printf(txt_buf + strlen(txt_buf), " #FF8000 |# %s %d x %s", rank_bad ? "#FFDD00" : "", actual_ranks * channels, rank_bad ? "#" : "");
switch ((ram_density.chip1.rank0_ch0 & 0x3C) >> 2) switch ((ram_density.chip1.rank0_ch0 & 0x3C) >> 2)
{ {
case 2: case 2:
strcat(txt_buf, " x 512MB"); strcat(txt_buf, "512MB");
break; break;
case 3: case 3:
strcat(txt_buf, " x 768MB"); strcat(txt_buf, "768MB");
break; break;
case 4: case 4:
strcat(txt_buf, " x 1GB"); strcat(txt_buf, "1GB");
break; break;
case 5: case 5:
strcat(txt_buf, " x 1.5GB"); strcat(txt_buf, "1.5GB");
break; break;
case 6: case 6:
strcat(txt_buf, " x 2GB"); strcat(txt_buf, "2GB");
break; break;
default: default:
s_printf(txt_buf + strlen(txt_buf), " x Unk (%d)", (ram_density.chip1.rank0_ch0 & 0x3C) >> 2); s_printf(txt_buf + strlen(txt_buf), "Unk (%d)", (ram_density.chip1.rank0_ch0 & 0x3C) >> 2);
break; break;
} }
strcat(txt_buf, "\n\n"); strcat(txt_buf, "\n\n");
@@ -994,7 +1021,7 @@ static lv_res_t _create_window_hw_info_status(lv_obj_t *btn)
panel_ic_paired = touch_panel->idx == 4; // Samsung BH2109. panel_ic_paired = touch_panel->idx == 4; // Samsung BH2109.
break; break;
default: default:
strcat(txt_buf, "#FF8000 Unknown#"); strcat(txt_buf, "#FF8000 Contact me#");
break; break;
} }
@@ -1019,9 +1046,6 @@ static lv_res_t _create_window_hw_info_status(lv_obj_t *btn)
lv_obj_set_width(lb_desc2, lv_obj_get_width(desc2)); lv_obj_set_width(lb_desc2, lv_obj_get_width(desc2));
lv_obj_align(desc2, val, LV_ALIGN_OUT_RIGHT_MID, LV_DPI / 4, 0); lv_obj_align(desc2, val, LV_ALIGN_OUT_RIGHT_MID, LV_DPI / 4, 0);
if (!btn)
_create_mbox_cal0(NULL);
return LV_RES_OK; return LV_RES_OK;
} }