diff options
Diffstat (limited to 'libflash/libflash.c')
-rw-r--r-- | libflash/libflash.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libflash/libflash.c b/libflash/libflash.c index 5b8a0ac..b5eaff5 100644 --- a/libflash/libflash.c +++ b/libflash/libflash.c @@ -92,6 +92,10 @@ int fl_wren(struct spi_flash_ctrl *ct) int i, rc; uint8_t stat; + /* If lower level interface not implmented, just return */ + if (!ct->cmd_wr) + return 0; + /* Some flashes need it to be hammered */ for (i = 0; i < 1000; i++) { rc = ct->cmd_wr(ct, CMD_WREN, false, 0, NULL, 0); @@ -675,6 +679,11 @@ static int flash_set_4b(struct flash_chip *c, bool enable) /* Ignore the error & move on (could be wrprotect chip) */ } + /* Don't have low level interface, assume all is well */ + if (!ct->cmd_wr) + return 0; + + /* Ignore error in case chip is write protected */ return ct->cmd_wr(ct, enable ? CMD_EN4B : CMD_EX4B, false, 0, NULL, 0); @@ -758,7 +767,6 @@ static int flash_configure(struct flash_chip *c) return rc; } } - /* Set controller to 3b mode if mode switch is supported */ if (ct->set_4b) { FL_DBG("LIBFLASH: Disabling controller 4B mode...\n"); |