Changed SAM4S Erase for effective Sector erase

In the previous iteration, the page counter for erases would not be updated with
the erase size.  This patch keeps the page counter synced with the sector counter.

Signed-off-by: Olivier Schonken <olivier.schonken@gmail.com>
Change-Id: I95e56a3257b2ad8301c9f28167b842fa6466334f
Reviewed-on: http://openocd.zylin.com/686
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
This commit is contained in:
Olivier Schonken 2012-06-04 07:33:15 +02:00 committed by Spencer Oliver
parent 5b0a131594
commit 24a1e7b0fc
1 changed files with 4 additions and 1 deletions

View File

@ -1678,6 +1678,9 @@ static int sam4_erase(struct flash_bank *bank, int first, int last)
struct sam4_bank_private *pPrivate;
int r;
int i;
int pageCount;
/*16 pages equals 8KB - Same size as a lock region*/
pageCount = 16;
uint32_t status;
LOG_DEBUG("Here");
@ -1705,7 +1708,7 @@ static int sam4_erase(struct flash_bank *bank, int first, int last)
LOG_INFO("sam4 First: 0x%08x Last: 0x%08x", (unsigned int)(first), (unsigned int)(last));
for (i = first; i <= last; i++) {
/*16 pages equals 8KB - Same size as a lock region*/
r = FLASHD_ErasePages(pPrivate, i, 16, &status);
r = FLASHD_ErasePages(pPrivate, (i * pageCount), pageCount, &status);
LOG_INFO("Erasing sector: 0x%08x", (unsigned int)(i));
if (r != ERROR_OK)
LOG_ERROR("SAM4: Error performing Erase page @ lock region number %d",