All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: "linux-media@vger.kernel.org" <linux-media@vger.kernel.org>
Subject: Re: [RFC] Querycap for subdevs, finding MC from device nodes
Date: Fri, 17 Apr 2015 18:07:22 +0300	[thread overview]
Message-ID: <1768917.5uFxr7arIJ@avalon> (raw)
In-Reply-To: <550D2EB9.5090806@xs4all.nl>

Hi Hans,

On Saturday 21 March 2015 09:41:29 Hans Verkuil wrote:
> I've been thinking about extending v4l2-compliance with v4l-subdev tests.
> 
> However, there are a few missing pieces that are needed before this can be
> done.
> 
> First of all is that there is no subdev equivalent to VIDIOC_QUERYCAP, i.e.
> an ioctl that is guaranteed to always be available.
> 
> So I propose the following ioctl:
> 
> VIDIOC_SUBDEV_QUERYCAP(struct v4l2_subdev_capability);
> 
> struct v4l2_subdev_capability {
> 	char name[V4L2_SUBDEV_NAME_SIZE];
> 	__u32 version;			// same as KERNEL_VERSION like QUERYCAP does
> 	__u32 device_caps;
> 	__u32 pads;
> 	__u32 entity_id;
> 	__u32 reserved[40];
> };
> 
> /* This v4l2_subdev is also a media entity and the entity_id field is valid
> */ #define V4L2_SUBDEV_CAP_ENTITY		(1 << 0)
> 
> This will allow v4l2-compliance to discover that this is a bona fide v4l2
> subdevice. All the information in the struct above can be filled in by
> v4l2-subdev.c, no need to change drivers.

This looks quite good to me. There's a prerequisite though, we need to 
formally define the naming scheme for subdevs, otherwise we'll expose yet 
another ill-defined name that will cause issues later.

> The reason I included 'pads' as well is that subdev drivers can have a
> devnode without being an entity, but still support ioctls like
> VIDIOC_SUBDEV_ENUM_MBUS_CODE. In that case v4l2-compliance needs to know
> the number of pads in order to properly test. If it is an entity, then the
> entity information can be obtained from the MC, see below how to find the
> MC.

Shouldn't we make it mandatory for subdevs to be entities if they want to 
expose a subdev node ? Otherwise applications won't be able to find out how 
the subdev relates to other subdevs and v4l2 devices, making the API quite 
shaky in my opinion.

> Note: I think it makes sense to extend VIDIOC_QUERYCAP as well with a
> CAP_ENTITY and an entity_id.
> 
> The next step is to be able to associate a media device with a v4l2-subdev.
> 
> Originally I though of adding the major and minor numbers of the media
> device to the capability struct, but I'd like to do that for
> VIDIOC_QUERYCAP as well, and there are only 3 reserved fields (2 after
> taking one for the entity_id).
> 
> Instead I think we can just implement the MEDIA_IOC_DEVICE_INFO ioctl: this
> returns all info about the media_device, and it can easily be extended to
> include the major and minor number of that device.

Hmmm... I'm not too found of that approach. Can't userspace find the 
corresponding media device through sysfs ? I'd like to point that the common 
use case is to start from the media device and find the entities. Finding the 
media device from a subdev is useful mostly for test tools, but it's not the 
main use case.

> Again, supporting this is easily done in the core, both for regular video
> nodes and for subdev nodes, so drivers do not need to be changed.
> 
> This way you can easily find whether a V4L2 device node is an entity and
> what the associated media controller is. All the information is available,
> we just need to expose it.
> 
> Comments?

Please see above :-)

-- 
Regards,

Laurent Pinchart


  reply	other threads:[~2015-04-17 15:07 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-21  8:41 [RFC] Querycap for subdevs, finding MC from device nodes Hans Verkuil
2015-04-17 15:07 ` Laurent Pinchart [this message]
2015-04-20  8:37   ` Hans Verkuil
2015-04-20 10:39     ` Laurent Pinchart

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1768917.5uFxr7arIJ@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=hverkuil@xs4all.nl \
    --cc=linux-media@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.