Skip to content

Commit

Permalink
LFU-630-1 imx: ele_ahab: Update FSB LMDA status register for i.MX95
Browse files Browse the repository at this point in the history
The LMDA status register for indicating lifecycle is changed, so
update the ele_ahab to align it

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
  • Loading branch information
Ye Li committed Dec 13, 2023
1 parent ca29d28 commit c5941ab
Showing 1 changed file with 52 additions and 3 deletions.
55 changes: 52 additions & 3 deletions arch/arm/mach-imx/ele_ahab.c
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,54 @@ static int do_authenticate(struct cmd_tbl *cmdtp, int flag, int argc,
return CMD_RET_SUCCESS;
}

#ifdef 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);
Expand Down Expand Up @@ -449,6 +497,7 @@ static void display_life_cycle(u32 lc)
break;
}
}
#endif

static int confirm_close(void)
{
Expand Down Expand Up @@ -476,10 +525,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;
Expand Down Expand Up @@ -542,7 +591,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);
Expand Down

0 comments on commit c5941ab

Please sign in to comment.