Report mainfw_act based on VbSharedData

Don't use FDT to report it on ARM.

This fixes ARM reporting the wrong thing for RO-normal.

BUG=none
TEST=none

Change-Id: Id3a1bd2a1d2502e1d9493ab362be5a58fa88d70e
Reviewed-on: http://gerrit.chromium.org/gerrit/4213
Reviewed-by: Olof Johansson <olofj@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Randall Spangler <rspangler@chromium.org>
This commit is contained in:
Randall Spangler
2011-07-15 16:28:38 -07:00
parent 8409b37498
commit a185b8d8f6
2 changed files with 20 additions and 3 deletions

View File

@@ -321,8 +321,6 @@ const char* VbGetArchPropertyString(const char* name, char* dest, int size) {
prop = "hardware-id"; prop = "hardware-id";
else if (!strcasecmp(name, "fwid")) else if (!strcasecmp(name, "fwid"))
prop = "firmware-version"; prop = "firmware-version";
else if (!strcasecmp(name, "mainfw_act"))
prop = "active-firmware";
else if (!strcasecmp(name, "mainfw_type")) else if (!strcasecmp(name, "mainfw_type"))
prop = "firmware-type"; prop = "firmware-type";
else if (!strcasecmp(name, "ecfw_act")) else if (!strcasecmp(name, "ecfw_act"))

View File

@@ -26,7 +26,8 @@
typedef enum VdatStringField { typedef enum VdatStringField {
VDAT_STRING_TIMERS = 0, /* Timer values */ VDAT_STRING_TIMERS = 0, /* Timer values */
VDAT_STRING_LOAD_FIRMWARE_DEBUG, /* LoadFirmware() debug information */ 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; } VdatStringField;
@@ -293,6 +294,22 @@ char* GetVdatString(char* dest, int size, VdatStringField field)
value = GetVdatLoadKernelDebug(dest, size, sh); value = GetVdatLoadKernelDebug(dest, size, sh);
break; 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: default:
value = NULL; value = NULL;
break; break;
@@ -403,6 +420,8 @@ const char* VbGetSystemPropertyString(const char* name, char* dest, int size) {
default: default:
return NULL; return NULL;
} }
} else if (!strcasecmp(name, "mainfw_act")) {
return GetVdatString(dest, size, VDAT_STRING_MAINFW_ACT);
} else if (!strcasecmp(name, "vdat_timers")) { } else if (!strcasecmp(name, "vdat_timers")) {
return GetVdatString(dest, size, VDAT_STRING_TIMERS); return GetVdatString(dest, size, VDAT_STRING_TIMERS);
} else if (!strcasecmp(name, "vdat_lfdebug")) { } else if (!strcasecmp(name, "vdat_lfdebug")) {