Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24c9cd8f authored by Arvind Yadav's avatar Arvind Yadav Committed by Boris Brezillon
Browse files

mtd: oxnas_nand: Handle clk_prepare_enable/clk_disable_unprepare.



- clk_prepare_enable() can fail here and we must check its return value.
 - oxnas_nand_probe() can fail here and we must disable clock.

Signed-off-by: default avatarArvind Yadav <arvind.yadav.cs@gmail.com>
Acked-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
parent c044179e
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -112,14 +112,19 @@ static int oxnas_nand_probe(struct platform_device *pdev)
	if (count > 1)
		return -EINVAL;

	clk_prepare_enable(oxnas->clk);
	err = clk_prepare_enable(oxnas->clk);
	if (err)
		return err;

	device_reset_optional(&pdev->dev);

	for_each_child_of_node(np, nand_np) {
		chip = devm_kzalloc(&pdev->dev, sizeof(struct nand_chip),
				    GFP_KERNEL);
		if (!chip)
			return -ENOMEM;
		if (!chip) {
			err = -ENOMEM;
			goto err_clk_unprepare;
		}

		chip->controller = &oxnas->base;

@@ -139,12 +144,12 @@ static int oxnas_nand_probe(struct platform_device *pdev)
		/* Scan to find existence of the device */
		err = nand_scan(mtd, 1);
		if (err)
			return err;
			goto err_clk_unprepare;

		err = mtd_device_register(mtd, NULL, 0);
		if (err) {
			nand_release(mtd);
			return err;
			goto err_clk_unprepare;
		}

		oxnas->chips[nchips] = chip;
@@ -152,12 +157,18 @@ static int oxnas_nand_probe(struct platform_device *pdev)
	}

	/* Exit if no chips found */
	if (!nchips)
		return -ENODEV;
	if (!nchips) {
		err = -ENODEV;
		goto err_clk_unprepare;
	}

	platform_set_drvdata(pdev, oxnas);

	return 0;

err_clk_unprepare:
	clk_disable_unprepare(oxnas->clk);
	return err;
}

static int oxnas_nand_remove(struct platform_device *pdev)