Re: Media controller: sysfs vs ioctl

2009-10-11 Thread Laurent Pinchart
On Monday 21 September 2009 19:23:54 Sakari Ailus wrote:
 Hans Verkuil wrote:
  On Sunday 13 September 2009 08:13:04 Nathaniel Kim wrote:
  2009. 9. 12., 오전 7:21, Hans Verkuil 작성:
 
  Hans,
 
  First of all I'm very sorry that I had not enough time to go through
  your new RFC. I'll checkout right after posting this mail.
 
  I think this is a good approach and I also had in my mind that sysfs
  might be a good method if we could control and monitor through this.
  Recalling memory when we had a talk in San Francisco, I was frustrated
  that there is no way to catch events from sort of sub-devices like
  lens actuator (I mean pizeo motors in camera module). As you know lens
  actuator is an extremely slow device in comparison with common v4l2
  devices we are using and we need to know whether it has succeeded or
  not in moving to expected position.
  So I considered sysfs and udev as candidates for catching events from
  sub-devices. events like success/failure of lens movement, change of
  status of subdevices.
  Does anybody experiencing same issue? I think I've seen a lens
  controller driver in omap3 kernel from TI but not sure how did they
  control that.
 
  My point is that we need a kind of framework to give and event to user
  space and catching them properly just like udev does.
 
  When I was talking to Laurent Pinchart and Sakari and his team at Nokia
  we discussed just such a framework. It actually exists already, although
  it is poorly implemented.
 
  Look at include/linux/dvb/video.h, struct video_event and ioctl
  VIDEO_GET_EVENT. It is used in ivtv (ivtv-ioctl.c, look for
  VIDEO_GET_EVENT).
 
  The idea is that you can either call VIDEO_GET_EVENT to wait for an event
  or use select() and wait for an exception to arrive, and then call
  VIDEO_GET_EVENT to find which event it was.
 
  This is ideal for streaming-related events. In ivtv it is used to report
  VSYNCs and to report when the MPEG decoder stopped (there is a delay
  between stopping sending new data to the decoder and when it actually
  processed all its internal buffers).
 
  Laurent is going to look into this to clean it up and present it as a new
  proper official V4L2 event mechanism.
 
  For events completely specific to a subdev I wonder whether it wouldn't
  be a good idea to use the media controller device for that. I like the
  select() mechanism since in an application you can just select() on a
  whole bunch of filehandles. If you can't use select() then you are forced
  to do awkward coding (e.g. make a separate thread just to handle that
  other event mechanism).
 
 Agree. There's no reasonable way to use video devices here since the
 events may be connected to non-video related issues --- like the
  statistics.
 
 One possible approach could be allocating a device node for each subdev
 and use them and leave the media controller device with just the media
 controller specific ioctls. Then there would be no need to set current
 subdev nor bind the subdev to file handle either.
 
 Just an idea.
 
  So with the media controller we can easily let sub-devices notify the
  media controller when an event is ready and the media controller can then
  generate an exception. An application can just select() on the mc
  filehandle.
 
  There are two ways of implementing this. One is that the media controller
  keeps a global queue of pending events and subdevices just queue events
  to that when they arrive (with some queue size limit to prevent run-away
  events).
 
 With the above arrangement, the events could be easily subdev specific.
 The mechanism should be generic still, though.
 
  So when you call some GET_EVENT type ioctl it should return the ID of the
  subdevice (aka entity) as well. What makes me slightly uncomfortable is
  that you still want to use that same ioctl on a normal video node. And
  the subdev ID has really no meaning there. But making two different
  ioctls doesn't sit well with me either.
 
  The alternative implementation is that the mc will only wait for events
  from the currently selected sub-device. So if you want to wait on events
  from different sub-devices, then you have to open the mc multiple times,
  once for each subdev that you want to receive events from.
 
  I think I would probably go for the second implementation because it is
  consistent with the way ioctls are passed to sub-devices. I like the idea
  that you can just pass regular V4L2 ioctls to sub-devices. Not all ioctls
  make sense, obviously (e.g. any of the streaming I/O ioctls), but a
  surprisingly large number of ioctls can be used in that way.
 
 I agree with this. There are just a few ioctls that probably don't make
 sense (e.g. the steaming related ones).
 
 IMO even the format setting ioctls could be nice since the possible
 input and output formats of the subdevs should be enumerable, too.
 
 ENUM_FRAMESIZES and ENUM_FRAMEINTERVALS are missing the v4l2_buf_type,
 but there are reserved fields...

Those two 

Re: Media controller: sysfs vs ioctl

2009-09-22 Thread Sakari Ailus

Hans Verkuil wrote:

On Sunday 13 September 2009 08:13:04 Nathaniel Kim wrote:

2009. 9. 12., 오전 7:21, Hans Verkuil 작성:

Hans,

First of all I'm very sorry that I had not enough time to go through  
your new RFC. I'll checkout right after posting this mail.


I think this is a good approach and I also had in my mind that sysfs  
might be a good method if we could control and monitor through this.  
Recalling memory when we had a talk in San Francisco, I was frustrated  
that there is no way to catch events from sort of sub-devices like  
lens actuator (I mean pizeo motors in camera module). As you know lens  
actuator is an extremely slow device in comparison with common v4l2  
devices we are using and we need to know whether it has succeeded or  
not in moving to expected position.
So I considered sysfs and udev as candidates for catching events from  
sub-devices. events like success/failure of lens movement, change of  
status of subdevices.
Does anybody experiencing same issue? I think I've seen a lens  
controller driver in omap3 kernel from TI but not sure how did they  
control that.


My point is that we need a kind of framework to give and event to user  
space and catching them properly just like udev does.


When I was talking to Laurent Pinchart and Sakari and his team at Nokia
we discussed just such a framework. It actually exists already, although
it is poorly implemented.

Look at include/linux/dvb/video.h, struct video_event and ioctl VIDEO_GET_EVENT.
It is used in ivtv (ivtv-ioctl.c, look for VIDEO_GET_EVENT).

The idea is that you can either call VIDEO_GET_EVENT to wait for an event
or use select() and wait for an exception to arrive, and then call
VIDEO_GET_EVENT to find which event it was.

This is ideal for streaming-related events. In ivtv it is used to report
VSYNCs and to report when the MPEG decoder stopped (there is a delay between
stopping sending new data to the decoder and when it actually processed all
its internal buffers).

Laurent is going to look into this to clean it up and present it as a new
proper official V4L2 event mechanism.

For events completely specific to a subdev I wonder whether it wouldn't be
a good idea to use the media controller device for that. I like the select()
mechanism since in an application you can just select() on a whole bunch of
filehandles. If you can't use select() then you are forced to do awkward coding
(e.g. make a separate thread just to handle that other event mechanism).


Agree. There's no reasonable way to use video devices here since the 
events may be connected to non-video related issues --- like the statistics.


One possible approach could be allocating a device node for each subdev 
and use them and leave the media controller device with just the media 
controller specific ioctls. Then there would be no need to set current 
subdev nor bind the subdev to file handle either.


Just an idea.


So with the media controller we can easily let sub-devices notify the media
controller when an event is ready and the media controller can then generate
an exception. An application can just select() on the mc filehandle.

There are two ways of implementing this. One is that the media controller
keeps a global queue of pending events and subdevices just queue events to
that when they arrive (with some queue size limit to prevent run-away events).


With the above arrangement, the events could be easily subdev specific. 
The mechanism should be generic still, though.



So when you call some GET_EVENT type ioctl it should return the ID of the
subdevice (aka entity) as well. What makes me slightly uncomfortable is that
you still want to use that same ioctl on a normal video node. And the subdev
ID has really no meaning there. But making two different ioctls doesn't sit
well with me either.

