[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