[alsa-devel] [PATCH] ASoC: imx-sgtl5000: Use devm_clk_get()

Shawn Guo shawn.guo at linaro.org
Tue Jun 11 02:44:40 CEST 2013


On Mon, Jun 10, 2013 at 01:26:05PM -0300, Fabio Estevam wrote:
> Commit 9e13f345 (ASoC: sgtl5000: Let the codec acquire its clock) removed the 
> clk_put calls.
> 
> Let's use devm_clk_get() instead, so that we do not need to call them anymore.
> 
> Signed-off-by: Fabio Estevam <fabio.estevam at freescale.com>
> ---
>  sound/soc/fsl/imx-sgtl5000.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/sound/soc/fsl/imx-sgtl5000.c b/sound/soc/fsl/imx-sgtl5000.c
> index 823151b..7a8bc12 100644
> --- a/sound/soc/fsl/imx-sgtl5000.c
> +++ b/sound/soc/fsl/imx-sgtl5000.c
> @@ -128,7 +128,7 @@ static int imx_sgtl5000_probe(struct platform_device *pdev)
>  		goto fail;
>  	}
>  
> -	data->codec_clk = clk_get(&codec_dev->dev, NULL);
> +	data->codec_clk = devm_clk_get(&codec_dev->dev, NULL);

I do not think the change is correct.  It only works if the struct *dev
is what imx_sgtl5000 platform_device points to, that is pdev->dev here.
However what you pass here is codec's.  So when imx_sgtl5000_probe()
fails or imx_sgtl5000 module is removed, clk_put() will not be called.
And if I remember correctly, that's the reason why devm_clk_get() wasn't
used here in the first place.

Shawn

>  	if (IS_ERR(data->codec_clk))
>  		goto fail;
>  
> -- 
> 1.8.1.2
> 
> 



More information about the Alsa-devel mailing list