Re: em28xx + ov2640 and v4l2-clk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 20.08.2013 15:38, schrieb Laurent Pinchart:
> Hi Mauro,
>
> On Sunday 18 August 2013 12:20:08 Mauro Carvalho Chehab wrote:
>> Em Sun, 18 Aug 2013 13:40:25 +0200 Frank Schäfer escreveu:
>>> Am 17.08.2013 12:51, schrieb Guennadi Liakhovetski:
>>>> Hi Frank,
>>>> As I mentioned on the list, I'm currently on a holiday, so, replying
>>>> briefly.
>>> Sorry, I missed that (can't read all mails on the list).
>>>
>>>> Since em28xx is a USB device, I conclude, that it's supplying clock to
>>>> its components including the ov2640 sensor. So, yes, I think the driver
>>>> should export a V4L2 clock.
>>> Ok, so it's mandatory on purpose ?
>>> I'll take a deeper into the v4l2-clk code and the
>>> em28xx/ov2640/soc-camera interaction this week.
>>> Have a nice holiday !
>> commit 9aea470b399d797e88be08985c489855759c6c60
>> Author: Guennadi Liakhovetski <g.liakhovetski@xxxxxx>
>> Date:   Fri Dec 21 13:01:55 2012 -0300
>>
>>     [media] soc-camera: switch I2C subdevice drivers to use v4l2-clk
>>
>>     Instead of centrally enabling and disabling subdevice master clocks in
>>     soc-camera core, let subdevice drivers do that themselves, using the
>>     V4L2 clock API and soc-camera convenience wrappers.
>>
>>     Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@xxxxxx>
>>     Acked-by: Hans Verkuil <hans.verkuil@xxxxxxxxx>
>>     Acked-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
>>     Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>
>>
>> (c/c the ones that acked with this broken changeset)
>>
>> We need to fix it ASAP or to revert the ov2640 changes, as some em28xx
>> cameras are currently broken on 3.10.
>>
>> I'll also reject other ports to the async API if the drivers are
>> used outside an embedded driver, as no PC driver currently defines
>> any clock source. The same applies to regulators.
>>
>> Guennadi,
>>
>> Next time, please check if the i2c drivers are used outside soc_camera
>> and apply the fixes where needed, as no regressions are allowed.
> We definitely need to check all users of our sensor drivers when making such a 
> change. Mistakes happen, so let's fix them.
>
> Guennadi is on holidays until the end of this week. Would that be too late to 
> fix the issue (given that 3.10 is already broken) ? The fix shouldn't be too 
> complex, registering a dummy V4L2 clock in the em28xx driver should be enough.

I would prefer either a) making the clock optional in the senor
driver(s) or b) implementing a real V4L2 clock.

Reading the soc-camera code, it looks like NULL-pointers for struct
v4l2_clk are handled correctly. so a) should be pretty simple:

    priv->clk = v4l2_clk_get(&client->dev, "mclk");
-   if (IS_ERR(priv->clk)) {
-       ret = PTR_ERR(priv->clk);
-       goto eclkget;
-   }
+   if (IS_ERR(priv->clk))
+       priv->clk = NULL;

Some additional NULL-pointer checks might be necessary, e.g. before
calling v4l2_clk_put().

Concerning b): I'm not yet sure if it is really needed/makes sense...
Who is supposed to configure/enable/disable the clock in a constellation
like em28xx+ov2640 ?
For UXGA for example, the clock needs to be switched to 12MHz, while
24MHz is used for smaller reolutions.
But I'm not sure if it is a good idea to let the sensor driver do the
switch (to define fixed bindings between resoultions and clock frequencies).
Btw, what if a frequency is requested which isn't supported ? Set the
clock to the next nearest supported frequency ?

Regards,
Frank

>  
> v4l2-clk.c should provide a helper function to do so as that will be a pretty 
> common operation.
>

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux