@@ -206,7 +206,7 @@ static int gpio_nand_probe(struct platform_device *pdev)
struct nand_chip *chip;
struct resource *res;
struct mtd_part_parser_data ppdata = {};
- int ret = 0;
+ int ret;
if (!pdev->dev.of_node && !pdev->dev.platform_data)
return -EINVAL;
@@ -282,23 +282,20 @@ static int gpio_nand_probe(struct platform_device *pdev)
gpio_nand_set_wp(gpiomtd, 1);
- if (nand_scan(&gpiomtd->mtd_info, 1)) {
- ret = -ENXIO;
- goto err_wp;
+ ret = nand_scan(&gpiomtd->mtd_info, 1);
+ if (!ret) {
+ if (gpiomtd->plat.adjust_parts)
+ gpiomtd->plat.adjust_parts(&gpiomtd->plat,
+ gpiomtd->mtd_info.size);
+
+ ppdata.of_node = pdev->dev.of_node;
+ ret = mtd_device_parse_register(&gpiomtd->mtd_info, NULL,
+ &ppdata, gpiomtd->plat.parts,
+ gpiomtd->plat.num_parts);
+ if (!ret)
+ return 0;
}
- if (gpiomtd->plat.adjust_parts)
- gpiomtd->plat.adjust_parts(&gpiomtd->plat,
- gpiomtd->mtd_info.size);
-
- ppdata.of_node = pdev->dev.of_node;
- ret = mtd_device_parse_register(&gpiomtd->mtd_info, NULL, &ppdata,
- gpiomtd->plat.parts,
- gpiomtd->plat.num_parts);
- if (!ret)
- return 0;
-
-err_wp:
gpio_nand_set_wp(gpiomtd, 0);
return ret;
Signed-off-by: Alexander Shiyan <shc_work@mail.ru> --- drivers/mtd/nand/gpio.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-)