Re: [PATCH v2] media: rcar-vin: add G/S_PARM ioctls

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

 



Hi Jacopo,

On 28/09/2021 10:43, Jacopo Mondi wrote:
> Hello
>   explicit Cc Hans, as I recall the usage of s/g_parm was deprecated
> and discouraged in mainline.

It's perfectly fine to use it, but for the non-MC case only. Which is what
this patch does, so I'm accepting it.

s/g_parm isn't deprecated for non-MC drivers, it's ugly but it's the only
way to set or report the framerate for such drivers.

Regards,

	Hans

> 
> Hans: Support for g/s_param is required by Nikita to maintain
> compatibility with (out of tree?) subdevice drivers. Should we add it
> to the mainline receiver driver ?
> 
> What other API should be used to control the subdevice framerate ?
> Should it go through VIDIOC_SUBDEV_S_FRAME_INTERVAL instead ?
> 
> Thanks
>    j
> 
> On Fri, Sep 24, 2021 at 04:51:38PM +0300, Nikita Yushchenko wrote:
>> From: Vladimir Barinov <vladimir.barinov@xxxxxxxxxxxxxxxxxx>
>>
>> This adds g/s_parm ioctls for parallel interface.
>>
>> Signed-off-by: Vladimir Barinov <vladimir.barinov@xxxxxxxxxxxxxxxxxx>
>> Signed-off-by: Nikita Yushchenko <nikita.yoush@xxxxxxxxxxxxxxxxxx>
>> ---
>> Changes from v1:
>> - use &vin->vdev to access vin's struct video_device
>>
>>  drivers/media/platform/rcar-vin/rcar-v4l2.c | 21 +++++++++++++++++++++
>>  1 file changed, 21 insertions(+)
>>
>> diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c b/drivers/media/platform/rcar-vin/rcar-v4l2.c
>> index bdeff51bf768..a5bfa76fdac6 100644
>> --- a/drivers/media/platform/rcar-vin/rcar-v4l2.c
>> +++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c
>> @@ -527,6 +527,24 @@ static int rvin_s_selection(struct file *file, void *fh,
>>  	return 0;
>>  }
>>
>> +static int rvin_g_parm(struct file *file, void *priv,
>> +		       struct v4l2_streamparm *parm)
>> +{
>> +	struct rvin_dev *vin = video_drvdata(file);
>> +	struct v4l2_subdev *sd = vin_to_source(vin);
>> +
>> +	return v4l2_g_parm_cap(&vin->vdev, sd, parm);
>> +}
>> +
>> +static int rvin_s_parm(struct file *file, void *priv,
>> +		       struct v4l2_streamparm *parm)
>> +{
>> +	struct rvin_dev *vin = video_drvdata(file);
>> +	struct v4l2_subdev *sd = vin_to_source(vin);
>> +
>> +	return v4l2_s_parm_cap(&vin->vdev, sd, parm);
>> +}
>> +
>>  static int rvin_g_pixelaspect(struct file *file, void *priv,
>>  			      int type, struct v4l2_fract *f)
>>  {
>> @@ -743,6 +761,9 @@ static const struct v4l2_ioctl_ops rvin_ioctl_ops = {
>>  	.vidioc_g_selection		= rvin_g_selection,
>>  	.vidioc_s_selection		= rvin_s_selection,
>>
>> +	.vidioc_g_parm			= rvin_g_parm,
>> +	.vidioc_s_parm			= rvin_s_parm,
>> +
>>  	.vidioc_g_pixelaspect		= rvin_g_pixelaspect,
>>
>>  	.vidioc_enum_input		= rvin_enum_input,
>> --
>> 2.30.2
>>




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux