[PATCH 1/3] mx2_camera: Add soc_camera support for i.MX25/i.MX27

Baruch Siach baruch at tkos.co.il
Mon May 17 09:58:00 EDT 2010


Hi Sascha,

Thanks for your comments.

On Mon, May 17, 2010 at 09:27:20AM +0200, Sascha Hauer wrote:
> On Wed, May 12, 2010 at 09:02:29PM +0200, Guennadi Liakhovetski wrote:
> > Hi Baruch
> > 
> > Thanks for eventually mainlining this driver! A couple of comments below. 
> > Sascha, would be great, if you could get it tested on imx27 with and 
> > without emma.
> 
> I will see what I can do. Testing and probably breathing life into a
> camera driver usually takes me two days given that the platform support
> is very outdated. I hope our customer is interested in this, then it
> would be possible to test it.
> 
> > BTW, if you say, that you use emma to avoid using the 
> > standard DMA controller, why would anyone want not to use emma? Resource 
> > conflict? There is also a question for you down in the comments, please, 
> > skim over.
> 
> I originally did not know how all the components should work together.
> Now I think it's the right way to use the EMMA to be able to scale
> images and to do colour conversions (which does not work with our Bayer
> format cameras, so I cannot test it).

So can I remove the non EMMA code from this driver? This will simplify the 
code quite a bit.

[snip]

> > > +static int mclk_get_divisor(struct mx2_camera_dev *pcdev)
> > > +{
> > > +	dev_info(pcdev->dev, "%s not implemented. Running at max speed\n",
> > > +			__func__);
> > 
> > Hm, why is this unimplemented?
> > 
> > > +
> > > +#if 0
> > > +	unsigned int mclk = pcdev->pdata->clk_csi;
> > > +	unsigned int pclk = clk_get_rate(pcdev->clk_csi);
> > > +	int i;
> > > +
> > > +	dev_dbg(pcdev->dev, "%s: %ld %ld\n", __func__, mclk, pclk);
> > > +
> > > +	for (i = 0; i < 0xf; i++)
> > > +		if ((i + 1) * 2 * mclk <= pclk)
> > > +			break;
> > 
> > This doesn't look right. You increment the counter i, and terminate the
> > loop as soon as "(i + 1) * 2 * mclk <= pclk". Obviously, if 2 * mclk <= pclk,
> > this will terminate immediately, otherwise it will run until the end and
> > return 0xf without satisfying the condition. What exactly are you trying to
> > achieve? Find the _largest_ i, such that "(i + 1) * 2 * mclk <= pclk"? Then
> > why not just do "i = pclk / 2 / mclk - 1"?
> > 
> > > +	return i;
> > > +#endif
> > > +	return 0;
> > > +}

Can you shed some light on this?

Thanks,
baruch

-- 
                                                     ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -



More information about the linux-arm-kernel mailing list