summaryrefslogtreecommitdiff
path: root/include/flash.h
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@chromium.org>2019-05-30 11:15:43 -0700
committerCommit Bot <commit-bot@chromium.org>2019-07-03 03:19:47 +0000
commitbd3ae0748e7dd84c5c0b3fa2387062a4ba4ea3a3 (patch)
tree869b26139bc3f687644c78c61f7c00ba0e43c903 /include/flash.h
parentc7f66d9adc31395fd0fa336ab6050c4953b98b35 (diff)
downloadchrome-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.h12
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 {