summaryrefslogtreecommitdiff
path: root/src/flash/nor
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-12-18 09:59:40 -0800
committerDavid Brownell <dbrownell@users.sourceforge.net>2009-12-18 09:59:40 -0800
commit7641934197abbd851127afcb0b7cebc30242f717 (patch)
tree807e0df122fdb41dc95bc089785ad5ccdef7cc15 /src/flash/nor
parent12b8c7b89b021c882e68bb0e28863c802fe36ac4 (diff)
downloadopenocd_libswd-7641934197abbd851127afcb0b7cebc30242f717.tar.gz
openocd_libswd-7641934197abbd851127afcb0b7cebc30242f717.tar.bz2
openocd_libswd-7641934197abbd851127afcb0b7cebc30242f717.tar.xz
openocd_libswd-7641934197abbd851127afcb0b7cebc30242f717.zip
stellaris: fix min buffer length checks
Word count == size/4; cope. And increase buf_min so it's large enough to cover the overhead in my tests. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src/flash/nor')
-rw-r--r--src/flash/nor/stellaris.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/flash/nor/stellaris.c b/src/flash/nor/stellaris.c
index 51fe677c..f414ca6f 100644
--- a/src/flash/nor/stellaris.c
+++ b/src/flash/nor/stellaris.c
@@ -826,10 +826,10 @@ static int stellaris_write_block(struct flash_bank *bank,
int retval = ERROR_OK;
/* power of two, and multiple of word size */
- static const unsigned buf_min = 32;
+ static const unsigned buf_min = 128;
/* for small buffers it's faster not to download an algorithm */
- if (wcount < buf_min)
+ if (wcount * 4 < buf_min)
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
LOG_DEBUG("(bank=%p buffer=%p offset=%08" PRIx32 " wcount=%08" PRIx32 "",
@@ -843,11 +843,8 @@ static int stellaris_write_block(struct flash_bank *bank,
};
/* plus a buffer big enough for this data */
- if (wcount < buffer_size) {
- buffer_size = wcount;
- buffer_size += buf_min - 1;
- buffer_size &= ~(buf_min - 1);
- }
+ if (wcount * 4 < buffer_size)
+ buffer_size = wcount * 4;
/* memory buffer */
while (target_alloc_working_area(target, buffer_size, &source) != ERROR_OK)