From 969b1e66dd46fff70168a69dbd4beaaa18ccb490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 14 Dec 2010 09:26:08 +0100 Subject: [PATCH] stm32: fix unprotect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the unprotect fn in stm32 needs to unprotect more sectors than was requested aligned to some boundary. Print warning when this happens. Signed-off-by: Øyvind Harboe --- src/flash/nor/stm32x.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/flash/nor/stm32x.c b/src/flash/nor/stm32x.c index 0edadfd2a..3c49b8be1 100644 --- a/src/flash/nor/stm32x.c +++ b/src/flash/nor/stm32x.c @@ -487,12 +487,19 @@ static int stm32x_protect(struct flash_bank *bank, int set, int first, int last) return ERROR_TARGET_NOT_HALTED; } - if ((first && (first % stm32x_info->ppage_size)) || ((last + 1) && - (last + 1) % stm32x_info->ppage_size)) + if ((first % stm32x_info->ppage_size) != 0) { - LOG_WARNING("Error: start and end sectors must be on a %d sector boundary", + LOG_WARNING("aligned start protect sector to a %d sector boundary", stm32x_info->ppage_size); - return ERROR_FLASH_SECTOR_INVALID; + first = first - (first % stm32x_info->ppage_size); + } + if (((last + 1) % stm32x_info->ppage_size) != 0) + { + LOG_WARNING("aligned end protect sector to a %d sector boundary", + stm32x_info->ppage_size); + last++; + last = last - (last % stm32x_info->ppage_size); + last--; } /* medium density - each bit refers to a 4bank protection