From: Paul Fertser Date: Thu, 3 Nov 2016 14:31:33 +0000 (+0300) Subject: flash: nor: mdr: do not mass erase when clearing INFO memory X-Git-Tag: v0.10.0-rc1~64 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=607edefb53ae5ca4120a7967c4cfed3184bb09d2;p=openocd 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 Signed-off-by: Paul Fertser Reviewed-on: http://openocd.zylin.com/3853 Tested-by: jenkins Reviewed-by: Eldar Khayrullin Reviewed-by: Freddie Chopin --- 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; }