nyx: info: sd improvements

- Better DDR200 detection (experimental)
- Add Kowin MID
- Add Vendor bits info
This commit is contained in:
CTCaer
2026-06-16 15:04:09 +03:00
parent d01a7285df
commit 9b5c65ac63

View File

@@ -2319,7 +2319,7 @@ static lv_res_t _create_window_sdcard_info_status(lv_obj_t *btn)
lv_obj_t * lb_val = lv_label_create(val, lb_desc); lv_obj_t * lb_val = lv_label_create(val, lb_desc);
char *txt_buf = (char *)malloc(SZ_16K); char *txt_buf = (char *)malloc(SZ_16K);
s_printf(txt_buf, "#00DDFF SD v%d.00#\n", sd_storage_get_scr_sda_ver(&sd_storage)); s_printf(txt_buf, "#00DDFF v%d.00#\n", sd_storage_get_scr_sda_ver(&sd_storage));
// Identify manufacturer. // Identify manufacturer.
switch (sd_storage.cid.manfid) switch (sd_storage.cid.manfid)
@@ -2360,6 +2360,9 @@ static lv_res_t _create_window_sdcard_info_status(lv_obj_t *btn)
case 0x1D: case 0x1D:
strcat(txt_buf, "AData "); strcat(txt_buf, "AData ");
break; break;
case 0x22:
strcat(txt_buf, "Kowin"); // #E: Digiera.
break;
case 0x27: case 0x27:
strcat(txt_buf, "Phison "); strcat(txt_buf, "Phison ");
break; break;
@@ -2388,7 +2391,7 @@ static lv_res_t _create_window_sdcard_info_status(lv_obj_t *btn)
strcat(txt_buf, "Bongiovi "); strcat(txt_buf, "Bongiovi ");
break; break;
case 0x74: case 0x74:
strcat(txt_buf, "Jiaelec "); strcat(txt_buf, "Jiaelec "); // Transcend.
break; break;
case 0x76: case 0x76:
strcat(txt_buf, "Patriot "); strcat(txt_buf, "Patriot ");
@@ -2412,7 +2415,7 @@ static lv_res_t _create_window_sdcard_info_status(lv_obj_t *btn)
strcat(txt_buf, "Taishin "); strcat(txt_buf, "Taishin ");
break; break;
case 0xAD: case 0xAD:
strcat(txt_buf, "Longsys "); strcat(txt_buf, "Longsys "); // Lexar/FORESEE.
break; break;
default: default:
strcat(txt_buf, "Unknown "); strcat(txt_buf, "Unknown ");
@@ -2466,10 +2469,11 @@ static lv_res_t _create_window_sdcard_info_status(lv_obj_t *btn)
"Capacity (LBA):\n" "Capacity (LBA):\n"
"Bus Width:\n" "Bus Width:\n"
"Current Rate:\n" "Current Rate:\n"
"Max Bus Speed:\n"
"Speed Class:\n" "Speed Class:\n"
"UHS Classes:\n" "UHS Classes:\n"
"Max Bus Speed:\n\n" "Write Protect:\n"
"Write Protect:" "Vendor Info:"
); );
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 / 5 * 3, 0); lv_obj_align(desc2, val, LV_ALIGN_OUT_RIGHT_MID, LV_DPI / 5 * 3, 0);
@@ -2482,15 +2486,15 @@ static lv_res_t _create_window_sdcard_info_status(lv_obj_t *btn)
char *wp_info; char *wp_info;
switch (sd_storage.csd.write_protect) switch (sd_storage.csd.write_protect)
{ {
case 0:
wp_info = "Inactive";
break;
case 1: case 1:
wp_info = "Temporary"; wp_info = "Temporary";
break; break;
case 2: case 2 ... 3:
case 3:
wp_info = "Permanent";
break;
default: default:
wp_info = "None"; wp_info = "Permanent";
break; break;
} }
@@ -2506,7 +2510,7 @@ static lv_res_t _create_window_sdcard_info_status(lv_obj_t *btn)
sd_storage_get_fmodes(&sd_storage, NULL, &fmodes); sd_storage_get_fmodes(&sd_storage, NULL, &fmodes);
char *bus_speed; char *bus_speed;
if (fmodes.cmd_system & SD_MODE_UHS_DDR200) if (sd_storage_get_ddr200_support(&sd_storage))
bus_speed = "DDR200"; bus_speed = "DDR200";
else if (fmodes.access_mode & SD_MODE_UHS_SDR104) else if (fmodes.access_mode & SD_MODE_UHS_SDR104)
bus_speed = "SDR104"; bus_speed = "SDR104";
@@ -2562,10 +2566,11 @@ static lv_res_t _create_window_sdcard_info_status(lv_obj_t *btn)
"%X (CP %X)\n" "%X (CP %X)\n"
"%d\n" "%d\n"
"%d MB/s (%d MHz)\n" "%d MB/s (%d MHz)\n"
"%s%s\n"
"%d (AU: %d %s\n" "%d (AU: %d %s\n"
"U%d V%d %sA%d%s\n" "U%d V%d %sA%d%s\n"
"%s%s\n\n" "%s\n"
"%s", "%X %08X",
sd_storage.csd.structure + 1, sd_storage.csd.structure + 1,
sd_storage.csd.cmdclass, sd_storage.csd.cmdclass,
sd_storage.sec_cnt >> 11, sd_storage.sec_cnt >> 11,
@@ -2573,10 +2578,11 @@ static lv_res_t _create_window_sdcard_info_status(lv_obj_t *btn)
sd_storage.ssr.bus_width, sd_storage.ssr.bus_width,
sd_storage.csd.busspeed, sd_storage.csd.busspeed,
(sd_storage.csd.busspeed > 10) ? (sd_storage.csd.busspeed * 2) : 50, (sd_storage.csd.busspeed > 10) ? (sd_storage.csd.busspeed * 2) : 50,
bus_speed, sd_storage.has_pcie ? " | SDE985" : "", // PCIe G3L1 (985 MB/s).
sd_storage.ssr.speed_class, uhs_au_size, uhs_au_mb ? "MiB)" : "KiB)", sd_storage.ssr.speed_class, uhs_au_size, uhs_au_mb ? "MiB)" : "KiB)",
sd_storage.ssr.uhs_grade, sd_storage.ssr.video_class, cpe ? cpe : "", sd_storage.ssr.app_class, cpe ? "#" : "", sd_storage.ssr.uhs_grade, sd_storage.ssr.video_class, cpe ? cpe : "", sd_storage.ssr.app_class, cpe ? "#" : "",
bus_speed, sd_storage.has_pcie ? " | SDE985" : "", // PCIe G3L1 (985 MB/s). wp_info,
wp_info); sd_storage.cid.rsvd, sd_storage.scr.vendor);
lv_label_set_text(lb_val2, txt_buf); lv_label_set_text(lb_val2, txt_buf);