The alternative implementation is that the mc will only wait for events from
the currently selected sub-device. So if you want to wait on events from
different sub-devices, then you have to open the mc multiple times, once for
each subdev that you want to receive events from.

I think I would probably go for the second implementation because it is
consistent with the way ioctls are passed to sub-devices. I like the idea that
you can just pass regular V4L2 ioctls to sub-devices. Not all ioctls make
sense, obviously (e.g. any of the streaming I/O ioctls), but a surprisingly
large number of ioctls can be used in that way.


I agree with this. There are just a few ioctls that probably don't make 
sense (e.g. the steaming related ones).


IMO even the format setting ioctls could be nice since the possible 
input and output formats of the subdevs should be enumerable, too.


ENUM_FRAMESIZES and ENUM_FRAMEINTERVALS are missing the v4l2_buf_type, 
but there are reserved fields...


--
Sakari Ailus
sakari.ai...@maxwell.research.nokia.com

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org

Re: Media controller: sysfs vs ioctl

2009-09-15 Thread Laurent Pinchart
On Saturday 12 September 2009 00:21:48 Hans Verkuil wrote:
 Hi all,
 
 I've started this as a new thread to prevent polluting the discussions of
  the media controller as a concept.

[snip]
 
 What sort of interaction do we need with sub-devices?
 
[snip]
 
 2) Private ioctls. Basically a way to set and get data that is hardware
 specific from the sub-device. This can be anything from statistics,
  histogram information, setting resizer coefficients, configuring
  colorspace converters, whatever. Furthermore, just like the regular V4L2
  API it has to be designed with future additions in mind (i.e. it should
  use something like reserved fields).
 
 In my opinion ioctls are ideal for this since they are very flexible and
  easy to use and efficient. Especially because you can combine multiple
  fields into one unit. So getting histogram data through an ioctl will also
  provide the timestamp. And you can both write and read data in one atomic
  system call. Yes, you can combine data in sysfs reads as well. Although an
  IORW ioctls is hard to model in sysfs. But whereas an ioctl can just copy
  a struct from kernel to userspace, for sysfs you have to go through a
  painful process of parsing and formatting.
 
 And not all this data is small. Histogram data can be 10s of kilobytes.
  'cat' will typically only read 4 kB at a time, so you will probably have
  to keep track of how much is read in the read implementation of the
  attribute. Or does the kernel do that for you?

If I'm not mistaken sysfs binary attributes can't be bigger than 4kB in size.

[snip]

 The final part is how to represent the topology. Device nodes and
  sub-devices can be exposed to sysfs as discussed earlier. Representing
  both the possible and current links between them is a lot harder. This is
  especially true for non-v4l device nodes since we cannot just add
  attributes there. I think this can be done though by providing that
  information as attributes of an mc sysfs node. That way it remains under
  control of the v4l core.

I was a bit concerned (to say the least) when I started catching up with my e-
mails and reading this thread that the discussion would heat up and split 
developers between two sides. While trying to find arguments to convince 
people that my side is better (and of course it is, otherwise I would be on 
the other side :-)) I realized that the whole media controller problem might 
be understood differently by the two sides. I'll try to shed some light on 
this in the hope that it will bring the v4l developers together.

sysfs was designed to expose kernel objects arranged in a tree-like fashion. 
It does that pretty well, although one of its weak points is that it can be 
easily abused.

From the kernel point of view, (most of) the various sub-devices in a media 
device are arranged in a tree of kernel objects. Most of the time we have an 
I2C controller and various devices sitting on the I2C bus, one or several 
video devices that sit on some internal bus (usually a SoC internal bus for 
the most complex and recent platforms), and possibly SPI and other devices as 
well.

Realizing that, as all those sub-devices are already exposed in sysfs in one 
way or the other, it was tempting to add a few attributes and soft links to 
solve the media controller problem.

However, that solution, even if it might seem simple, misses a very important 
point. Sub-devices are arranged in a tree-like objects structure from the 
kernel point of view, but from the media controller point of view they are 
not. While the kernel cares about kernel objects that are mostly devices on 
busses in parent-children relationships, the media controller cares about how 
video is transferred between sub-devices. And those two concepts are totally 
different.

The sub-devices, from the media controller point of view, make an oriented 
graph of connected nodes. When setting video controls, selecting formats and 
streaming video, what we care about it how the video will flow from its source 
(a sensor, a physical connector, memory, whatever) to its sink (same list of 
possible whatevers). This is what the media controller needs to deal with.

We need to expose a connected graph of nodes to userspace, and let userspace 
access the nodes and the links for various operations. Of course it would be 
possible to handle that through sysfs, as sub-devices are already exposed 
there. But let's face it, it wouldn't be practical, efficient or even clean.

Hans already mentioned several reasons why using sysfs attributes to replace 
all media controller ioctls would be cumbersome. I would add that we need to 
transfer large amounts of aggregated data in some cases (think about 
statistics), and sysfs attributes are simply not designed for that. There's a 
4kB limit for text attributes, and Documentation/filesystems/sysfs.txt states 
that

Attributes should be ASCII text files, preferably with only one value
per file. It is noted that it may not be 

Re: Media controller: sysfs vs ioctl

2009-09-15 Thread Hans Verkuil

 From the kernel point of view, (most of) the various sub-devices in a
 media
 device are arranged in a tree of kernel objects. Most of the time we have
 an
 I2C controller and various devices sitting on the I2C bus, one or several
 video devices that sit on some internal bus (usually a SoC internal bus
 for
 the most complex and recent platforms), and possibly SPI and other devices
 as
 well.

 Realizing that, as all those sub-devices are already exposed in sysfs in
 one
 way or the other, it was tempting to add a few attributes and soft links
 to
 solve the media controller problem.

I just wanted to make one clarification: sub-devices are usually, but not
always mapped 1-to-1 to a true kernel device. But sub-devices are an
abstract concept and it is possible to have multiple sub-devices exposed
by a single kernel device. Or even to have one sub-device covering two or
more kernel devices (no such beast exists, but nothing prevents this
technically).

I know of two instances where the sub-device has no sysfs counterpart. And
I expect more will follow.

Regards,

Hans

-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [linux-dvb] Media controller: sysfs vs ioctl

2009-09-15 Thread Devin Heitmueller
On Tue, Sep 15, 2009 at 2:50 PM, david may david.ma...@ntlworld.com wrote:
 OC you do realize that IF the DVB/linuxTV devs cant even make a simple and
 quick LiveCD with a VLC and streaming apps clients and servers connecting to 
 a web sever some were
 for popping into ANY laptop that happens to be around at the time then
 theres a problem with mass credibility somewhere 

 how hard can it be to set up a Multicast VLC 224.0.0.1 tunnel over a
 free IPv6 supplyer to the DVB/LinuxTV servers and Unicast a WVGA or
 better video stream or four to any VLC clients wanting to follow the
 feeds , its just a shame theres not easy way to Add an annotation to
 feeds and/or live transcripts

 or even skip to a section of video
 BBC Iplayer style
  link directly to your favourite scene
  http://www.bbc.co.uk/blogs/bbcinternet/2009/07/bbc_iplayer_now_lets_you_link.html
 Steve Hughes in Michael McIntyre's brilliant Comedy Roadshow - see him here: 
 http://bbc.co.uk/i/lbtbg/?t=16m51s

  these are the things we should be seeing in ALL remote participation
  feeds and More
 --
 Best regards,
  david                            mailto:david.ma...@ntlworld.com

David,

It really doesn't say anything about the credibility of the
developers, other than that perhaps they are already severely
overloaded and don't have the cycles to create a setup such as the one
you are proposing.

This is unlikely to happen not because it's not technically possible,
but because the developers have other stuff that is more important to
be working on.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: Media controller: sysfs vs ioctl

