imx: ele_ahab: Implement display_life_cycle() for i.MX95
The register reflects lifecycle and some lifecycle-derived state of i.MX95 has new offset address and layout, so display_life_cycle() is added specifically for it. Signed-off-by: Ye Li <ye.li@nxp.com> Signed-off-by: Alice Guo <alice.guo@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
This commit is contained in:
@@ -411,6 +411,54 @@ static int do_authenticate(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
return CMD_RET_SUCCESS;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_IMX95)
|
||||
#define FSB_LC_OFFSET 0x414
|
||||
#define LC_OEM_OPEN 0x10
|
||||
static void display_life_cycle(u32 lc)
|
||||
{
|
||||
printf("Lifecycle: 0x%08X, ", lc);
|
||||
switch (lc) {
|
||||
case 0x1:
|
||||
printf("BLANK\n\n");
|
||||
break;
|
||||
case 0x2:
|
||||
printf("FAB Default\n\n");
|
||||
break;
|
||||
case 0x4:
|
||||
printf("FAB\n\n");
|
||||
break;
|
||||
case 0x8:
|
||||
printf("NXP Provisioned\n\n");
|
||||
break;
|
||||
case 0x10:
|
||||
printf("OEM Open\n\n");
|
||||
break;
|
||||
case 0x20:
|
||||
printf("OEM secure world closed\n\n");
|
||||
break;
|
||||
case 0x40:
|
||||
printf("OEM closed\n\n");
|
||||
break;
|
||||
case 0x80:
|
||||
printf("OEM Locked\n\n");
|
||||
break;
|
||||
case 0x100:
|
||||
printf("Field Return OEM\n\n");
|
||||
break;
|
||||
case 0x200:
|
||||
printf("Field Return NXP\n\n");
|
||||
break;
|
||||
case 0x400:
|
||||
printf("BRICKED\n\n");
|
||||
break;
|
||||
default:
|
||||
printf("Unknown\n\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
#define FSB_LC_OFFSET 0x41c
|
||||
#define LC_OEM_OPEN 0x8
|
||||
static void display_life_cycle(u32 lc)
|
||||
{
|
||||
printf("Lifecycle: 0x%08X, ", lc);
|
||||
@@ -447,6 +495,7 @@ static void display_life_cycle(u32 lc)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static int confirm_close(void)
|
||||
{
|
||||
@@ -474,10 +523,10 @@ static int do_ahab_close(struct cmd_tbl *cmdtp, int flag, int argc,
|
||||
if (!confirm_close())
|
||||
return -EACCES;
|
||||
|
||||
lc = readl(FSB_BASE_ADDR + 0x41c);
|
||||
lc = readl(FSB_BASE_ADDR + FSB_LC_OFFSET);
|
||||
lc &= 0x3ff;
|
||||
|
||||
if (lc != 0x8) {
|
||||
if (lc != LC_OEM_OPEN) {
|
||||
puts("Current lifecycle is NOT OEM open, can't move to OEM closed\n");
|
||||
display_life_cycle(lc);
|
||||
return -EPERM;
|
||||
@@ -540,7 +589,7 @@ static int do_ahab_status(struct cmd_tbl *cmdtp, int flag, int argc, char *const
|
||||
u32 cnt = AHAB_MAX_EVENTS;
|
||||
int ret;
|
||||
|
||||
lc = readl(FSB_BASE_ADDR + 0x41c);
|
||||
lc = readl(FSB_BASE_ADDR + FSB_LC_OFFSET);
|
||||
lc &= 0x3ff;
|
||||
|
||||
display_life_cycle(lc);
|
||||
|
||||
Reference in New Issue
Block a user