aboutsummaryrefslogtreecommitdiff
path: root/src/flash
diff options
context:
space:
mode:
authorOlivier Schonken <olivier.schonken@gmail.com>2012-09-12 21:56:50 +0200
committerSpencer Oliver <spen@spen-soft.co.uk>2012-10-04 15:53:19 +0000
commit5952843fc5d56d51f3e0ed5d141db46beefa8b56 (patch)
tree4ad121b74444235630a8351bbac45f27d38f4a33 /src/flash
parentbd5f5c6a66f04751a4752ede396b4a12f478ee25 (diff)
downloadriscv-openocd-5952843fc5d56d51f3e0ed5d141db46beefa8b56.zip
riscv-openocd-5952843fc5d56d51f3e0ed5d141db46beefa8b56.tar.gz
riscv-openocd-5952843fc5d56d51f3e0ed5d141db46beefa8b56.tar.bz2
Modified Sector Erase for AT91SAM4S
In FLASHD_ErasePages AT91C_EFC_FCMD_EPA is used to erase sectors. According to the datasheet FARG[15:2] defines the page from which the erase will start.This page must be modulo 4, 8, 16 or 32 according to the number of pages to erase. FARG[1:0] defines the number of pages to be erased. Previously (firstpage << 2) was used to conform to this, seems it should not be shifted... Changed it to (firstPage) | erasePages. Change-Id: I791cc7fc4faf056623ad5a6c7e860315306098a1 Signed-off-by: Olivier Schonken <olivier.schonken@gmail.com> Reviewed-on: http://openocd.zylin.com/830 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/flash')
-rw-r--r--src/flash/nor/at91sam4.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/flash/nor/at91sam4.c b/src/flash/nor/at91sam4.c
index fd98b7f..ce3c1d1 100644
--- a/src/flash/nor/at91sam4.c
+++ b/src/flash/nor/at91sam4.c
@@ -722,10 +722,17 @@ static int FLASHD_ErasePages(struct sam4_bank_private *pPrivate,
break;
}
+ /* AT91C_EFC_FCMD_EPA
+ * According to the datasheet FARG[15:2] defines the page from which
+ * the erase will start.This page must be modulo 4, 8, 16 or 32
+ * according to the number of pages to erase. FARG[1:0] defines the
+ * number of pages to be erased. Previously (firstpage << 2) was used
+ * to conform to this, seems it should not be shifted...
+ */
return EFC_PerformCommand(pPrivate,
/* send Erase Page */
AT91C_EFC_FCMD_EPA,
- (firstPage << 2) | erasePages,
+ (firstPage) | erasePages,
status);
}