2009-09-14 Thread Karicheri, Muralidharan
Hi,

In our experience, sysfs was useful for simple control mechanism such as 
enable/disable or displaying statistics or status. But we had received
customer complaints that with this approach, these functionality will become 
unavailable when kernel is built without sysfs as part of size
optimization. So if this is really true, I don't think sysfs is the right 
candidate for MC.  Since sysfs is more string oriented, won't it increase the 
code size when it is used for parsing a lot of variable/value pair to setup 
device hw configuration ? Besides, most of the application that
is written for TI video drivers are based on ioctl and it would make technical 
support a nightmare with a different API used for device configuration.

Murali

From: linux-media-ow...@vger.kernel.org [linux-media-ow...@vger.kernel.org] On 
Behalf Of Mauro Carvalho Chehab [mche...@infradead.org]
Sent: Sunday, September 13, 2009 7:31 PM
To: wk
Cc: Hans Verkuil; linux-media@vger.kernel.org
Subject: Re: Media controller: sysfs vs ioctl

Em Sun, 13 Sep 2009 17:54:11 +0200
wk handygewinnsp...@gmx.de escreveu:

 Hans Verkuil schrieb:
  Hi all,
 
  I've started this as a new thread to prevent polluting the discussions of 
  the
  media controller as a concept.
 
  First of all, I have no doubt that everything that you can do with an ioctl,
  you can also do with sysfs and vice versa. That's not the problem here.
 
  The problem is deciding which approach is the best.
 
 

 Is it really a good idea to create a dependency to some virtual file
 system which may go away in future?
  From time to time some of those seem to go away, for example devfs.

 Is it really unavoidable to have something in sysfs, something which is
 really not possible with ioctls?
 And do you really want to depend on sysfs developers?

First of all, both ioctl's and sysfs are part of vfs support.

Second: where did you got the wrong information that sysfs would be deprecated?

There's no plan to deprecate sysfs, and, since there are lots of
kernel-userspace API's depending on sysfs, you can't just remove it.

It is completely different from what we had with devfs, where just device names
were created there, on a limited way (for example, no directories were allowed
at devfs). Yet, before devfs removal, sysfs was added to implement the same
features, providing even more functionality.

Removing sysfs is as hard as removing ioctl or procfs support on kernel.
You may change their internal implementation, but not the userspace API.

Btw, if we'll seek for the last internal changes, among those three API's, the 
more
recent internal changes were at fs API where ioctl support is. There, the
Kernel big logs were removed. This required a review on all driver locks and 
changes
on almost all v4l/dvb drivers.

Also, wanting or not, sysfs is called on every kernel driver, so this
dependency already exists.

Cheers,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-13 Thread Nathaniel Kim


2009. 9. 12., 오전 7:21, Hans Verkuil 작성:


Hi all,

I've started this as a new thread to prevent polluting the  
discussions of the

media controller as a concept.

First of all, I have no doubt that everything that you can do with  
an ioctl,
you can also do with sysfs and vice versa. That's not the problem  
here.


The problem is deciding which approach is the best.

