[PATCH RESEND v3 2/2] [media] V4L: atmel-isi: add clk_prepare()/clk_unprepare() functions

Guennadi Liakhovetski g.liakhovetski at gmx.de
Tue Jan 10 06:29:06 EST 2012


Hi Josh

Right, sorry, I missed this one, I somehow developed an idea, that it has 
been merged into the original patch, adding ISI_MCK handling. Now, I also 
notice one detail, that we could improve:

On Tue, 10 Jan 2012, Josh Wu wrote:

> Signed-off-by: Josh Wu <josh.wu at atmel.com>
> Acked-by: Nicolas Ferre <nicolas.ferre at atmel.com>
> ---
> Hi, Mauro
> 
> The first patch of this serie, [PATCH 1/2 v3] V4L: atmel-isi: add code to enable/disable ISI_MCK clock, is already queued in media tree. 
> But this patch (the second one of this serie) is not acked yet. Would it be ok to for you to ack this patch?
> 
> Best Regards,
> Josh Wu
> 
> v2: made the label name to be consistent.
> 
>  drivers/media/video/atmel-isi.c |   15 +++++++++++++++
>  1 files changed, 15 insertions(+), 0 deletions(-)
> 
> diff --git a/drivers/media/video/atmel-isi.c b/drivers/media/video/atmel-isi.c
> index ea4eef4..91ebcfb 100644
> --- a/drivers/media/video/atmel-isi.c
> +++ b/drivers/media/video/atmel-isi.c
> @@ -922,7 +922,9 @@ static int __devexit atmel_isi_remove(struct platform_device *pdev)
>  			isi->fb_descriptors_phys);
>  
>  	iounmap(isi->regs);
> +	clk_unprepare(isi->mck);
>  	clk_put(isi->mck);
> +	clk_unprepare(isi->pclk);
>  	clk_put(isi->pclk);
>  	kfree(isi);
>  
> @@ -955,6 +957,12 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
>  	if (IS_ERR(pclk))
>  		return PTR_ERR(pclk);
>  
> +	ret = clk_prepare(pclk);
> +	if (ret) {
> +		clk_put(pclk);
> +		return ret;

Don't think it's a good idea here. You already have clk_put(pclk) on the 
error handling path below. So, just put a "goto err_clk_prepare_pclk" here 
and the respective error below.

Thanks
Guennadi

> +	}
> +
>  	isi = kzalloc(sizeof(struct atmel_isi), GFP_KERNEL);
>  	if (!isi) {
>  		ret = -ENOMEM;
> @@ -978,6 +986,10 @@ static int __devinit atmel_isi_probe(struct platform_device *pdev)
>  		goto err_clk_get;
>  	}
>  
> +	ret = clk_prepare(isi->mck);
> +	if (ret)
> +		goto err_clk_prepare_mck;
> +
>  	/* Set ISI_MCK's frequency, it should be faster than pixel clock */
>  	ret = clk_set_rate(isi->mck, pdata->mck_hz);
>  	if (ret < 0)
> @@ -1059,10 +1071,13 @@ err_alloc_ctx:
>  			isi->fb_descriptors_phys);
>  err_alloc_descriptors:
>  err_set_mck_rate:
> +	clk_unprepare(isi->mck);
> +err_clk_prepare_mck:
>  	clk_put(isi->mck);
>  err_clk_get:
>  	kfree(isi);
>  err_alloc_isi:
> +	clk_unprepare(pclk);
>  	clk_put(pclk);
>  
>  	return ret;
> -- 
> 1.6.3.3
> 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/



More information about the linux-arm-kernel mailing list