[PATCH v2] crypto/amlogic: Use devm APIs for clock management
Mohamad Raizudeen
raizudeen.kerneldev at gmail.com
Tue Sep 15 21:55:54 PDT 2026
On Tue, Sep 01, 2026 at 08:12:52AM +0530, Mohamad Raizudeen wrote:
> The driver currently gets the core clock and manually enables it using
> clk_prepare_enable(). This requires matching calls to
> clk_disable_unprepare() in the error paths and remove function.
>
> Switch to devm_clk_get_enabled() instead. This lets the kernel handle
> enabling and disabling the clock automatically, which allow us to drop
> the manual cleanup code and keeps the probe function simple.
>
> Reported-by: kernel test robot <lkp at intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202608310329.QgxCCMs1-lkp@intel.com/
> Signed-off-by: Mohamad Raizudeen <raizudeen.kerneldev at gmail.com>
> ---
> Changes in v2:
> - Dropped the devm_crypto_engine_alloc_init() change due to build
> failure reported by the kernel test robot.
> - Kept the devm_clk_get_enabled() clock cleanup as the sole focus of
> this patch.
> - Link to v1: https://lore.kernel.org/linux-crypto/20260821151303.8150-1-raizudeen.kerneldev@gmail.com/T/#u
>
> drivers/crypto/amlogic/amlogic-gxl-core.c | 16 +++-------------
> 1 file changed, 3 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/crypto/amlogic/amlogic-gxl-core.c b/drivers/crypto/amlogic/amlogic-gxl-core.c
> index 169c6eeb51e5..6f4c62ddaf89 100644
> --- a/drivers/crypto/amlogic/amlogic-gxl-core.c
> +++ b/drivers/crypto/amlogic/amlogic-gxl-core.c
> @@ -243,10 +243,10 @@ static int meson_crypto_probe(struct platform_device *pdev)
> if (IS_ERR(mc->base))
> return PTR_ERR(mc->base);
>
> - mc->busclk = devm_clk_get(&pdev->dev, "blkmv");
> + mc->busclk = devm_clk_get_enabled(&pdev->dev, "blkmv");
> if (IS_ERR(mc->busclk)) {
> err = PTR_ERR(mc->busclk);
> - dev_err(&pdev->dev, "Cannot get core clock err=%d\n", err);
> + dev_err(&pdev->dev, "Cannot get/enable core clock err=%d\n", err);
> return err;
> }
>
> @@ -261,15 +261,9 @@ static int meson_crypto_probe(struct platform_device *pdev)
> return err;
> }
>
> - err = clk_prepare_enable(mc->busclk);
> - if (err != 0) {
> - dev_err(&pdev->dev, "Cannot prepare_enable busclk\n");
> - return err;
> - }
> -
> err = meson_allocate_chanlist(mc);
> if (err)
> - goto error_flow;
> + return err;
>
> err = meson_register_algs(mc);
> if (err)
> @@ -290,8 +284,6 @@ static int meson_crypto_probe(struct platform_device *pdev)
> error_alg:
> meson_unregister_algs(mc);
> meson_free_chanlist(mc, MAXFLOW - 1);
> -error_flow:
> - clk_disable_unprepare(mc->busclk);
> return err;
> }
>
> @@ -306,8 +298,6 @@ static void meson_crypto_remove(struct platform_device *pdev)
> meson_unregister_algs(mc);
>
> meson_free_chanlist(mc, MAXFLOW - 1);
> -
> - clk_disable_unprepare(mc->busclk);
> }
>
> static const struct of_device_id meson_crypto_of_match_table[] = {
> --
> 2.53.0
>
Hi,
Just following up on this patch. Please let me know if you have any
feedback or if further changes are needed.
Thanks,
Mohamad Raizudeen
More information about the linux-amlogic
mailing list