From: Martin Strubel <hackfin@section5.ch>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: linux-media@vger.kernel.org
Subject: Re: v4l2 device property framework in userspace
Date: Mon, 30 May 2011 11:38:48 +0200 [thread overview]
Message-ID: <4DE365A8.9050508@section5.ch> (raw)
In-Reply-To: <201105300932.59570.hverkuil@xs4all.nl>
Hi,
>
> Yes. As long as the sensors are implemented as sub-devices (see
> Documentation/video4linux/v4l2-framework.txt) then you can add lots of custom
> controls to those subdevs that can be exposed to userspace. Writing directly
> to sensor registers from userspace is a no-go. If done correctly using the
> control framework (see Documentation/video4linux/v4l2-controls.txt) this shouldn't
> take a lot of code. The hardest part is probably documentation of those controls.
>
Well, we could generate all the control handlers from XML by writing
appropriate style sheets, but the point is that there are by now a few
hundreds of registers covered up in the current driver. Putting this
into the kernel would horribly bloat it, and this again is a no go on
our embedded system.
Documentation is also generated per property, BTW (as long as the user
fills in the <info> node)
Just to outline again what we're doing: The access to the registers (at
least to the SPI control interface) is in fact in kernel space, just the
handlers (and remember, there are a few 100s of them) are not. This
keeps the kernel layer lean and mean.
For machine vision people, most of the typical v4l2 controls are
irrelevant, but for things like video format, we just pass ioctl calls
to user space via kernel events, handle them, and pass the register
read/write sequence back to the kernel.
What problem do you see doing it this way? There seem to be various uio
based drivers out for v4l2 devices.
For i2c, we access the registers even through the /dev/i2c-X. So far I
see no problem with that, it turned out to provide better latencies (for
the video acquisition) in some scenarios that way. This does not allow
to switch configs in real-time, but this is a hacky task for i2c anyhow.
> ...
>
> That's why you want to always go through a kernel driver instead of mixing
> kernel and userspace.
>
> However, at the moment we do not have the ability to set and active a
> configuration at a specific time. It is something on our TODO list, though.
> You are not the only one that wants this.
>
If we're adapting our stuff to the new framework, it will likely be
opensource, too. Just a few people will need to be convinced..
Cheers,
- Martin
next prev parent reply other threads:[~2011-05-30 9:38 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-29 13:07 v4l2 device property framework in userspace Martin Strubel
2011-05-30 7:32 ` Hans Verkuil
2011-05-30 9:38 ` Martin Strubel [this message]
2011-05-30 10:52 ` Hans Verkuil
2011-05-30 12:07 ` Martin Strubel
2011-05-30 12:53 ` Hans Verkuil
2011-05-30 13:30 ` Martin Strubel
2011-05-31 8:01 ` Hans Verkuil
2011-05-31 8:27 ` Martin Strubel
2011-05-31 10:55 ` Hans Verkuil
2011-05-31 11:33 ` Martin Strubel
2011-05-31 12:58 ` Mauro Carvalho Chehab
2011-06-06 11:00 ` Sakari Ailus
2011-05-31 6:38 ` Kim, HeungJun
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=4DE365A8.9050508@section5.ch \
--to=hackfin@section5.ch \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox