aboutsummaryrefslogtreecommitdiff
path: root/src/flash
diff options
context:
space:
mode:
authorElliott Partridge <elliott.partridge@gmail.com>2014-05-28 12:20:44 -0400
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>2014-06-01 17:38:42 +0000
commit7bcf1d838dc2b007598df9594725d17e918c75e2 (patch)
tree46e874994e31fa6273330a6f5a87db16160715fb /src/flash
parent248b85a6e739c8eb107c3a278b8eac6fc1f0cf62 (diff)
downloadriscv-openocd-7bcf1d838dc2b007598df9594725d17e918c75e2.zip
riscv-openocd-7bcf1d838dc2b007598df9594725d17e918c75e2.tar.gz
riscv-openocd-7bcf1d838dc2b007598df9594725d17e918c75e2.tar.bz2
STM32F2x: Don't clear FLASH_OPTCR bits when locking register
stm32x_write_options is locking the FLASH_OPTCR register by writing 0x00000001 to it, which clears the other bits. This causes problems with subsequent flash operations; the hardware is probably seeing the write protection bits in the register set to '0' (protect), causing a WRPERR. This patch ORs the value of the register with 0x00000001, so that the only change is the lock bit itself. Change-Id: I0e3ca9aa6563ce1b57a01fc0faf7563b6b85f620 Signed-off-by: Elliott Partridge <elliott.partridge@gmail.com> Reviewed-on: http://openocd.zylin.com/2155 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/flash')
-rw-r--r--src/flash/nor/stm32f2x.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/flash/nor/stm32f2x.c b/src/flash/nor/stm32f2x.c
index eab1934..56fd9f6 100644
--- a/src/flash/nor/stm32f2x.c
+++ b/src/flash/nor/stm32f2x.c
@@ -372,7 +372,7 @@ static int stm32x_write_options(struct flash_bank *bank)
return retval;
/* relock registers */
- retval = target_write_u32(target, STM32_FLASH_OPTCR, OPT_LOCK);
+ retval = target_write_u32(target, STM32_FLASH_OPTCR, optiondata | OPT_LOCK);
if (retval != ERROR_OK)
return retval;