What is sysfs? (taken from http://lwn.net/Articles/31185/)

Sysfs is a virtual filesystem which provides a userspace-visible  
representation
of the device model. The device model and sysfs are sometimes  
confused with each
other, but they are distinct entities. The device model functions  
just fine

without sysfs (but the reverse is not true).

Currently both a v4l driver and the device nodes are all represented  
in sysfs.

This is handled automatically by the kernel.

Sub-devices are not represented in sysfs since they are not based on  
struct
device. They are v4l-internal structures. Actually, if the subdev  
represents
an i2c device, then that i2c device will be present in sysfs, but  
not all

subdevs are i2c devices.

Should we make all sub-devices based on struct device? Currently  
this is not
required. Doing this would probably mean registering a virtual bus,  
then
attaching the sub-device to that. Of course, this only applies to  
sub-devices
that represent something that is not an i2c device (e.g. something  
internal
to the media board like a resizer, or something connected to GPIO  
pins).


If we decide to go with sysfs, then we have to do this. This part  
shouldn't
be too difficult to implement. And also if we do not go with sysfs  
this might

be interesting to do eventually.

The media controller topology as I see it should contain the device  
nodes
since the application has to know what device node to open to do the  
streaming.
It should also contain the sub-devices so the application can  
control them.
Is this enough? I think that eventually we also want to show the  
physical
connectors. I left them out (mostly) from the initial media  
controller proposal,
but I suspect that we want those as well eventually. But connectors  
are
definitely not devices. In that respect the entity concept of the  
media

controller is more abstract than sysfs.

However, for now I think we can safely assume that sub-devices can  
be made

visible in sysfs.



Hans,

First of all I'm very sorry that I had not enough time to go through  
your new RFC. I'll checkout right after posting this mail.


I think this is a good approach and I also had in my mind that sysfs  
might be a good method if we could control and monitor through this.  
Recalling memory when we had a talk in San Francisco, I was frustrated  
that there is no way to catch events from sort of sub-devices like  
lens actuator (I mean pizeo motors in camera module). As you know lens  
actuator is an extremely slow device in comparison with common v4l2  
devices we are using and we need to know whether it has succeeded or  
not in moving to expected position.
So I considered sysfs and udev as candidates for catching events from  
sub-devices. events like success/failure of lens movement, change of  
status of subdevices.
Does anybody experiencing same issue? I think I've seen a lens  
controller driver in omap3 kernel from TI but not sure how did they  
control that.


My point is that we need a kind of framework to give and event to user  
space and catching them properly just like udev does.

Cheers,

Nate

=
DongSoo, Nathaniel Kim
Engineer
Mobile S/W Platform Lab.
Digital Media  Communications RD Centre
Samsung Electronics CO., LTD.
e-mail : dongsoo@gmail.com
  dongsoo45@samsung.com--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-13 Thread Hans Verkuil
On Sunday 13 September 2009 08:13:04 Nathaniel Kim wrote:
 
 2009. 9. 12., 오전 7:21, Hans Verkuil 작성:
 
  Hi all,
 
  I've started this as a new thread to prevent polluting the  
  discussions of the
  media controller as a concept.
 
  First of all, I have no doubt that everything that you can do with  
  an ioctl,
  you can also do with sysfs and vice versa. That's not the problem  
  here.
 
  The problem is deciding which approach is the best.
 
  What is sysfs? (taken from http://lwn.net/Articles/31185/)
 
  Sysfs is a virtual filesystem which provides a userspace-visible  
  representation
  of the device model. The device model and sysfs are sometimes  
  confused with each
  other, but they are distinct entities. The device model functions  
  just fine
  without sysfs (but the reverse is not true).
 
  Currently both a v4l driver and the device nodes are all represented  
  in sysfs.
  This is handled automatically by the kernel.
 
  Sub-devices are not represented in sysfs since they are not based on  
  struct
  device. They are v4l-internal structures. Actually, if the subdev  
  represents
  an i2c device, then that i2c device will be present in sysfs, but  
  not all
  subdevs are i2c devices.
 
  Should we make all sub-devices based on struct device? Currently  
  this is not
  required. Doing this would probably mean registering a virtual bus,  
  then
  attaching the sub-device to that. Of course, this only applies to  
  sub-devices
  that represent something that is not an i2c device (e.g. something  
  internal
  to the media board like a resizer, or something connected to GPIO  
  pins).
 
  If we decide to go with sysfs, then we have to do this. This part  
  shouldn't
  be too difficult to implement. And also if we do not go with sysfs  
  this might
  be interesting to do eventually.
 
  The media controller topology as I see it should contain the device  
  nodes
  since the application has to know what device node to open to do the  
  streaming.
  It should also contain the sub-devices so the application can  
  control them.
  Is this enough? I think that eventually we also want to show the  
  physical
  connectors. I left them out (mostly) from the initial media  
  controller proposal,
  but I suspect that we want those as well eventually. But connectors  
  are
  definitely not devices. In that respect the entity concept of the  
  media
  controller is more abstract than sysfs.
 
  However, for now I think we can safely assume that sub-devices can  
  be made
  visible in sysfs.
 
 
 Hans,
 
 First of all I'm very sorry that I had not enough time to go through  
 your new RFC. I'll checkout right after posting this mail.
 
 I think this is a good approach and I also had in my mind that sysfs  
 might be a good method if we could control and monitor through this.  
 Recalling memory when we had a talk in San Francisco, I was frustrated  
 that there is no way to catch events from sort of sub-devices like  
 lens actuator (I mean pizeo motors in camera module). As you know lens  
 actuator is an extremely slow device in comparison with common v4l2  
 devices we are using and we need to know whether it has succeeded or  
 not in moving to expected position.
 So I considered sysfs and udev as candidates for catching events from  
 sub-devices. events like success/failure of lens movement, change of  
 status of subdevices.
 Does anybody experiencing same issue? I think I've seen a lens  
 controller driver in omap3 kernel from TI but not sure how did they  
 control that.
 
 My point is that we need a kind of framework to give and event to user  
 space and catching them properly just like udev does.

When I was talking to Laurent Pinchart and Sakari and his team at Nokia
we discussed just such a framework. It actually exists already, although
it is poorly implemented.

Look at include/linux/dvb/video.h, struct video_event and ioctl VIDEO_GET_EVENT.
It is used in ivtv (ivtv-ioctl.c, look for VIDEO_GET_EVENT).

The idea is that you can either call VIDEO_GET_EVENT to wait for an event
or use select() and wait for an exception to arrive, and then call
VIDEO_GET_EVENT to find which event it was.

This is ideal for streaming-related events. In ivtv it is used to report
VSYNCs and to report when the MPEG decoder stopped (there is a delay between
stopping sending new data to the decoder and when it actually processed all
its internal buffers).

Laurent is going to look into this to clean it up and present it as a new
proper official V4L2 event mechanism.

For events completely specific to a subdev I wonder whether it wouldn't be
a good idea to use the media controller device for that. I like the select()
mechanism since in an application you can just select() on a whole bunch of
filehandles. If you can't use select() then you are forced to do awkward coding
(e.g. make a separate thread just to handle that other event mechanism).

So with the media controller we can easily let 

Re: Media controller: sysfs vs ioctl

2009-09-13 Thread Mauro Carvalho Chehab
Em Sun, 13 Sep 2009 15:13:04 +0900
Nathaniel Kim dongsoo@gmail.com escreveu:

 
 2009. 9. 12., 오전 7:21, Hans Verkuil 작성:
 
  Hi all,
 
  I've started this as a new thread to prevent polluting the  
  discussions of the
  media controller as a concept.
 
  First of all, I have no doubt that everything that you can do with  
  an ioctl,
  you can also do with sysfs and vice versa. That's not the problem  
  here.
 
  The problem is deciding which approach is the best.
 
  What is sysfs? (taken from http://lwn.net/Articles/31185/)
 
  Sysfs is a virtual filesystem which provides a userspace-visible  
  representation
  of the device model. The device model and sysfs are sometimes  
  confused with each
  other, but they are distinct entities. The device model functions  
  just fine
  without sysfs (but the reverse is not true).
 
  Currently both a v4l driver and the device nodes are all represented  
  in sysfs.
  This is handled automatically by the kernel.
 
  Sub-devices are not represented in sysfs since they are not based on  
  struct
  device. They are v4l-internal structures. Actually, if the subdev  
  represents
  an i2c device, then that i2c device will be present in sysfs, but  
  not all
  subdevs are i2c devices.
 
  Should we make all sub-devices based on struct device? Currently  
  this is not
  required. Doing this would probably mean registering a virtual bus,  
  then
  attaching the sub-device to that. Of course, this only applies to  
  sub-devices
  that represent something that is not an i2c device (e.g. something  
  internal
  to the media board like a resizer, or something connected to GPIO  
  pins).
 
  If we decide to go with sysfs, then we have to do this. This part  
  shouldn't
  be too difficult to implement. And also if we do not go with sysfs  
  this might
  be interesting to do eventually.
 
  The media controller topology as I see it should contain the device  
  nodes
  since the application has to know what device node to open to do the  
  streaming.
  It should also contain the sub-devices so the application can  
  control them.
  Is this enough? I think that eventually we also want to show the  
  physical
  connectors. I left them out (mostly) from the initial media  
  controller proposal,
  but I suspect that we want those as well eventually. But connectors  
  are
  definitely not devices. In that respect the entity concept of the  
  media
  controller is more abstract than sysfs.
 
  However, for now I think we can safely assume that sub-devices can  
  be made
  visible in sysfs.
 
 
 Hans,
 
 First of all I'm very sorry that I had not enough time to go through  
 your new RFC. I'll checkout right after posting this mail.
 
 I think this is a good approach and I also had in my mind that sysfs  
 might be a good method if we could control and monitor through this.  
 Recalling memory when we had a talk in San Francisco, I was frustrated  
 that there is no way to catch events from sort of sub-devices like  
 lens actuator (I mean pizeo motors in camera module). As you know lens  
 actuator is an extremely slow device in comparison with common v4l2  
 devices we are using and we need to know whether it has succeeded or  
 not in moving to expected position.
 So I considered sysfs and udev as candidates for catching events from  
 sub-devices. events like success/failure of lens movement, change of  
 status of subdevices.
 Does anybody experiencing same issue? I think I've seen a lens  
 controller driver in omap3 kernel from TI but not sure how did they  
 control that.
 
 My point is that we need a kind of framework to give and event to user  
 space and catching them properly just like udev does.

Maybe the Kernel event interface could be used for that.
 Cheers,
 
 Nate
 
 =
 DongSoo, Nathaniel Kim
 Engineer
 Mobile S/W Platform Lab.
 Digital Media  Communications RD Centre
 Samsung Electronics CO., LTD.
 e-mail : dongsoo@gmail.com
dongsoo45@samsung.com--
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html




Cheers,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-13 Thread Hans Verkuil
On Sunday 13 September 2009 15:27:57 Mauro Carvalho Chehab wrote:
 Em Sun, 13 Sep 2009 15:13:04 +0900
 Nathaniel Kim dongsoo@gmail.com escreveu:
 
  
  2009. 9. 12., 오전 7:21, Hans Verkuil 작성:
  
   Hi all,
  
   I've started this as a new thread to prevent polluting the  
   discussions of the
   media controller as a concept.
  
   First of all, I have no doubt that everything that you can do with  
   an ioctl,
   you can also do with sysfs and vice versa. That's not the problem  
   here.
  
   The problem is deciding which approach is the best.
  
   What is sysfs? (taken from http://lwn.net/Articles/31185/)
  
   Sysfs is a virtual filesystem which provides a userspace-visible  
   representation
   of the device model. The device model and sysfs are sometimes  
   confused with each
   other, but they are distinct entities. The device model functions  
   just fine
   without sysfs (but the reverse is not true).
  
   Currently both a v4l driver and the device nodes are all represented  
   in sysfs.
   This is handled automatically by the kernel.
  
   Sub-devices are not represented in sysfs since they are not based on  
   struct
   device. They are v4l-internal structures. Actually, if the subdev  
   represents
   an i2c device, then that i2c device will be present in sysfs, but  
   not all
   subdevs are i2c devices.
  
   Should we make all sub-devices based on struct device? Currently  
   this is not
   required. Doing this would probably mean registering a virtual bus,  
   then
   attaching the sub-device to that. Of course, this only applies to  
   sub-devices
   that represent something that is not an i2c device (e.g. something  
   internal
   to the media board like a resizer, or something connected to GPIO  
   pins).
  
   If we decide to go with sysfs, then we have to do this. This part  
   shouldn't
   be too difficult to implement. And also if we do not go with sysfs  
   this might
   be interesting to do eventually.
  
   The media controller topology as I see it should contain the device  
   nodes
   since the application has to know what device node to open to do the  
   streaming.
   It should also contain the sub-devices so the application can  
   control them.
   Is this enough? I think that eventually we also want to show the  
   physical
   connectors. I left them out (mostly) from the initial media  
   controller proposal,
   but I suspect that we want those as well eventually. But connectors  
   are
   definitely not devices. In that respect the entity concept of the  
   media
   controller is more abstract than sysfs.
  
   However, for now I think we can safely assume that sub-devices can  
   be made
   visible in sysfs.
  
  
  Hans,
  
  First of all I'm very sorry that I had not enough time to go through  
  your new RFC. I'll checkout right after posting this mail.
  
  I think this is a good approach and I also had in my mind that sysfs  
  might be a good method if we could control and monitor through this.  
  Recalling memory when we had a talk in San Francisco, I was frustrated  
  that there is no way to catch events from sort of sub-devices like  
  lens actuator (I mean pizeo motors in camera module). As you know lens  
  actuator is an extremely slow device in comparison with common v4l2  
  devices we are using and we need to know whether it has succeeded or  
  not in moving to expected position.
  So I considered sysfs and udev as candidates for catching events from  
  sub-devices. events like success/failure of lens movement, change of  
  status of subdevices.
  Does anybody experiencing same issue? I think I've seen a lens  
  controller driver in omap3 kernel from TI but not sure how did they  
  control that.
  
  My point is that we need a kind of framework to give and event to user  
  space and catching them properly just like udev does.
 
 Maybe the Kernel event interface could be used for that.

Are you talking about the input event interface? There is no standard kernel
way of doing events afaik.

Regards,

Hans

-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-13 Thread Mauro Carvalho Chehab
Em Sun, 13 Sep 2009 15:43:02 +0200
Hans Verkuil hverk...@xs4all.nl escreveu:

 On Sunday 13 September 2009 15:27:57 Mauro Carvalho Chehab wrote:
  Em Sun, 13 Sep 2009 15:13:04 +0900
  Nathaniel Kim dongsoo@gmail.com escreveu:
  
   
   2009. 9. 12., 오전 7:21, Hans Verkuil 작성:
   
Hi all,
   
I've started this as a new thread to prevent polluting the  
discussions of the
media controller as a concept.
   
First of all, I have no doubt that everything that you can do with  
an ioctl,
you can also do with sysfs and vice versa. That's not the problem  
here.
   
The problem is deciding which approach is the best.
   
What is sysfs? (taken from http://lwn.net/Articles/31185/)
   
Sysfs is a virtual filesystem which provides a userspace-visible  
representation
of the device model. The device model and sysfs are sometimes  
confused with each
other, but they are distinct entities. The device model functions  
just fine
without sysfs (but the reverse is not true).
   
Currently both a v4l driver and the device nodes are all represented  
in sysfs.
This is handled automatically by the kernel.
   
Sub-devices are not represented in sysfs since they are not based on  
struct
device. They are v4l-internal structures. Actually, if the subdev  
represents
an i2c device, then that i2c device will be present in sysfs, but  
not all
subdevs are i2c devices.
   
Should we make all sub-devices based on struct device? Currently  
this is not
required. Doing this would probably mean registering a virtual bus,  
then
attaching the sub-device to that. Of course, this only applies to  
sub-devices
that represent something that is not an i2c device (e.g. something  
internal
to the media board like a resizer, or something connected to GPIO  
pins).
   
If we decide to go with sysfs, then we have to do this. This part  
shouldn't
be too difficult to implement. And also if we do not go with sysfs  
this might
be interesting to do eventually.
   
The media controller topology as I see it should contain the device  
nodes
since the application has to know what device node to open to do the  
streaming.
It should also contain the sub-devices so the application can  
control them.
Is this enough? I think that eventually we also want to show the  
physical
connectors. I left them out (mostly) from the initial media  
controller proposal,
but I suspect that we want those as well eventually. But connectors  
are
definitely not devices. In that respect the entity concept of the  
media
controller is more abstract than sysfs.
   
However, for now I think we can safely assume that sub-devices can  
be made
visible in sysfs.
   
   
   Hans,
   
   First of all I'm very sorry that I had not enough time to go through  
   your new RFC. I'll checkout right after posting this mail.
   
   I think this is a good approach and I also had in my mind that sysfs  
   might be a good method if we could control and monitor through this.  
   Recalling memory when we had a talk in San Francisco, I was frustrated  
   that there is no way to catch events from sort of sub-devices like  
   lens actuator (I mean pizeo motors in camera module). As you know lens  
   actuator is an extremely slow device in comparison with common v4l2  
   devices we are using and we need to know whether it has succeeded or  
   not in moving to expected position.
   So I considered sysfs and udev as candidates for catching events from  
   sub-devices. events like success/failure of lens movement, change of  
   status of subdevices.
   Does anybody experiencing same issue? I think I've seen a lens  
   controller driver in omap3 kernel from TI but not sure how did they  
   control that.
   
   My point is that we need a kind of framework to give and event to user  
   space and catching them properly just like udev does.
  
  Maybe the Kernel event interface could be used for that.
 
 Are you talking about the input event interface? There is no standard kernel
 way of doing events afaik.

Yes. It is designed for low-latency report of events, like mouse movements,
where you expect that the movement will happen as mouse moves. So, it may work
fine also for servo movements. A closer look on it, plus some tests should be
done to see if it will work fine for such camera events.

Cheers,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-13 Thread wk

Hans Verkuil schrieb:

Hi all,

I've started this as a new thread to prevent polluting the discussions of the
media controller as a concept.

First of all, I have no doubt that everything that you can do with an ioctl,
you can also do with sysfs and vice versa. That's not the problem here.

The problem is deciding which approach is the best.

  


Is it really a good idea to create a dependency to some virtual file 
system which may go away in future?

From time to time some of those seem to go away, for example devfs.

Is it really unavoidable to have something in sysfs, something which is 
really not possible with ioctls?

And do you really want to depend on sysfs developers?

--Winfried


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-13 Thread Hans Verkuil
On Sunday 13 September 2009 17:54:11 wk wrote:
 Hans Verkuil schrieb:
  Hi all,
 
  I've started this as a new thread to prevent polluting the discussions of 
  the
  media controller as a concept.
 
  First of all, I have no doubt that everything that you can do with an ioctl,
  you can also do with sysfs and vice versa. That's not the problem here.
 
  The problem is deciding which approach is the best.
 

 
 Is it really a good idea to create a dependency to some virtual file 
 system which may go away in future?
  From time to time some of those seem to go away, for example devfs.
 
 Is it really unavoidable to have something in sysfs, something which is 
 really not possible with ioctls?
 And do you really want to depend on sysfs developers?

One other interesting question is: currently the V4L2 API is also used by BSD
variants for their video drivers. Our V4L2 header is explicitly dual-licensed
to allow this. I don't think that BSD has sysfs. So making the media controller
sysfs-based only would make it very hard for them if they ever want to port
drivers that rely on that to BSD.

Yes, I know that strictly speaking we don't have to care about that, but it
is yet another argument against the use of sysfs as far as I am concerned.

Regards,

Hans

-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-12 Thread Mauro Carvalho Chehab
Em Sat, 12 Sep 2009 00:21:48 +0200
Hans Verkuil hverk...@xs4all.nl escreveu:

 Hi all,
 
 I've started this as a new thread to prevent polluting the discussions of the
 media controller as a concept.
 
 First of all, I have no doubt that everything that you can do with an ioctl,
 you can also do with sysfs and vice versa. That's not the problem here.
 
 The problem is deciding which approach is the best.

True. Choosing the better approach is very important since, once merged, we'll
need to stick it for a very long time.

I saw your proposal of a ioctl-only implementation for the media control. It is
important to have a sysfs implementation also to compare. I can do it.

However, we are currently in the middle of a merge window, and this one will
require even more time than usual, since we have 2 series of patches for
soc_camera and for DaVinci/OMAP that depends on arm and omap architecture merge.

Also, there are some pending merges that requires some time to analyze, like
the ISDB-T/ISDB-S patches and API changes that were proposed for 2.6.32, that
requiring the analysis of both Japanese and Brazilian specs and do some
tests, and the tuner changes for better handling the i2c gates, and the V4L and
DVB specs that we can now merge upstream, as both got converted to DocBook XML
4.1.2 (the same version used upstream).

So, during the next two weeks, we'll have enough fun to handle, in order to get
our patches merged for 2.6.32. So, unfortunately, I'm afraid that we'll need to
give a break on those discussions until the end of the merge window, focusing
on merging the patches we have for 2.6.32.


Cheers,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-12 Thread Devin Heitmueller
On Sat, Sep 12, 2009 at 9:31 AM, Mauro Carvalho Chehab
mche...@infradead.org wrote:
 True. Choosing the better approach is very important since, once merged, we'll
 need to stick it for a very long time.

 I saw your proposal of a ioctl-only implementation for the media control. It 
 is
 important to have a sysfs implementation also to compare. I can do it.

 However, we are currently in the middle of a merge window, and this one will
 require even more time than usual, since we have 2 series of patches for
 soc_camera and for DaVinci/OMAP that depends on arm and omap architecture 
 merge.

 Also, there are some pending merges that requires some time to analyze, like
 the ISDB-T/ISDB-S patches and API changes that were proposed for 2.6.32, that
 requiring the analysis of both Japanese and Brazilian specs and do some
 tests, and the tuner changes for better handling the i2c gates, and the V4L 
 and
 DVB specs that we can now merge upstream, as both got converted to DocBook XML
 4.1.2 (the same version used upstream).

 So, during the next two weeks, we'll have enough fun to handle, in order to 
 get
 our patches merged for 2.6.32. So, unfortunately, I'm afraid that we'll need 
 to
 give a break on those discussions until the end of the merge window, focusing
 on merging the patches we have for 2.6.32.


 Cheers,
 Mauro

Mauro,

I respectfully disagree.  The original version of this RFC has been
pending for almost a year now.  Hans has written a prototype
implementation.  We should strive to get this locked down by the LPC
conference.

I think we all know that you are busy, but this conversation needs to
continue even if you personally do not have the cycles to give it your
full attention.

There is finally some real momentum behind this initiative, and the
lack of this functionality is crippling usability for many, many
users.  Hi I a new user to tvtime.  I can see analog tv with tvtime,
but how do I make audio work?

Let's finally put this issue to rest.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-12 Thread Mauro Carvalho Chehab
Em Sat, 12 Sep 2009 09:41:58 -0400
Devin Heitmueller dheitmuel...@kernellabs.com escreveu:

 I respectfully disagree.

Are you suggesting that we should not submit any patches upstream during this
merge window in order to discuss this? Sorry, but this is not right with all 
the developers that did their homework and submitted changes for 2.6.32.

  The original version of this RFC has been
 pending for almost a year now. 

It was not pending since then. As there were all the framework changes needed,
we've agreed on doing the V4L framework changes, that were finally merged at 
2.6.30[1],
that were required, before proceeding with further discussions.

 Hans has written a prototype
 implementation.  We should strive to get this locked down by the LPC
 conference.

Why? Nothing stops discussing it there and better prepare a proposal, but,
considering all the noise we had after the DVB S2API last year, I don't think
we should ever repeat using a conference, where only some of us will be there
to approve a proposal. It is the right forum for discussing and better formulate
the issues, in order to prepare a proposal, but the decisions should happen at
the ML.

Hans took a year to prepare RFCv2, and we all know that he was hardly
working on implementing what was discussed during the first RFC proposal during
all those timeframe. This shows that this is a complex matter.

 I think we all know that you are busy, but this conversation needs to
 continue even if you personally do not have the cycles to give it your
 full attention.

It is not only me that has pending tasks, but other developers are also focused
on merging their things. For example, Mkrufky already pointed that he is
waiting for the merge of the first part of his series, since he needs to send a
complementary set of patches. I'm sure that there are other developers that
are still finishing some working for the merge or that may need to solve the
usual troubles that happens when some patches went upstream via other trees,
needing to be backported and tested.

 There is finally some real momentum behind this initiative, and the
 lack of this functionality is crippling usability for many, many
 users.  Hi I a new user to tvtime.  I can see analog tv with tvtime,
 but how do I make audio work?
 
 Let's finally put this issue to rest.

Yes, let's do it for 2.6.33, but it this discussion started too late for 2.6.32.

Cheers,
Mauro

[1] FYI, we had several regression fixes on 2.6.31 due to that - and there are
still some unsolved regressions related to them - basically i2c gate and radio
breakages yet requiring fixes. Some are documented at Kernel regression list
and at bugzilla, others were just reported at ML. As I said a countless number
of times, we need to focus fixing the regressions caused by those API changes
before doing another series of changes at API. So, if people are with spare
time, I suggest a task force to fix the remaining regressions mostly on saa7134.
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-12 Thread Mauro Carvalho Chehab
Em Sat, 12 Sep 2009 17:12:35 +0200
Hans Verkuil hverk...@xs4all.nl escreveu:

  Why? Nothing stops discussing it there and better prepare a proposal, but,
  considering all the noise we had after the DVB S2API last year, I don't 
  think
  we should ever repeat using a conference, where only some of us will be 
  there
  to approve a proposal. It is the right forum for discussing and better 
  formulate
  the issues, in order to prepare a proposal, but the decisions should happen 
  at
  the ML.
 
 In that particular case you would have had a lot of noise no matter what you
 did :-)

True.

 The final decisions will indeed be taken here, but the conference is an
 excellent place to talk face-to-face and to see how well the current proposal
 will fit actual media hardware.
 
 I don't have complete access or knowledge of all the current and upcoming
 media boards, but there are several TI and Nokia engineers present who can
 help with that. Also interesting is to see how and if the framework can be
 extended to dvb.

As I've said at #irc, it would be really great if you could find some ways for
remote people to participate, maybe setting an audio conference channel. I
think we should try to discuss with LPC runners if we can find some ways for it.

I would love to discuss this there with you, but this year's budget and
logistics didn't allow. For those that will also be in Japan for JLC, we can
compliment there with some useful face-to-face discussions.
 
  Hans took a year to prepare RFCv2, and we all know that he was hardly
  working on implementing what was discussed during the first RFC proposal 
  during
  all those timeframe. This shows that this is a complex matter.
 
 Not entirely true, I worked on the necessary building blocks for such a media
 controller in the past year. There is a reason why it only took me 400-odd
 lines to get the basic mc support in...

Yes, I know. having the drivers using the framework is for sure the first step.
Yet, unfortunately, this means that we'll still need to do lots of work with
the webcam and dvb drivers for them to use the i2c kernel support and the
proper media core. As some webcams has audio input streaming over USB, it is
important to extend media controller features also to them.

  Yes, let's do it for 2.6.33, but it this discussion started too late for 
  2.6.32.
 
 I don't think anyone advocated getting anything merged for 2.6.32. Certainly
 not me. I'm not even sure whether 2.6.33 is feasible: before we merge anything
 I'd really like to see it implemented in e.g. omap3, uvcvideo and ivtv at the
 least. The proof of the pudding is in the eating, and since this is meant to
 cover a wide range of media boards we should have some idea if theory and
 practice actually match.
 
 Personally I think that the fact that I got an initial version implemented so
 quickly is very promising.
 
 I'm currently trying to get ivtv media-controller-aware. It's probably the
 most complex driver when it comes to topology that I have access to, so that
 would be a good test case.

The most complex hardware for PC I'm aware is the cx25821. Unfortunately, the
driver is currently in bad shape, in terms of CodingStyle (including the
removal of large blocks of code that are repeated several times along the
driver), needing lots of changes in order to get merged.

For those interested, the code is at:
http://linuxtv.org/hg/~mchehab/cx25821/

I'll likely do some work on it during this merge window for its inclusion
upstream (probably at drivers/staging - since I doubt we'll have enough time to
clean it up right now).

It has several blocks that can be used for video in and video out. The current
driver has support for 8 simultaneous video inputs and 4 simultaneous video
output. I'm not sure, but I won't doubt that you can exchange inputs and
outputs or even group them. So, this is a good candidate for some media
controller tests. I'll try to do it via sysfs, running some tests and post the
results.

Cheers,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-12 Thread Andy Walls
On Sat, 2009-09-12 at 12:54 -0300, Mauro Carvalho Chehab wrote:
 Em Sat, 12 Sep 2009 17:12:35 +0200
 Hans Verkuil hverk...@xs4all.nl escreveu:

  I'm currently trying to get ivtv media-controller-aware. It's probably the
  most complex driver when it comes to topology that I have access to, so that
  would be a good test case.
 
 The most complex hardware for PC I'm aware is the cx25821. Unfortunately, the
 driver is currently in bad shape, in terms of CodingStyle (including the
 removal of large blocks of code that are repeated several times along the
 driver), needing lots of changes in order to get merged.
 
 For those interested, the code is at:
   http://linuxtv.org/hg/~mchehab/cx25821/
 
 I'll likely do some work on it during this merge window for its inclusion
 upstream (probably at drivers/staging - since I doubt we'll have enough time 
 to
 clean it up right now).
 
 It has several blocks that can be used for video in and video out. The current
 driver has support for 8 simultaneous video inputs and 4 simultaneous video
 output. I'm not sure, but I won't doubt that you can exchange inputs and
 outputs or even group them. So, this is a good candidate for some media
 controller tests. I'll try to do it via sysfs, running some tests and post the
 results.


I read the available specs for that chip when I saw the source code
appear in a repo of yours several months ago.  The public data sheet is
here.

http://www.conexant.com/servlets/DownloadServlet/PBR-201499-004.pdf?docid=1501revid=4

The chip looks like it is a good fit for surveillance applications.

The block diagram indicates it is essentially a Video (10x CCIR656) and
Audio (5x I2S) router, with a pile of GPIOS (48), 3 I2C busses, and
support for inbound and outbound DMA channels.  The chip also has built
in scalers and motion detection.  Managing the chip itself doesn't look
too complicated, but once intergrated with other devices like
compression CODECs, a CX25853 devices, or general purpose
microcontrollers, I imagine it could get complex to manage.

The reference design brief is here:

http://www.conexant.com/servlets/DownloadServlet/RED-202183-001.pdf?docid=2184revid=1


I agree with the coding style problems of the current driver.

Regards,
Andy

 Cheers,
 Mauro


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-12 Thread Mauro Carvalho Chehab
Em Sat, 12 Sep 2009 14:48:23 -0400
Andy Walls awa...@radix.net escreveu:

 On Sat, 2009-09-12 at 12:54 -0300, Mauro Carvalho Chehab wrote:
  Em Sat, 12 Sep 2009 17:12:35 +0200
  Hans Verkuil hverk...@xs4all.nl escreveu:
 
   I'm currently trying to get ivtv media-controller-aware. It's probably the
   most complex driver when it comes to topology that I have access to, so 
   that
   would be a good test case.
  
  The most complex hardware for PC I'm aware is the cx25821. Unfortunately, 
  the
  driver is currently in bad shape, in terms of CodingStyle (including the
  removal of large blocks of code that are repeated several times along the
  driver), needing lots of changes in order to get merged.
  
  For those interested, the code is at:
  http://linuxtv.org/hg/~mchehab/cx25821/
  
  I'll likely do some work on it during this merge window for its inclusion
  upstream (probably at drivers/staging - since I doubt we'll have enough 
  time to
  clean it up right now).
  
  It has several blocks that can be used for video in and video out. The 
  current
  driver has support for 8 simultaneous video inputs and 4 simultaneous video
  output. I'm not sure, but I won't doubt that you can exchange inputs and
  outputs or even group them. So, this is a good candidate for some media
  controller tests. I'll try to do it via sysfs, running some tests and post 
  the
  results.
 
 
 I read the available specs for that chip when I saw the source code
 appear in a repo of yours several months ago.  The public data sheet is
 here.
 
 http://www.conexant.com/servlets/DownloadServlet/PBR-201499-004.pdf?docid=1501revid=4
 
 The chip looks like it is a good fit for surveillance applications.
 
 The block diagram indicates it is essentially a Video (10x CCIR656) and
 Audio (5x I2S) router, with a pile of GPIOS (48), 3 I2C busses, and
 support for inbound and outbound DMA channels.  The chip also has built
 in scalers and motion detection.  Managing the chip itself doesn't look
 too complicated, but once intergrated with other devices like
 compression CODECs, a CX25853 devices, or general purpose
 microcontrollers, I imagine it could get complex to manage.
 
 The reference design brief is here:
 
 http://www.conexant.com/servlets/DownloadServlet/RED-202183-001.pdf?docid=2184revid=1

Yes, this board is very powerful, and very complex designs are possible with it.

 I agree with the coding style problems of the current driver.

Yes. It will take some time until cleaning it up and letting it done for being
at drivers/media.

Cheers,
Mauro
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Media controller: sysfs vs ioctl

2009-09-11 Thread Hans Verkuil
Hi all,

I've started this as a new thread to prevent polluting the discussions of the
media controller as a concept.

First of all, I have no doubt that everything that you can do with an ioctl,
you can also do with sysfs and vice versa. That's not the problem here.

The problem is deciding which approach is the best.

What is sysfs? (taken from http://lwn.net/Articles/31185/)

Sysfs is a virtual filesystem which provides a userspace-visible representation
of the device model. The device model and sysfs are sometimes confused with each
other, but they are distinct entities. The device model functions just fine
without sysfs (but the reverse is not true).

Currently both a v4l driver and the device nodes are all represented in sysfs.
This is handled automatically by the kernel.

Sub-devices are not represented in sysfs since they are not based on struct
device. They are v4l-internal structures. Actually, if the subdev represents
an i2c device, then that i2c device will be present in sysfs, but not all
subdevs are i2c devices.

Should we make all sub-devices based on struct device? Currently this is not
required. Doing this would probably mean registering a virtual bus, then
attaching the sub-device to that. Of course, this only applies to sub-devices
that represent something that is not an i2c device (e.g. something internal
to the media board like a resizer, or something connected to GPIO pins).

If we decide to go with sysfs, then we have to do this. This part shouldn't
be too difficult to implement. And also if we do not go with sysfs this might
be interesting to do eventually.

The media controller topology as I see it should contain the device nodes
since the application has to know what device node to open to do the streaming.
It should also contain the sub-devices so the application can control them.
Is this enough? I think that eventually we also want to show the physical
connectors. I left them out (mostly) from the initial media controller proposal,
but I suspect that we want those as well eventually. But connectors are
definitely not devices. In that respect the entity concept of the media
controller is more abstract than sysfs.

However, for now I think we can safely assume that sub-devices can be made
visible in sysfs.

The next point is how to access sub-devices.

One approach is to create sub-device attributes that can be read and written.
The other approach is to use a media controller device node and use ioctls.

A third approach would be to create device nodes for each sub-device. This was
the original idea I had when they were still called 'media processors'. I no
longer think that is a good idea. The problem with that is that it will create
even more device nodes (dozens in some cases) in addition to the many streaming
device nodes that we already have. We have no choice in the case of streaming,
but very few sub-devices (if any) will need to do read/write or streaming.
Should this be needed, then it is always possible to create a device node just
for that and link it as an output to the sub-device. In 99% of the cases we
just need to be able to call ioctl on the sub-device. And we can do that
through a media controller device just as well.

What sort of interaction do we need with sub-devices?

1) Controls. Most sub-devices will have controls. Some of these controls are
the same as are exposed through a v4l device node (brightness, contrast, etc),
but others are more advanced controls. E.g. fine-grained gain controls. We have
seen this lately in several driver submissions that there are a lot of controls
that are hardware specific and that we do not want to expose to the average
xawtv-type application. But advanced apps still want to be able to use them.

Making such controls private to the sub-device is a good solution. What that
means is that they do not appear when you do QUERYCTRL on the video device node,
but you can set/get them when dealing directly to the sub-device.

If we do this with an ioctl then we can just reuse the existing ioctls for
dealing with controls. As you know I am working on a control framework that
will move most of the implementation details to the core. It is easy to make
this available as well to sub-devices. So calling QUERYCTRL through a media
controller will also enumerate all the 'private' controls. In addition, with
VIDIOC_S/G_EXT_CTRLS you can set and get multiple controls atomically.

Such a control framework can also expose those controls as sysfs attributes.
This works fine except for setting multiple controls atomically. E.g. for
motor control you will definitely want this.

You can do this I guess by implementing an 'all' attribute that will output
all the control values when queried and you can write things like:

motor_x=100
motor_y=200

to the 'all' attribute.

Yuck.

Oh, and I don't see how you can implement the information that v4l2_queryctrl
and v4l2_querymenu can return in sysfs. Except by creating even more
attributes.

Note that I would 

Re: Media controller: sysfs vs ioctl

2009-09-11 Thread Andy Walls
On Sat, 2009-09-12 at 00:21 +0200, Hans Verkuil wrote:
 Hi all,
 
 I've started this as a new thread to prevent polluting the discussions of the
 media controller as a concept.
 
 First of all, I have no doubt that everything that you can do with an ioctl,
 you can also do with sysfs and vice versa. That's not the problem here.
 
 The problem is deciding which approach is the best.

I've wanted to reply earlier but I cannot collect enough time to do
proper research, but since you asked this particular question, I happen
to have something which may help.

I would suggest evaluating a representative proposals by applying
Baldwin and Clark's Net Options Value (NOV) metric to a simple system
representation.  The system to which to apply the metric would comprise:

- a representative user space app
- a representative v4l-dvb driver
- an API concept/suggestion/proposal

I think this metric is appropriate to apply, because the NOV is a way to
assign value to implementing options (i.e. options in modular systems).
An API itself is not a modular system and hard to evaluate in isolation,
so it needs to be evaluated in the context of the options it provies to
the system designers and maintainers.

The NOV boils to simple concepts:

1. a system design has a total value that is its present value plus the
value of it's options that can be exploited in the future.

2. an option represents a potential value that may provide a return in
the future

3. an option has only a potential value (in the present)

4. an option only yields a return if that option may be exploited in the
future.  The probability that the option may be exploited needs to be
taken into account.

5. an option has costs associated with exploiting it (in the future)

I'm not advocating a rigorous computation of the metric for the
proposals, but more a qualitative look at the proposals but still using
the precise definition of the metric (sorry I don't have a URL
handy...).


I will note that I think am in agreement with Hans on sysfs.  I think
the cost of trying to exploit any option provided through sysfs in a
userspace apppllication will nullify any technical benefit of said
option to the application.

Lets say we want to convert an existing app to a Media Controller
aware version of that app.  There is a cost to do that.  Will the API
proposal make exploting some options have a large cost?  Do some of the
options of the API have a low probability of being exploited?  Do some
of the options of the API provide very low technical benefit?  What does
the API proposal do to the total value of the system (e.g. an API with
no flexibility fixes the total value close to the present value and
there is no value to be realized from exploiting options in the future).


OK, I hope I've communicated what I mean.  I feel like that all may be
less than clear.


These ideas have come from a confluence of research I've been doing at
work, and V4L-DVB work (thinking about Multiproto vs. DVB v5, and the
v4l2_subdev IR ops, etc.).


Regards,
Andy

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Media controller: sysfs vs ioctl

2009-09-11 Thread hermann pitton
Hi,

Am Freitag, den 11.09.2009, 19:01 -0400 schrieb Andy Walls:
 On Sat, 2009-09-12 at 00:21 +0200, Hans Verkuil wrote:
  Hi all,
  
  I've started this as a new thread to prevent polluting the discussions of 
  the
  media controller as a concept.
  
  First of all, I have no doubt that everything that you can do with an ioctl,
  you can also do with sysfs and vice versa. That's not the problem here.
  
  The problem is deciding which approach is the best.
 
 I've wanted to reply earlier but I cannot collect enough time to do
 proper research, but since you asked this particular question, I happen
 to have something which may help.
 
 I would suggest evaluating a representative proposals by applying
 Baldwin and Clark's Net Options Value (NOV) metric to a simple system
 representation.  The system to which to apply the metric would comprise:
 
   - a representative user space app
   - a representative v4l-dvb driver
   - an API concept/suggestion/proposal
 
 I think this metric is appropriate to apply, because the NOV is a way to
 assign value to implementing options (i.e. options in modular systems).
 An API itself is not a modular system and hard to evaluate in isolation,
 so it needs to be evaluated in the context of the options it provies to
 the system designers and maintainers.
 
 The NOV boils to simple concepts:
 
 1. a system design has a total value that is its present value plus the
 value of it's options that can be exploited in the future.
 
 2. an option represents a potential value that may provide a return in
 the future
 
 3. an option has only a potential value (in the present)
 
 4. an option only yields a return if that option may be exploited in the
 future.  The probability that the option may be exploited needs to be
 taken into account.
 
 5. an option has costs associated with exploiting it (in the future)
 
 I'm not advocating a rigorous computation of the metric for the
 proposals, but more a qualitative look at the proposals but still using
 the precise definition of the metric (sorry I don't have a URL
 handy...).
 
 
 I will note that I think am in agreement with Hans on sysfs.  I think
 the cost of trying to exploit any option provided through sysfs in a
 userspace apppllication will nullify any technical benefit of said
 option to the application.
 
 Lets say we want to convert an existing app to a Media Controller
 aware version of that app.  There is a cost to do that.  Will the API
 proposal make exploting some options have a large cost?  Do some of the
 options of the API have a low probability of being exploited?  Do some
 of the options of the API provide very low technical benefit?  What does
 the API proposal do to the total value of the system (e.g. an API with
 no flexibility fixes the total value close to the present value and
 there is no value to be realized from exploiting options in the future).
 
 
 OK, I hope I've communicated what I mean.  I feel like that all may be
 less than clear.
 
 
 These ideas have come from a confluence of research I've been doing at
 work, and V4L-DVB work (thinking about Multiproto vs. DVB v5, and the
 v4l2_subdev IR ops, etc.).
 
 
 Regards,
 Andy
 

just as a side note.

We are not forced to accept any hardware design under all conditions
anymore.

If there are reasons, we can also tell them to go to Bill and Steve and
to pay their fees per device.

Cheers,
Hermann


--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html