diff options
-rw-r--r-- | drivers/mtd/spi/sf_ops.c | 18 | ||||
-rw-r--r-- | include/spi_flash.h | 2 |
2 files changed, 13 insertions, 7 deletions
diff --git a/drivers/mtd/spi/sf_ops.c b/drivers/mtd/spi/sf_ops.c index d8324645b2..384224d75a 100644 --- a/drivers/mtd/spi/sf_ops.c +++ b/drivers/mtd/spi/sf_ops.c @@ -268,9 +268,12 @@ int spi_flash_cmd_erase_ops(struct spi_flash *flash, u32 offset, size_t len) return -1; } - if (flash->flash_is_locked(flash, offset, len) > 0) { - printf("offset 0x%x is protected and cannot be erased\n", offset); - return -EINVAL; + if (flash->flash_is_locked) { + if (flash->flash_is_locked(flash, offset, len) > 0) { + printf("offset 0x%x is protected and cannot be erased\n", + offset); + return -EINVAL; + } } cmd[0] = flash->erase_cmd; @@ -315,9 +318,12 @@ int spi_flash_cmd_write_ops(struct spi_flash *flash, u32 offset, page_size = flash->page_size; - if (flash->flash_is_locked(flash, offset, len) > 0) { - printf("offset 0x%x is protected and cannot be written\n", offset); - return -EINVAL; + if (flash->flash_is_locked) { + if (flash->flash_is_locked(flash, offset, len) > 0) { + printf("offset 0x%x is protected and cannot be written\n", + offset); + return -EINVAL; + } } cmd[0] = flash->write_cmd; diff --git a/include/spi_flash.h b/include/spi_flash.h index 0ae0062d12..f25b3e7819 100644 --- a/include/spi_flash.h +++ b/include/spi_flash.h @@ -237,7 +237,7 @@ static inline int spi_flash_erase(struct spi_flash *flash, u32 offset, static inline int spi_flash_protect(struct spi_flash *flash, u32 ofs, u32 len, bool prot) { - if (!flash->flash_lock) + if (!flash->flash_lock || !flash->flash_unlock) return -EOPNOTSUPP; if (prot) |