diff options
author | Tom Hughes <tomhughes@chromium.org> | 2019-05-30 11:15:43 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-07-03 03:19:47 +0000 |
commit | bd3ae0748e7dd84c5c0b3fa2387062a4ba4ea3a3 (patch) | |
tree | 869b26139bc3f687644c78c61f7c00ba0e43c903 /include/flash.h | |
parent | c7f66d9adc31395fd0fa336ab6050c4953b98b35 (diff) | |
download | chrome-ec-bd3ae0748e7dd84c5c0b3fa2387062a4ba4ea3a3.tar.gz |
rollback: Add rollback support for chips with varying flash bank sizes
BRANCH=none
BUG=b:124996507
TEST=In hatch_fp and nocturne_fp console with CONFIG_RWSIG_JUMP_TIMEOUT
increased to large value and console_task stack size increased to
4096:
> rollbackinfo
rollback minimum version: 0
RW rollback version: 0
rollback 0: 00000000 00000000 0b112233 [00..00] *
rollback 1: ffffffff ffffffff ffffffff [ff..ff]
> rollbackupdate 1
> rollbackinfo
rollback minimum version: 1
RW rollback version: 0
rollback 0: 00000000 00000000 0b112233 [00..00]
rollback 1: 00000001 00000001 0b112233 [00..00] *
> rollbackaddent 1234
> rollbackinfo
rollback minimum version: 1
RW rollback version: 0
rollback 0: 00000002 00000001 0b112233 [e5..8c] *
rollback 1: 00000001 00000001 0b112233 [00..00]
TEST=test_that --board=nocturne <IP> firmware_Fingerprint.ObeysRollback
firmware_Fingerprint.ObeysRollback [ PASSED ]
firmware_Fingerprint.ObeysRollback/firmware_Fingerprint [ PASSED ]
Change-Id: I90b524138ca1125e2c1b62936b9f6fbe00e957d4
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1681379
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Diffstat (limited to 'include/flash.h')
-rw-r--r-- | include/flash.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/include/flash.h b/include/flash.h index e2c572d38f..cceac81df1 100644 --- a/include/flash.h +++ b/include/flash.h @@ -46,6 +46,10 @@ int flash_bank_count(int offset, int size); */ int flash_bank_size(int bank); +int flash_bank_start_offset(int bank); + +int flash_bank_erase_size(int bank); + /* Number of physical flash banks */ #define PHYSICAL_BANKS CONFIG_FLASH_MULTIPLE_REGION @@ -88,9 +92,15 @@ int flash_bank_size(int bank); /* * ROLLBACK region offset and size in units of flash banks. */ +#ifdef CONFIG_FLASH_MULTIPLE_REGION +#define ROLLBACK_BANK_OFFSET flash_bank_index(CONFIG_ROLLBACK_OFF) +#define ROLLBACK_BANK_COUNT \ + flash_bank_count(CONFIG_ROLLBACK_OFF, CONFIG_ROLLBACK_SIZE) +#else #define ROLLBACK_BANK_OFFSET (CONFIG_ROLLBACK_OFF / CONFIG_FLASH_BANK_SIZE) #define ROLLBACK_BANK_COUNT (CONFIG_ROLLBACK_SIZE / CONFIG_FLASH_BANK_SIZE) -#endif +#endif /* CONFIG_FLASH_MULTIPLE_REGION */ +#endif /* CONFIG_ROLLBACK */ /* This enum is useful to identify different regions during verification. */ enum flash_region { |