nyx: info: update 20nm wafer bounds
This commit is contained in:
@@ -412,51 +412,63 @@ typedef struct _hw_info_t
|
|||||||
|
|
||||||
hw_info_t *hw_info = NULL;
|
hw_info_t *hw_info = NULL;
|
||||||
|
|
||||||
|
//! TODO: Limits assumed based on known samples.
|
||||||
|
#define WAFER_20NM_X_MIN -9
|
||||||
|
#define WAFER_20NM_X_MAX 15
|
||||||
|
#define WAFER_20NM_Y_MIN 1
|
||||||
|
#define WAFER_20NM_Y_MAX 24
|
||||||
|
|
||||||
|
// Limits validated based on known samples.
|
||||||
|
#define WAFER_16NM_X_MIN -11
|
||||||
|
#define WAFER_16NM_X_MAX 17
|
||||||
|
#define WAFER_16NM_Y_MIN 0
|
||||||
|
#define WAFER_16NM_Y_MAX 27
|
||||||
|
|
||||||
void _hw_info_wafer(int die_x, int die_y)
|
void _hw_info_wafer(int die_x, int die_y)
|
||||||
{
|
{
|
||||||
static lv_img_dsc_t wafer_desc = { 0 };
|
static lv_img_dsc_t wafer_desc = { 0 };
|
||||||
int radius;
|
int diameter;
|
||||||
|
|
||||||
if (h_cfg.t210b01)
|
if (h_cfg.t210b01)
|
||||||
{
|
{
|
||||||
//! TODO: Limits based on known samples.
|
if (die_x < WAFER_16NM_X_MIN || die_x > WAFER_16NM_X_MAX ||
|
||||||
if (die_x < -11 || die_x > 17 || die_y > 27)
|
die_y < WAFER_16NM_Y_MIN || die_y > WAFER_16NM_Y_MAX)
|
||||||
die_x = -12;
|
die_x = WAFER_16NM_X_MIN - 1;
|
||||||
|
|
||||||
radius = 29;
|
die_x += -WAFER_16NM_X_MIN;
|
||||||
die_x += 11;
|
diameter = 29;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//! TODO: Limits based on known samples.
|
if (die_x < WAFER_20NM_X_MIN || die_x > WAFER_20NM_X_MAX ||
|
||||||
if (die_x < -10 || die_x > 15 || die_y > 24)
|
die_y < 0 || die_y > WAFER_20NM_Y_MAX)
|
||||||
die_x = -11;
|
die_x = WAFER_20NM_X_MIN - 1;
|
||||||
|
|
||||||
radius = 26;
|
die_x += -WAFER_20NM_X_MIN;
|
||||||
die_x += 10;
|
diameter = 26;
|
||||||
}
|
}
|
||||||
|
|
||||||
const u32 die_size = 2;
|
const u32 die_size = 2;
|
||||||
const u32 die_side = die_size + 1;
|
const u32 die_side = die_size + 1;
|
||||||
const u32 die_line = die_side * radius + 1;
|
const u32 die_line = die_side * diameter + 1;
|
||||||
const int align_off = (die_size - 2) * radius;
|
const int align_off = (die_size - 2) * diameter;
|
||||||
const u32 die_color = (die_x == -1) ? 0xFFFF0000 : 0x30FFFFFF; // Red for OOB.
|
const u32 die_color = (die_x == -1) ? 0xFFFF0000 : 0x30FFFFFF; // Red for OOB.
|
||||||
const u32 str_color = 0x10FFFFFF;
|
const u32 str_color = 0x10FFFFFF;
|
||||||
const u32 hit_color = 0xFFFF8000;
|
const u32 hit_color = 0xFFFF8000;
|
||||||
|
|
||||||
u32 *wafer_map = calloc(1, die_line * die_line * sizeof(u32));
|
u32 *wafer_map = calloc(1, die_line * die_line * sizeof(u32));
|
||||||
|
|
||||||
for (int y = 0; y < radius; y++)
|
for (int y = 0; y < diameter; y++)
|
||||||
{
|
{
|
||||||
u32 wafer_row_next = -1;
|
u32 wafer_row_next = -1;
|
||||||
u32 wafer_row = h_cfg.t210b01 ? wafer16nm[y] : wafer20nm[y];
|
u32 wafer_row = h_cfg.t210b01 ? wafer16nm[y] : wafer20nm[y];
|
||||||
|
|
||||||
if ((y + 1) < radius)
|
if ((y + 1) < diameter)
|
||||||
wafer_row_next = h_cfg.t210b01 ? wafer16nm[y + 1] : wafer20nm[y + 1];
|
wafer_row_next = h_cfg.t210b01 ? wafer16nm[y + 1] : wafer20nm[y + 1];
|
||||||
|
|
||||||
// Paint the first row of dies.
|
// Paint the first row of dies.
|
||||||
int pos_y = y * die_line * die_side + die_line;
|
int pos_y = y * die_line * die_side + die_line;
|
||||||
for (int x = 0; x < radius; x++)
|
for (int x = 0; x < diameter; x++)
|
||||||
{
|
{
|
||||||
bool die_found = x == die_x && die_y == y;
|
bool die_found = x == die_x && die_y == y;
|
||||||
bool in_wafer = wafer_row & (1u << x);
|
bool in_wafer = wafer_row & (1u << x);
|
||||||
@@ -512,7 +524,7 @@ void _hw_info_wafer(int die_x, int die_y)
|
|||||||
|
|
||||||
lv_obj_t *wafer_txt = lv_label_create(lv_scr_act(), NULL);
|
lv_obj_t *wafer_txt = lv_label_create(lv_scr_act(), NULL);
|
||||||
lv_label_set_style(wafer_txt, &monospace_text);
|
lv_label_set_style(wafer_txt, &monospace_text);
|
||||||
lv_label_set_static_text(wafer_txt, "Wafer");
|
lv_label_set_static_text(wafer_txt, (die_x == -1) ? "Error" : "Wafer");
|
||||||
lv_obj_align(wafer_txt, wafer_img, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
|
lv_obj_align(wafer_txt, wafer_img, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
|
||||||
hw_info->wafer_txt = wafer_txt;
|
hw_info->wafer_txt = wafer_txt;
|
||||||
}
|
}
|
||||||
@@ -1987,6 +1999,9 @@ static lv_res_t _create_window_emmc_info_status(lv_obj_t *btn)
|
|||||||
strcat(txt_buf, "SanDisk ");
|
strcat(txt_buf, "SanDisk ");
|
||||||
lv_win_add_btn(win, NULL, SYMBOL_FILE_ALT" Device Report", _create_mbox_emmc_sandisk_report);
|
lv_win_add_btn(win, NULL, SYMBOL_FILE_ALT" Device Report", _create_mbox_emmc_sandisk_report);
|
||||||
break;
|
break;
|
||||||
|
case 0x89: // Unofficial.
|
||||||
|
strcat(txt_buf, "Silicon Motion ");
|
||||||
|
break;
|
||||||
case 0x90:
|
case 0x90:
|
||||||
strcat(txt_buf, "SK Hynix ");
|
strcat(txt_buf, "SK Hynix ");
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user