aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2016-11-03 17:31:33 +0300
committerFreddie Chopin <freddie.chopin@gmail.com>2016-11-04 22:04:58 +0000
commit607edefb53ae5ca4120a7967c4cfed3184bb09d2 (patch)
tree06a20b6420e709da4728521b9297e2d221a82e1c
parent09253ffd13038a465ab7a2ffc8475259d54da1e4 (diff)
flash: nor: mdr: do not mass erase when clearing INFO memory
The MDR parts have two kinds of memory: main (regular memory-mapped memory for code and data) and "info" (not memory-mapped). When OpenOCD is requested to erase the info memory block, it should do just that, instead of erasing everything including main memory. Change-Id: I498142ca50d4a7b669b7776180b0dbcea63a5328 Reported-by: Eldar Khayrullin <eldar.khayrullin@mail.ru> Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/3853 Tested-by: jenkins Reviewed-by: Eldar Khayrullin <eldar.khayrullin@mail.ru> Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
-rw-r--r--src/flash/nor/mdr.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/flash/nor/mdr.c b/src/flash/nor/mdr.c
index 374cb6f2..8ceb1bf4 100644
--- a/src/flash/nor/mdr.c
+++ b/src/flash/nor/mdr.c
@@ -171,7 +171,8 @@ static int mdr_erase(struct flash_bank *bank, int first, int last)
if (retval != ERROR_OK)
goto reset_pg_and_lock;
- if ((first == 0) && (last == (bank->num_sectors - 1))) {
+ if ((first == 0) && (last == (bank->num_sectors - 1)) &&
+ !mdr_info->mem_type) {
retval = mdr_mass_erase(bank);
goto reset_pg_and_lock;
}