diff options
author | Tomas Vanek <vanekt@fbl.cz> | 2018-11-15 12:19:25 +0100 |
---|---|---|
committer | Tomas Vanek <vanekt@fbl.cz> | 2018-11-26 09:31:35 +0000 |
commit | 9542cb7c3d9f4b66d2df3d8412a73d008077ab86 (patch) | |
tree | 5bdcd193b5b2a2e06d5e2e03fbf85dca53eddbf8 /src/flash/nor/tcl.c | |
parent | ff555afc02d50ca57fc6e71787d34a8e985cf115 (diff) | |
download | riscv-openocd-9542cb7c3d9f4b66d2df3d8412a73d008077ab86.zip riscv-openocd-9542cb7c3d9f4b66d2df3d8412a73d008077ab86.tar.gz riscv-openocd-9542cb7c3d9f4b66d2df3d8412a73d008077ab86.tar.bz2 |
flash/nor: consolidate flash protect/protect_check
Make flash_driver methods protect() and protect_check()
optional.
Remove dummy definitions of these methods from the drivers
which do not implement protection handling.
Some drivers did not define protect method. It raised segfault
before this change and now it is handled properly.
Lot of drivers returned ERROR_OK from dummy protect()
- now flash_driver_protect() returns an error if not handled by the driver.
Change-Id: I2d4a0da316bf03c6379791b1b1c6198fbf22e66c
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4765
Tested-by: jenkins
Reviewed-by: Andreas Bolsch <hyphen0break@gmail.com>
Reviewed-by: Christopher Head <chead@zaber.com>
Diffstat (limited to 'src/flash/nor/tcl.c')
-rw-r--r-- | src/flash/nor/tcl.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/flash/nor/tcl.c b/src/flash/nor/tcl.c index 95ca819..f056e07 100644 --- a/src/flash/nor/tcl.c +++ b/src/flash/nor/tcl.c @@ -98,10 +98,18 @@ COMMAND_HANDLER(handle_flash_info_command) if (retval != ERROR_OK) return retval; - /* We must query the hardware to avoid printing stale information! */ - retval = p->driver->protect_check(p); - if (retval != ERROR_OK) - return retval; + /* If the driver does not implement protection, we show the default + * state of is_protected array - usually protection state unknown */ + if (p->driver->protect_check == NULL) { + retval = ERROR_FLASH_OPER_UNSUPPORTED; + } else { + /* We must query the hardware to avoid printing stale information! */ + retval = p->driver->protect_check(p); + if (retval != ERROR_OK && retval != ERROR_FLASH_OPER_UNSUPPORTED) + return retval; + } + if (retval == ERROR_FLASH_OPER_UNSUPPORTED) + LOG_WARNING("Flash protection check is not implemented."); command_print(CMD_CTX, "#%d : %s at 0x%8.8" PRIx32 ", size 0x%8.8" PRIx32 |