diff options
author | Tomas Vanek <vanekt@fbl.cz> | 2018-07-21 10:28:48 +0200 |
---|---|---|
committer | Tomas Vanek <vanekt@fbl.cz> | 2018-08-21 19:25:45 +0100 |
commit | e537e807f6e634eb921988ad5db353cdcf03ee50 (patch) | |
tree | 0f62b73b24350b927f3a0a54f4ce419218992020 /src/flash | |
parent | 6060545458f6863710d576fc4bd2512d34f88f89 (diff) | |
download | riscv-openocd-e537e807f6e634eb921988ad5db353cdcf03ee50.zip riscv-openocd-e537e807f6e634eb921988ad5db353cdcf03ee50.tar.gz riscv-openocd-e537e807f6e634eb921988ad5db353cdcf03ee50.tar.bz2 |
flash/at91sam4: run probe just once
Reread registers in sam4_GetInfo()
Change-Id: I3b023b3e642a9c052b5c41673d196317f7e7f2e3
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4609
Tested-by: jenkins
Reviewed-by: Erwin Oegema <blablaechthema@hotmail.com>
Reviewed-by: Svetoslav Enchev <svetoslav.enchev@gmail.com>
Diffstat (limited to 'src/flash')
-rw-r--r-- | src/flash/nor/at91sam4.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/flash/nor/at91sam4.c b/src/flash/nor/at91sam4.c index c5b31e9..f922c76 100644 --- a/src/flash/nor/at91sam4.c +++ b/src/flash/nor/at91sam4.c @@ -2376,6 +2376,11 @@ static int sam4_GetInfo(struct sam4_chip *pChip) { const struct sam4_reg_list *pReg; uint32_t regval; + int r; + + r = sam4_ReadAllRegs(pChip); + if (r != ERROR_OK) + return r; pReg = &(sam4_all_regs[0]); while (pReg->name) { @@ -2581,14 +2586,14 @@ static int sam4_GetDetails(struct sam4_bank_private *pPrivate) return ERROR_OK; } -static int _sam4_probe(struct flash_bank *bank, int noise) +static int sam4_probe(struct flash_bank *bank) { unsigned x; int r; struct sam4_bank_private *pPrivate; - LOG_DEBUG("Begin: Bank: %d, Noise: %d", bank->bank_number, noise); + LOG_DEBUG("Begin: Bank: %d", bank->bank_number); if (bank->target->state != TARGET_HALTED) { LOG_ERROR("Target not halted"); return ERROR_TARGET_NOT_HALTED; @@ -2655,14 +2660,15 @@ static int _sam4_probe(struct flash_bank *bank, int noise) return r; } -static int sam4_probe(struct flash_bank *bank) -{ - return _sam4_probe(bank, 1); -} - static int sam4_auto_probe(struct flash_bank *bank) { - return _sam4_probe(bank, 0); + struct sam4_bank_private *pPrivate; + + pPrivate = get_sam4_bank_private(bank); + if (pPrivate && pPrivate->probed) + return ERROR_OK; + + return sam4_probe(bank); } static int sam4_erase(struct flash_bank *bank, int first, int last) |