flash/nor: fix doc/help and range test for flash protect
Commit 77a1c01ccb
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>
gitignore-build
parent
390c9aca1f
commit
93bc4ec40f
|
@ -4714,12 +4714,15 @@ and possibly stale information.
|
||||||
|
|
||||||
@anchor{flashprotect}
|
@anchor{flashprotect}
|
||||||
@deffn Command {flash protect} num first last (@option{on}|@option{off})
|
@deffn Command {flash protect} num first last (@option{on}|@option{off})
|
||||||
Enable (@option{on}) or disable (@option{off}) protection of flash sectors
|
Enable (@option{on}) or disable (@option{off}) protection of flash blocks
|
||||||
in flash bank @var{num}, starting at sector @var{first}
|
in flash bank @var{num}, starting at protection block @var{first}
|
||||||
and continuing up to and including @var{last}.
|
and continuing up to and including @var{last}.
|
||||||
Providing a @var{last} sector of @option{last}
|
Providing a @var{last} block of @option{last}
|
||||||
specifies "to the end of the flash bank".
|
specifies "to the end of the flash bank".
|
||||||
The @var{num} parameter is a value shown by @command{flash banks}.
|
The @var{num} parameter is a value shown by @command{flash banks}.
|
||||||
|
The protection block is usually identical to a flash sector.
|
||||||
|
Some devices may utilize a protection block distinct from flash sector.
|
||||||
|
See @command{flash info} for a list of protection blocks.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
@deffn Command {flash padded_value} num value
|
@deffn Command {flash padded_value} num value
|
||||||
|
|
|
@ -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 flash_driver_protect(struct flash_bank *bank, int set, int first, int last)
|
||||||
{
|
{
|
||||||
int retval;
|
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 ... */
|
/* callers may not supply illegal parameters ... */
|
||||||
if (first < 0 || first > last || last >= bank->num_sectors) {
|
if (first < 0 || first > last || last >= num_blocks) {
|
||||||
LOG_ERROR("illegal sector range");
|
LOG_ERROR("illegal protection block range");
|
||||||
return ERROR_FAIL;
|
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 target could have reset, power cycled, been hot plugged,
|
||||||
* the application could have run, etc.
|
* 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);
|
retval = bank->driver->protect(bank, set, first, last);
|
||||||
if (retval != ERROR_OK)
|
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;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -936,10 +936,11 @@ static const struct command_registration flash_exec_command_handlers[] = {
|
||||||
.name = "protect",
|
.name = "protect",
|
||||||
.handler = handle_flash_protect_command,
|
.handler = handle_flash_protect_command,
|
||||||
.mode = COMMAND_EXEC,
|
.mode = COMMAND_EXEC,
|
||||||
.usage = "bank_id first_sector [last_sector|'last'] "
|
.usage = "bank_id first_block [last_block|'last'] "
|
||||||
"('on'|'off')",
|
"('on'|'off')",
|
||||||
.help = "Turn protection on or off for a range of sectors "
|
.help = "Turn protection on or off for a range of protection "
|
||||||
"in a given flash bank.",
|
"blocks or sectors in a given flash bank. "
|
||||||
|
"See 'flash info' output for a list of blocks.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.name = "padded_value",
|
.name = "padded_value",
|
||||||
|
|
Loading…
Reference in New Issue