Commit 065c547d authored by Huan Yang's avatar Huan Yang Committed by Herbert Xu
Browse files

hwrng: mxc-rnga - Use devm_clk_get_enabled() helpers



The devm_clk_get_enabled() helpers:
    - call devm_clk_get()
    - call clk_prepare_enable() and register what is needed in order to
     call clk_disable_unprepare() when needed, as a managed resource.

This simplifies the code and avoids the calls to clk_disable_unprepare().

Signed-off-by: default avatarHuan Yang <link@vivo.com>
Reviewed-by: default avatarMartin Kaiser <martin@kaiser.cx>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent f716045f
Loading
Loading
Loading
Loading
+3 −13
Original line number Diff line number Diff line
@@ -147,33 +147,25 @@ static int mxc_rnga_probe(struct platform_device *pdev)
	mxc_rng->rng.data_present = mxc_rnga_data_present;
	mxc_rng->rng.data_read = mxc_rnga_data_read;

	mxc_rng->clk = devm_clk_get(&pdev->dev, NULL);
	mxc_rng->clk = devm_clk_get_enabled(&pdev->dev, NULL);
	if (IS_ERR(mxc_rng->clk)) {
		dev_err(&pdev->dev, "Could not get rng_clk!\n");
		return PTR_ERR(mxc_rng->clk);
	}

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

	mxc_rng->mem = devm_platform_ioremap_resource(pdev, 0);
	if (IS_ERR(mxc_rng->mem)) {
		err = PTR_ERR(mxc_rng->mem);
		goto err_ioremap;
		return err;
	}

	err = hwrng_register(&mxc_rng->rng);
	if (err) {
		dev_err(&pdev->dev, "MXC RNGA registering failed (%d)\n", err);
		goto err_ioremap;
		return err;
	}

	return 0;

err_ioremap:
	clk_disable_unprepare(mxc_rng->clk);
	return err;
}

static void mxc_rnga_remove(struct platform_device *pdev)
@@ -181,8 +173,6 @@ static void mxc_rnga_remove(struct platform_device *pdev)
	struct mxc_rng *mxc_rng = platform_get_drvdata(pdev);

	hwrng_unregister(&mxc_rng->rng);

	clk_disable_unprepare(mxc_rng->clk);
}

static const struct of_device_id mxc_rnga_of_match[] = {