On 19 July 2015 at 21:12, Julia Lawall <Julia.Lawall@xxxxxxx> 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@xxxxxxx> Reviewed-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> 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@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html