lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 24 Jun 2020 12:08:06 +0200
From:   Hans Verkuil <hverkuil@...all.nl>
To:     Ramzi BEN MEFTAH <rbmeftah@...adit-jv.com>,
        Kieran Bingham <kieran.bingham@...asonboard.com>,
        Mauro Carvalho Chehab <mchehab@...nel.org>,
        Hans Verkuil <hans.verkuil@...co.com>,
        Sakari Ailus <sakari.ailus@...ux.intel.com>,
        Janusz Krzysztofik <jmkrzyszt@...il.com>,
        Jacopo Mondi <jacopo@...ndi.org>,
        Steve Longerbeam <steve_longerbeam@...tor.com>,
        Ezequiel Garcia <ezequiel@...labora.com>,
        Arnd Bergmann <arnd@...db.de>, linux-media@...r.kernel.org,
        linux-kernel@...r.kernel.org
Cc:     Michael Rodin <mrodin@...adit-jv.com>, efriedrich@...adit-jv.com,
        erosca@...adit-jv.com
Subject: Re: [PATCH 1/3] v4l2-subdev: Add subdev ioctl support for
 ENUM/GET/SET INPUT

On 16/06/2020 12:00, Ramzi BEN MEFTAH wrote:
> From: Steve Longerbeam <steve_longerbeam@...tor.com>
> 
> This commit enables VIDIOC_ENUMINPUT, VIDIOC_G_INPUT, and VIDIOC_S_INPUT
> ioctls for use via v4l2 subdevice node.
> 
> This commit should probably not be pushed upstream, because the (old)
> idea of video inputs conflicts with the newer concept of establishing
> media links between src->sink pads.
> 
> However it might make sense for some subdevices to support enum/get/set
> inputs. One example would be the analog front end subdevice for the
> ADV748x. By providing these ioctls, selecting the ADV748x analog inputs
> can be done without requiring the implementation of media entities that
> would define the analog source for which to establish a media link.
> 
> Signed-off-by: Steve Longerbeam <steve_longerbeam@...tor.com>

Nacked-by: Hans Verkuil <hverkuil-cisco@...all.nl>

This doesn't work: these ioctls refer to physical inputs on a backplane
of a device. But subdevices have no idea about that. This is high-level
information that is typically only known to a bridge driver based on
board information.

For PCI/USB drivers this comes from card definitions in the driver itself.

For platform drivers this should come from the device tree, but this hasn't
been fully implemented yet.

So if this is something that you want to implement, then look at:

Documentation/devicetree/bindings/display/connector/hdmi-connector.txt

and add this to the DT for your board, and implement code to query this
in the platform driver.

Regards,

	Hans

> ---
>  drivers/media/v4l2-core/v4l2-subdev.c |  9 +++++++++
>  include/media/v4l2-subdev.h           | 11 +++++++++++
>  2 files changed, 20 insertions(+)
> 
> diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c
> index 6b989fe..73fbfe9 100644
> --- a/drivers/media/v4l2-core/v4l2-subdev.c
> +++ b/drivers/media/v4l2-core/v4l2-subdev.c
> @@ -378,6 +378,15 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg)
>  			return -ENOTTY;
>  		return v4l2_querymenu(vfh->ctrl_handler, arg);
>  
> +	case VIDIOC_ENUMINPUT:
> +		return v4l2_subdev_call(sd, video, enuminput, arg);
> +
> +	case VIDIOC_G_INPUT:
> +		return v4l2_subdev_call(sd, video, g_input, arg);
> +
> +	case VIDIOC_S_INPUT:
> +		return v4l2_subdev_call(sd, video, s_input, *(u32 *)arg);
> +
>  	case VIDIOC_G_CTRL:
>  		if (!vfh->ctrl_handler)
>  			return -ENOTTY;
> diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
> index f7fe78a..6e1a9cd 100644
> --- a/include/media/v4l2-subdev.h
> +++ b/include/media/v4l2-subdev.h
> @@ -383,6 +383,14 @@ struct v4l2_mbus_frame_desc {
>   * @g_input_status: get input status. Same as the status field in the
>   *	&struct &v4l2_input
>   *
> + * @enuminput: enumerate inputs. Should return the same input status as
> + *      @g_input_status if the passed input index is the currently active
> + *      input.
> + *
> + * @g_input: returns the currently active input index.
> + *
> + * @s_input: set the active input.
> + *
>   * @s_stream: used to notify the driver that a video stream will start or has
>   *	stopped.
>   *
> @@ -423,6 +431,9 @@ struct v4l2_subdev_video_ops {
>  	int (*g_tvnorms)(struct v4l2_subdev *sd, v4l2_std_id *std);
>  	int (*g_tvnorms_output)(struct v4l2_subdev *sd, v4l2_std_id *std);
>  	int (*g_input_status)(struct v4l2_subdev *sd, u32 *status);
> +	int (*enuminput)(struct v4l2_subdev *sd, struct v4l2_input *input);
> +	int (*g_input)(struct v4l2_subdev *sd, u32 *index);
> +	int (*s_input)(struct v4l2_subdev *sd, u32 index);
>  	int (*s_stream)(struct v4l2_subdev *sd, int enable);
>  	int (*g_pixelaspect)(struct v4l2_subdev *sd, struct v4l2_fract *aspect);
>  	int (*g_frame_interval)(struct v4l2_subdev *sd,
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