mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-30 18:41:11 +00:00
cr50: configure flash counter
Add the robust non-volatile counter provided by CONFIG_FLASH_NVCOUNTER in order to support the U2F implementation. The counter implementation needs 2 (raw) pages of flash for its underlying storage. In order to try to avoid disrupting the existing machines by invalidating the nvmem if we touch its mapping, those pages are placed in each RW between the code/read-only and the read-write nvmem area by shrinking the code/read-only by one page, so the nvmem mapping should be untouched. Signed-off-by: Vincent Palatin <vpalatin@chromium.org> BRANCH=cr50 BUG=b:35545754 TEST=with follow-up CLs, run U2FTest on Eve. Change-Id: Ib3d7dcb9a1b13cff74b56461332937e3a4cc9ae1 Reviewed-on: https://chromium-review.googlesource.com/518137 Commit-Ready: Vincent Palatin <vpalatin@chromium.org> Tested-by: Vincent Palatin <vpalatin@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
5babc4f359
commit
5479dcbbc5
@@ -647,14 +647,14 @@ int flash_regions_to_enable(struct g_flash_region *regions,
|
||||
|
||||
/* Enable access to the NVRAM partition A region */
|
||||
regions[1].reg_base = CONFIG_MAPPED_STORAGE_BASE +
|
||||
CONFIG_FLASH_NVMEM_OFFSET_A;
|
||||
regions[1].reg_size = NVMEM_PARTITION_SIZE;
|
||||
CFG_TOP_A_OFF;
|
||||
regions[1].reg_size = CFG_TOP_SIZE;
|
||||
regions[1].reg_perms = FLASH_REGION_EN_ALL;
|
||||
|
||||
/* Enable access to the NVRAM partition B region */
|
||||
regions[2].reg_base = CONFIG_MAPPED_STORAGE_BASE +
|
||||
CONFIG_FLASH_NVMEM_OFFSET_B;
|
||||
regions[2].reg_size = NVMEM_PARTITION_SIZE;
|
||||
CFG_TOP_B_OFF;
|
||||
regions[2].reg_size = CFG_TOP_SIZE;
|
||||
regions[2].reg_perms = FLASH_REGION_EN_ALL;
|
||||
|
||||
return 3;
|
||||
|
||||
@@ -43,20 +43,27 @@
|
||||
|
||||
#define CONFIG_CRC8
|
||||
|
||||
/* Non-volatile counter storage for U2F */
|
||||
#define CONFIG_FLASH_NVCOUNTER
|
||||
#define CONFIG_FLASH_NVCTR_SIZE CONFIG_FLASH_BANK_SIZE
|
||||
#define CONFIG_FLASH_NVCTR_BASE_A (CONFIG_PROGRAM_MEMORY_BASE + \
|
||||
CFG_TOP_A_OFF)
|
||||
#define CONFIG_FLASH_NVCTR_BASE_B (CONFIG_PROGRAM_MEMORY_BASE + \
|
||||
CFG_TOP_B_OFF)
|
||||
/* We're using TOP_A for partition 0, TOP_B for partition 1 */
|
||||
#define CONFIG_FLASH_NVMEM
|
||||
/* Offset to start of NvMem area from base of flash */
|
||||
#define CONFIG_FLASH_NVMEM_OFFSET_A (CFG_TOP_A_OFF)
|
||||
#define CONFIG_FLASH_NVMEM_OFFSET_B (CFG_TOP_B_OFF)
|
||||
#define CONFIG_FLASH_NVMEM_OFFSET_A (CFG_TOP_A_OFF + CONFIG_FLASH_NVCTR_SIZE)
|
||||
#define CONFIG_FLASH_NVMEM_OFFSET_B (CFG_TOP_B_OFF + CONFIG_FLASH_NVCTR_SIZE)
|
||||
/* Address of start of Nvmem area */
|
||||
#define CONFIG_FLASH_NVMEM_BASE_A (CONFIG_PROGRAM_MEMORY_BASE + \
|
||||
CONFIG_FLASH_NVMEM_OFFSET_A)
|
||||
#define CONFIG_FLASH_NVMEM_BASE_B (CONFIG_PROGRAM_MEMORY_BASE + \
|
||||
CONFIG_FLASH_NVMEM_OFFSET_B)
|
||||
/* Size partition in NvMem */
|
||||
#define NVMEM_PARTITION_SIZE CFG_TOP_SIZE
|
||||
#define NVMEM_PARTITION_SIZE (CFG_TOP_SIZE - CONFIG_FLASH_NVCTR_SIZE)
|
||||
/* Size in bytes of NvMem area */
|
||||
#define CONFIG_FLASH_NVMEM_SIZE (CFG_TOP_SIZE * NVMEM_NUM_PARTITIONS)
|
||||
#define CONFIG_FLASH_NVMEM_SIZE (NVMEM_PARTITION_SIZE * NVMEM_NUM_PARTITIONS)
|
||||
/* Enable <key, value> variable support. */
|
||||
#define CONFIG_FLASH_NVMEM_VARS
|
||||
#define NVMEM_CR50_SIZE 272
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
* use these two areas for the same thing, it's just more convenient to make
|
||||
* them the same size.
|
||||
*/
|
||||
#define CFG_TOP_SIZE 0x3000
|
||||
#define CFG_TOP_SIZE 0x3800
|
||||
#define CFG_TOP_A_OFF (CFG_FLASH_HALF - CFG_TOP_SIZE)
|
||||
#define CFG_TOP_B_OFF (CONFIG_FLASH_SIZE - CFG_TOP_SIZE)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user