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

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

 



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;
}

-- 
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