mtd: nuc900_nand: remove redundant return value check of platform_get_resource()
[firefly-linux-kernel-4.4.55.git] / drivers / mtd / nand / nuc900_nand.c
index 52115151e4a7f325491a3dbf6f16ccd87221b37a..9ee09a8177c67feae055da60dcb033e9bf76f4c4 100644 (file)
@@ -241,12 +241,10 @@ static int nuc900_nand_probe(struct platform_device *pdev)
 {
        struct nuc900_nand *nuc900_nand;
        struct nand_chip *chip;
-       int retval;
        struct resource *res;
 
-       retval = 0;
-
-       nuc900_nand = kzalloc(sizeof(struct nuc900_nand), GFP_KERNEL);
+       nuc900_nand = devm_kzalloc(&pdev->dev, sizeof(struct nuc900_nand),
+                                  GFP_KERNEL);
        if (!nuc900_nand)
                return -ENOMEM;
        chip = &(nuc900_nand->chip);
@@ -255,11 +253,9 @@ static int nuc900_nand_probe(struct platform_device *pdev)
        nuc900_nand->mtd.owner  = THIS_MODULE;
        spin_lock_init(&nuc900_nand->lock);
 
-       nuc900_nand->clk = clk_get(&pdev->dev, NULL);
-       if (IS_ERR(nuc900_nand->clk)) {
-               retval = -ENOENT;
-               goto fail1;
-       }
+       nuc900_nand->clk = devm_clk_get(&pdev->dev, NULL);
+       if (IS_ERR(nuc900_nand->clk))
+               return -ENOENT;
        clk_enable(nuc900_nand->clk);
 
        chip->cmdfunc           = nuc900_nand_command_lp;
@@ -272,57 +268,29 @@ static int nuc900_nand_probe(struct platform_device *pdev)
        chip->ecc.mode          = NAND_ECC_SOFT;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res) {
-               retval = -ENXIO;
-               goto fail1;
-       }
-
-       if (!request_mem_region(res->start, resource_size(res), pdev->name)) {
-               retval = -EBUSY;
-               goto fail1;
-       }
-
-       nuc900_nand->reg = ioremap(res->start, resource_size(res));
-       if (!nuc900_nand->reg) {
-               retval = -ENOMEM;
-               goto fail2;
-       }
+       nuc900_nand->reg = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(nuc900_nand->reg))
+               return PTR_ERR(nuc900_nand->reg);
 
        nuc900_nand_enable(nuc900_nand);
 
-       if (nand_scan(&(nuc900_nand->mtd), 1)) {
-               retval = -ENXIO;
-               goto fail3;
-       }
+       if (nand_scan(&(nuc900_nand->mtd), 1))
+               return -ENXIO;
 
        mtd_device_register(&(nuc900_nand->mtd), partitions,
                            ARRAY_SIZE(partitions));
 
        platform_set_drvdata(pdev, nuc900_nand);
 
-       return retval;
-
-fail3: iounmap(nuc900_nand->reg);
-fail2: release_mem_region(res->start, resource_size(res));
-fail1: kfree(nuc900_nand);
-       return retval;
+       return 0;
 }
 
 static int nuc900_nand_remove(struct platform_device *pdev)
 {
        struct nuc900_nand *nuc900_nand = platform_get_drvdata(pdev);
-       struct resource *res;
 
        nand_release(&nuc900_nand->mtd);
-       iounmap(nuc900_nand->reg);
-
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       release_mem_region(res->start, resource_size(res));
-
        clk_disable(nuc900_nand->clk);
-       clk_put(nuc900_nand->clk);
-
-       kfree(nuc900_nand);
 
        return 0;
 }