aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTomas Vanek <vanekt@fbl.cz>2016-12-22 21:47:20 +0100
committerPaul Fertser <fercerpav@gmail.com>2017-01-15 11:01:36 +0000
commit93bc4ec40ffb9c30f170af3f1e3551c4b198507f (patch)
tree70aaaceb0c0025fe6108ea459d5e281a3cfbd49b /src
parent390c9aca1f9400d956020b3d1657237bcc1ffe68 (diff)
downloadriscv-openocd-93bc4ec40ffb9c30f170af3f1e3551c4b198507f.zip
riscv-openocd-93bc4ec40ffb9c30f170af3f1e3551c4b198507f.tar.gz
riscv-openocd-93bc4ec40ffb9c30f170af3f1e3551c4b198507f.tar.bz2
flash/nor: fix doc/help and range test for flash protect
Commit 77a1c01ccbb1150ffe749a7373cf6c4dc15ecad0 introduced infrastructure for utilizing protection blocks of different size than erase sector. Parts of doc/help kept reading 'sector' instead of 'protection block'. flash_driver_protect() parameter range testing did not switched to bank->num_prot_blocks. This change fixes it. Change-Id: Iec301761190a1a1bcc4cb005a519b9e5e4fede51 Reported-by: Mark Odell <mark@odell.ws> Signed-off-by: Tomas Vanek <vanekt@fbl.cz> Reviewed-on: http://openocd.zylin.com/3917 Tested-by: jenkins Reviewed-by: Mark Odell <mrfirmware@gmail.com> Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/flash/nor/core.c15
-rw-r--r--src/flash/nor/tcl.c7
2 files changed, 15 insertions, 7 deletions
diff --git a/src/flash/nor/core.c b/src/flash/nor/core.c
index 8f6306f..ab69a32 100644
--- a/src/flash/nor/core.c
+++ b/src/flash/nor/core.c
@@ -50,10 +50,17 @@ int flash_driver_erase(struct flash_bank *bank, int first, int last)
int flash_driver_protect(struct flash_bank *bank, int set, int first, int last)
{
int retval;
+ int num_blocks;
+
+ if (bank->num_prot_blocks)
+ num_blocks = bank->num_prot_blocks;
+ else
+ num_blocks = bank->num_sectors;
+
/* callers may not supply illegal parameters ... */
- if (first < 0 || first > last || last >= bank->num_sectors) {
- LOG_ERROR("illegal sector range");
+ if (first < 0 || first > last || last >= num_blocks) {
+ LOG_ERROR("illegal protection block range");
return ERROR_FAIL;
}
@@ -69,11 +76,11 @@ int flash_driver_protect(struct flash_bank *bank, int set, int first, int last)
* the target could have reset, power cycled, been hot plugged,
* the application could have run, etc.
*
- * Drivers only receive valid sector range.
+ * Drivers only receive valid protection block range.
*/
retval = bank->driver->protect(bank, set, first, last);
if (retval != ERROR_OK)
- LOG_ERROR("failed setting protection for areas %d to %d", first, last);
+ LOG_ERROR("failed setting protection for blocks %d to %d", first, last);
return retval;
}
diff --git a/src/flash/nor/tcl.c b/src/flash/nor/tcl.c
index 6936822..0b72a12 100644
--- a/src/flash/nor/tcl.c
+++ b/src/flash/nor/tcl.c
@@ -936,10 +936,11 @@ static const struct command_registration flash_exec_command_handlers[] = {
.name = "protect",
.handler = handle_flash_protect_command,
.mode = COMMAND_EXEC,
- .usage = "bank_id first_sector [last_sector|'last'] "
+ .usage = "bank_id first_block [last_block|'last'] "
"('on'|'off')",
- .help = "Turn protection on or off for a range of sectors "
- "in a given flash bank.",
+ .help = "Turn protection on or off for a range of protection "
+ "blocks or sectors in a given flash bank. "
+ "See 'flash info' output for a list of blocks.",
},
{
.name = "padded_value",