diff --git a/host/arch/arm/lib/crossystem_arch.c b/host/arch/arm/lib/crossystem_arch.c index d74c2d109b..c507ca8508 100644 --- a/host/arch/arm/lib/crossystem_arch.c +++ b/host/arch/arm/lib/crossystem_arch.c @@ -321,8 +321,6 @@ const char* VbGetArchPropertyString(const char* name, char* dest, int size) { prop = "hardware-id"; else if (!strcasecmp(name, "fwid")) prop = "firmware-version"; - else if (!strcasecmp(name, "mainfw_act")) - prop = "active-firmware"; else if (!strcasecmp(name, "mainfw_type")) prop = "firmware-type"; else if (!strcasecmp(name, "ecfw_act")) diff --git a/host/lib/crossystem.c b/host/lib/crossystem.c index eea48998e0..34c1de1757 100644 --- a/host/lib/crossystem.c +++ b/host/lib/crossystem.c @@ -26,7 +26,8 @@ typedef enum VdatStringField { VDAT_STRING_TIMERS = 0, /* Timer values */ VDAT_STRING_LOAD_FIRMWARE_DEBUG, /* LoadFirmware() debug information */ - VDAT_STRING_LOAD_KERNEL_DEBUG /* LoadKernel() debug information */ + VDAT_STRING_LOAD_KERNEL_DEBUG, /* LoadKernel() debug information */ + VDAT_STRING_MAINFW_ACT /* Active main firmware */ } VdatStringField; @@ -293,6 +294,22 @@ char* GetVdatString(char* dest, int size, VdatStringField field) value = GetVdatLoadKernelDebug(dest, size, sh); break; + case VDAT_STRING_MAINFW_ACT: + switch(sh->firmware_index) { + case 0: + StrCopy(dest, "A", size); + break; + case 1: + StrCopy(dest, "B", size); + break; + case 0xFF: + StrCopy(dest, "recovery", size); + break; + default: + value = NULL; + } + break; + default: value = NULL; break; @@ -403,6 +420,8 @@ const char* VbGetSystemPropertyString(const char* name, char* dest, int size) { default: return NULL; } + } else if (!strcasecmp(name, "mainfw_act")) { + return GetVdatString(dest, size, VDAT_STRING_MAINFW_ACT); } else if (!strcasecmp(name, "vdat_timers")) { return GetVdatString(dest, size, VDAT_STRING_TIMERS); } else if (!strcasecmp(name, "vdat_lfdebug")) {