diff options
author | Bill Richardson <wfrichar@chromium.org> | 2016-04-07 16:43:02 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-04-08 12:34:29 -0700 |
commit | 2c26cad2ad223490d1adc7909fbdb317cc5c2c23 (patch) | |
tree | 2f737a966bae814853b40e77cc102f9bbdbe156c /common | |
parent | 62cbb5cafe3cb4ec770c7c6ab0f19e86460f2a9c (diff) | |
download | chrome-ec-2c26cad2ad223490d1adc7909fbdb317cc5c2c23.tar.gz |
Support RW_B in sysjump command when applicablestabilize-8172.47.B
If we #define CONFIG_RW_B, the firmware image can have two RW
components. This CL expands the "sysinfo" command so that we can
see which image we're running from when RW_B is also a
possibility.
BUG=chrome-os-partner:50701
BRANCH=none
TEST=make buildall; test RW update on Cr50
Using test/tpm_test/tpmtest.py, update the RW firmware and reboot
several times to switch between RW_A and RW_B. Note that the
"sysjump" command reports the correct image each time.
Change-Id: Iba3778579587f6df198728d3783cb848b4fd199d
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/337664
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/system.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/common/system.c b/common/system.c index 7c3117a292..c1236f083c 100644 --- a/common/system.c +++ b/common/system.c @@ -107,6 +107,10 @@ static uintptr_t get_program_memory_addr(enum system_image_copy_t copy) return CONFIG_PROGRAM_MEMORY_BASE + CONFIG_RO_MEM_OFF; case SYSTEM_IMAGE_RW: return CONFIG_PROGRAM_MEMORY_BASE + CONFIG_RW_MEM_OFF; +#ifdef CONFIG_RW_B + case SYSTEM_IMAGE_RW_B: + return CONFIG_PROGRAM_MEMORY_BASE + CONFIG_RW_B_MEM_OFF; +#endif default: return 0xffffffff; } @@ -126,6 +130,10 @@ static uint32_t get_size(enum system_image_copy_t copy) return CONFIG_RO_SIZE; case SYSTEM_IMAGE_RW: return CONFIG_RW_SIZE; +#ifdef CONFIG_RW_B + case SYSTEM_IMAGE_RW_B: + return CONFIG_RW_SIZE; +#endif default: return 0; } @@ -335,6 +343,12 @@ test_mockable enum system_image_copy_t system_get_image_copy(void) my_addr < (CONFIG_RW_MEM_OFF + CONFIG_RW_SIZE)) return SYSTEM_IMAGE_RW; +#ifdef CONFIG_RW_B + if (my_addr >= CONFIG_RW_B_MEM_OFF && + my_addr < (CONFIG_RW_B_MEM_OFF + CONFIG_RW_SIZE)) + return SYSTEM_IMAGE_RW_B; +#endif + return SYSTEM_IMAGE_UNKNOWN; #endif } @@ -424,7 +438,11 @@ const char *system_get_image_copy_string(void) const char *system_image_copy_t_to_string(enum system_image_copy_t copy) { - static const char * const image_names[] = {"unknown", "RO", "RW"}; + static const char * const image_names[] = {"unknown", "RO", "RW", +#ifdef CONFIG_RW_B + "RW_B", +#endif + }; return image_names[copy < ARRAY_SIZE(image_names) ? copy : 0]; } |