aboutsummaryrefslogtreecommitdiff
path: root/src/flash/nor/nrf5.c
diff options
context:
space:
mode:
authorTomas Vanek <vanekt@fbl.cz>2019-01-20 23:58:51 +0100
committerTomas Vanek <vanekt@fbl.cz>2019-11-26 07:19:59 +0000
commite3fb76374c92264e5d684c3809b52fb2047e627b (patch)
tree4777a0b78a526d14b7db63146e3cff929eeef68f /src/flash/nor/nrf5.c
parentb2dbaf9e1569ddc75f461b0b378f6614ecb7a45d (diff)
downloadriscv-openocd-e3fb76374c92264e5d684c3809b52fb2047e627b.zip
riscv-openocd-e3fb76374c92264e5d684c3809b52fb2047e627b.tar.gz
riscv-openocd-e3fb76374c92264e5d684c3809b52fb2047e627b.tar.bz2
flash/nor/nrf5: refactor sector allocation to use alloc_block_array()
Change-Id: Ied8ea917cec492fc6bb8836a92d8c4ceaf3b499b Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/4865 Tested-by: jenkins
Diffstat (limited to 'src/flash/nor/nrf5.c')
-rw-r--r--src/flash/nor/nrf5.c35
1 files changed, 10 insertions, 25 deletions
diff --git a/src/flash/nor/nrf5.c b/src/flash/nor/nrf5.c
index bd4ad00..f0ae203 100644
--- a/src/flash/nor/nrf5.c
+++ b/src/flash/nor/nrf5.c
@@ -748,46 +748,31 @@ static int nrf5_probe(struct flash_bank *bank)
}
if (bank->base == NRF5_FLASH_BASE) {
- bank->num_sectors = num_sectors;
- bank->size = num_sectors * flash_page_size;
-
/* Sanity check */
if (chip->spec && chip->flash_size_kb != chip->spec->flash_size_kb)
LOG_WARNING("Chip's reported Flash capacity does not match expected one");
if (chip->ficr_info_valid && chip->flash_size_kb != chip->ficr_info.flash)
LOG_WARNING("Chip's reported Flash capacity does not match FICR INFO.FLASH");
- bank->sectors = calloc(bank->num_sectors,
- sizeof((bank->sectors)[0]));
- if (!bank->sectors)
- return ERROR_FLASH_BANK_NOT_PROBED;
-
- /* Fill out the sector information: all NRF5 sectors are the same size and
- * there is always a fixed number of them. */
- for (int i = 0; i < bank->num_sectors; i++) {
- bank->sectors[i].size = flash_page_size;
- bank->sectors[i].offset = i * flash_page_size;
+ bank->num_sectors = num_sectors;
+ bank->size = num_sectors * flash_page_size;
- /* mark as unknown */
- bank->sectors[i].is_erased = -1;
- bank->sectors[i].is_protected = -1;
- }
+ bank->sectors = alloc_block_array(0, flash_page_size, num_sectors);
+ if (!bank->sectors)
+ return ERROR_FAIL;
nrf5_protect_check(bank);
chip->bank[0].probed = true;
+
} else {
- bank->size = flash_page_size;
bank->num_sectors = 1;
- bank->sectors = calloc(bank->num_sectors,
- sizeof((bank->sectors)[0]));
- if (!bank->sectors)
- return ERROR_FLASH_BANK_NOT_PROBED;
+ bank->size = flash_page_size;
- bank->sectors[0].size = bank->size;
- bank->sectors[0].offset = 0;
+ bank->sectors = alloc_block_array(0, flash_page_size, num_sectors);
+ if (!bank->sectors)
+ return ERROR_FAIL;
- bank->sectors[0].is_erased = 0;
bank->sectors[0].is_protected = 0;
chip->bank[1].probed = true;