[alsa-devel] [PATCH] ASoC: ux500: adjust devm usage

Ulf Hansson ulf.hansson at linaro.org
Mon Jul 20 13:25:20 CEST 2015


On 19 July 2015 at 21:12, Julia Lawall <Julia.Lawall at lip6.fr> wrote:
> The explicit call to devm_regulator_put in the probe and remove functions
> does not seem to be necessary.  In particular, the functions
> prcmu_qos_remove_requirement and ux500_msp_i2s_cleanup_msp in the remove
> function seem to do nothing that can interfere with devm_regulator_put,
> making it safe to allow devm_regulator_put to occur after the end of the
> remove function.
>
> Convert the calls to clk_get to devm_clk_get, and remove the corresponding
> calls to clk_put in the probe and remove functions.
>
> Replace various gotos by direct returns, and drop unneeded labels.
>
> Signed-off-by: Julia Lawall <Julia.Lawall at lip6.fr>

Reviewed-by: Ulf Hansson <ulf.hansson at linaro.org>

Kind regards
Uffe

>
> ---
>  sound/soc/ux500/ux500_msp_dai.c |   29 ++++++++++-------------------
>  1 file changed, 10 insertions(+), 19 deletions(-)
>
> diff --git a/sound/soc/ux500/ux500_msp_dai.c b/sound/soc/ux500/ux500_msp_dai.c
> index 978f2d7..f5df08d 100644
> --- a/sound/soc/ux500/ux500_msp_dai.c
> +++ b/sound/soc/ux500/ux500_msp_dai.c
> @@ -773,20 +773,22 @@ static int ux500_msp_drv_probe(struct platform_device *pdev)
>         }
>         prcmu_qos_add_requirement(PRCMU_QOS_APE_OPP, (char *)pdev->name, 50);
>
> -       drvdata->pclk = clk_get(&pdev->dev, "apb_pclk");
> +       drvdata->pclk = devm_clk_get(&pdev->dev, "apb_pclk");
>         if (IS_ERR(drvdata->pclk)) {
>                 ret = (int)PTR_ERR(drvdata->pclk);
> -               dev_err(&pdev->dev, "%s: ERROR: clk_get of pclk failed (%d)!\n",
> +               dev_err(&pdev->dev,
> +                       "%s: ERROR: devm_clk_get of pclk failed (%d)!\n",
>                         __func__, ret);
> -               goto err_pclk;
> +               return ret;
>         }
>
> -       drvdata->clk = clk_get(&pdev->dev, NULL);
> +       drvdata->clk = devm_clk_get(&pdev->dev, NULL);
>         if (IS_ERR(drvdata->clk)) {
>                 ret = (int)PTR_ERR(drvdata->clk);
> -               dev_err(&pdev->dev, "%s: ERROR: clk_get failed (%d)!\n",
> +               dev_err(&pdev->dev,
> +                       "%s: ERROR: devm_clk_get failed (%d)!\n",
>                         __func__, ret);
> -               goto err_clk;
> +               return ret;
>         }
>
>         ret = ux500_msp_i2s_init_msp(pdev, &drvdata->msp,
> @@ -795,7 +797,7 @@ static int ux500_msp_drv_probe(struct platform_device *pdev)
>                 dev_err(&pdev->dev,
>                         "%s: ERROR: Failed to init MSP-struct (%d)!",
>                         __func__, ret);
> -               goto err_init_msp;
> +               return ret;
>         }
>         dev_set_drvdata(&pdev->dev, drvdata);
>
> @@ -804,7 +806,7 @@ static int ux500_msp_drv_probe(struct platform_device *pdev)
>         if (ret < 0) {
>                 dev_err(&pdev->dev, "Error: %s: Failed to register MSP%d!\n",
>                         __func__, drvdata->msp->id);
> -               goto err_init_msp;
> +               return ret;
>         }
>
>         ret = ux500_pcm_register_platform(pdev);
> @@ -819,13 +821,6 @@ static int ux500_msp_drv_probe(struct platform_device *pdev)
>
>  err_reg_plat:
>         snd_soc_unregister_component(&pdev->dev);
> -err_init_msp:
> -       clk_put(drvdata->clk);
> -err_clk:
> -       clk_put(drvdata->pclk);
> -err_pclk:
> -       devm_regulator_put(drvdata->reg_vape);
> -
>         return ret;
>  }
>
> @@ -837,12 +832,8 @@ static int ux500_msp_drv_remove(struct platform_device *pdev)
>
>         snd_soc_unregister_component(&pdev->dev);
>
> -       devm_regulator_put(drvdata->reg_vape);
>         prcmu_qos_remove_requirement(PRCMU_QOS_APE_OPP, "ux500_msp_i2s");
>
> -       clk_put(drvdata->clk);
> -       clk_put(drvdata->pclk);
> -
>         ux500_msp_i2s_cleanup_msp(pdev, drvdata->msp);
>
>         return 0;
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


More information about the Alsa-devel mailing list