From: Patrice Chotard <patrice.chotard@xxxxxxxxxxx> Put code responsible of block unlocking in spinand_block_unlock(). This function will be needed by the future SPI-NAND resume ops. Signed-off-by: Patrice Chotard <patrice.chotard@xxxxxxxxxxx> --- drivers/mtd/nand/spi/core.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c index 17f63f95f4a2..095742e5bc2b 100644 --- a/drivers/mtd/nand/spi/core.c +++ b/drivers/mtd/nand/spi/core.c @@ -1074,12 +1074,30 @@ static int spinand_detect(struct spinand_device *spinand) return 0; } +static int spinand_block_unlock(struct spinand_device *spinand) +{ + struct nand_device *nand = spinand_to_nand(spinand); + int ret = 0, i; + + for (i = 0; i < nand->memorg.ntargets; i++) { + ret = spinand_select_target(spinand, i); + if (ret) + return ret; + + ret = spinand_lock_block(spinand, BL_ALL_UNLOCKED); + if (ret) + return ret; + } + + return ret; +} + static int spinand_init(struct spinand_device *spinand) { struct device *dev = &spinand->spimem->spi->dev; struct mtd_info *mtd = spinand_to_mtd(spinand); struct nand_device *nand = mtd_to_nanddev(mtd); - int ret, i; + int ret; /* * We need a scratch buffer because the spi_mem interface requires that @@ -1137,15 +1155,9 @@ static int spinand_init(struct spinand_device *spinand) } /* After power up, all blocks are locked, so unlock them here. */ - for (i = 0; i < nand->memorg.ntargets; i++) { - ret = spinand_select_target(spinand, i); - if (ret) - goto err_manuf_cleanup; - - ret = spinand_lock_block(spinand, BL_ALL_UNLOCKED); - if (ret) - goto err_manuf_cleanup; - } + ret = spinand_block_unlock(spinand); + if (ret) + goto err_manuf_cleanup; ret = nanddev_init(nand, &spinand_ops, THIS_MODULE); if (ret) -- 2.17.1