Re: [PATCH] media: i2c: add ov01a10 image sensor driver

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

 



Tomi and Sakari,

On 4/19/23 4:21 PM, Tomi Valkeinen wrote:
> On 19/04/2023 11:04, Sakari Ailus wrote:
>> Hi Bingbu,
>>
>> On Wed, Apr 19, 2023 at 03:44:25PM +0800, Bingbu Cao wrote:
>>> Sakari,
>>>
>>> On 4/12/23 8:19 PM, Sakari Ailus wrote:
>>>> Hi Bingbu,
>>>>
>>>> On Wed, Apr 12, 2023 at 07:40:19PM +0800, Bingbu Cao wrote:
>>>>>>> +static int ov01a10_set_format(struct v4l2_subdev *sd,
>>>>>>> +                  struct v4l2_subdev_state *sd_state,
>>>>>>> +                  struct v4l2_subdev_format *fmt)
>>>>>>> +{
>>>>>>> +    struct ov01a10 *ov01a10 = to_ov01a10(sd);
>>>>>>> +    const struct ov01a10_mode *mode;
>>>>>>> +    s32 vblank_def, h_blank;
>>>>>>> +
>>>>>>> +    mode = v4l2_find_nearest_size(supported_modes,
>>>>>>> +                      ARRAY_SIZE(supported_modes), width,
>>>>>>> +                      height, fmt->format.width,
>>>>>>> +                      fmt->format.height);
>>>>>>> +
>>>>>>> +    mutex_lock(&ov01a10->mutex);
>>>>>>> +    ov01a10_update_pad_format(mode, &fmt->format);
>>>>>>
>>>>>> Could you switch to the sub-device state? That is now the preferred way to
>>>>>> serialise access to e.g. the format.
>>>>>>
>>>>>> See e.g.
>>>>>> <URL:https://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git/tree/drivers/media/i2c/ov1063x.c?h=streams/work-v16>.
>>>>>>
>>>>>> The control handler's mutex doubles as a sub-device state mutex.
>>>>>
>>>>> Is it fine to use v4l2_subdev_get_fmt()? Or will it be deprecated soon?
>>>>
>>>> Sure, it's fine to use it.
>>>>
>>>
>>> I tried to use the v4l2_subdev_state_get_stream_format() in set_fmt, but I
>>> see that the pad format of camera sensor was missing in media information.
>>>
>>> - entity 105: ov01a10 3-0036 (1 pad, 1 link)
>>>                type V4L2 subdev subtype Sensor flags 0
>>>                device node name /dev/v4l-subdev8
>>>     pad0: Source
>>>         -> "Intel IPU6 CSI2 2":0 [ENABLED]
>>>
>>> And the link validation cannot work as expected, is there something
>>> missing? My kernel head is Linux 6.3-rc2.
>>>
>>> static int ov01a10_set_format(struct v4l2_subdev *sd,
>>>                   struct v4l2_subdev_state *sd_state,
>>>                   struct v4l2_subdev_format *fmt)
>>> {
>>> ...
>>>     format = v4l2_subdev_state_get_stream_format(sd_state, fmt->pad,
>>>                              fmt->stream);
>>>     if (!format) {
>>>         dev_err(&client->dev, "Failed to get stream format\n");
>>>         return -EINVAL;
>>>     }
>>>
>>> ...
>>>     ov01a10_update_pad_format(mode, &fmt->format);
>>>     *format = fmt->format;
>>>
>>>     return 0;
>>> }
>>
>> v4l2_subdev_state_get_stream_format() will access streams and I presume you
>> won't have any in this case (not even streams support right now as it's a
>> sensor driver with a single sub-device).
>>
> 
> This perhaps gives a better example on how to migrate to subdev state:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/media/i2c/imx290.c?id=a2514b9a634ac0a2cfbc329822b8fb58ffe23a80

Got it, thank you!

> 
>  Tomi
> 

-- 
Best regards,
Bingbu Cao



[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