linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@s-opensource.com>
To: Sakari Ailus <sakari.ailus@iki.fi>
Cc: Linux Media Mailing List <linux-media@vger.kernel.org>,
	Jonathan Corbet <corbet@lwn.net>,
	Mauro Carvalho Chehab <mchehab@infradead.org>,
	Linux Doc Mailing List <linux-doc@vger.kernel.org>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	Sakari Ailus <sakari.ailus@linux.intel.com>
Subject: Re: [PATCH v7 4/7] media: open.rst: document devnode-centric and mc-centric types
Date: Tue, 10 Oct 2017 08:24:02 -0300	[thread overview]
Message-ID: <20171010082402.1bfe3b45@vento.lan> (raw)
In-Reply-To: <20171006122426.3yv4je6lzxf7ikqh@valkosipuli.retiisi.org.uk>

Em Fri, 6 Oct 2017 15:24:27 +0300
Sakari Ailus <sakari.ailus@iki.fi> escreveu:

> > +When V4L2 was originally designed, there was only one type of
> > +media hardware control: via the **V4L2 device nodes**. We refer to this kind
> > +of control as **V4L2 device node centric** (or, simply, "**vdevnode-centric**").  
> 
> I think this could be easier understood if we start with the differences
> instead of what we call the types. I'd also refer to interfaces rather than
> their instances.
> 
> How about (pending finalising discussion on naming):
> 
> When **V4L2** was originally designed, the **V4L2 device** served the
> purpose of both control and data interfaces and there was no separation
> between the two interface-wise. V4L2 controls, setting inputs and outputs,
> format configuration and buffer related operations were all performed
> through the same **V4L2 device nodes**. Devices offering such interface are
> called **V4L2 device node centric**.
> 
> Later on, support for the **Media controller** interface was added to V4L2
> in order to better support complex **V4L2 aggregate devices** where the
> **V4L2** interface alone could no longer meaningfully serve as both a
> control and a data interface. On such aggregate devices, **V4L2** interface
> remains a data interface whereas control takes place through the **Media
> controller** and **V4L2 sub-device** interfaces. Stream control is an
> exception to this: streaming is enabled and disabled through the **V4L2**
> interface. These devices are called **Media controller centric**.
> 
> **MC-centric** aggregate devices provide more versatile control of the
> hardware than **V4L2 device node centric** devices. On **MC-centric**
> aggregate devices the **V4L2 sub-device nodes** represent specific parts of
> the **V4L2 aggregate device**, to which they enable control.
> 
> Also, the additional versatility of **MC-centric** aggregate devices comes
> with additional responsibilities, the main one of which is the requirements
> of the user configuring the device pipeline before starting streaming. This
> typically involves configuring the links using the **Media controller**
> interface and the media bus formats on pads (at both ends of the links)
> using the **V4L2 sub-device** interface.

Works for me. 

Except that I didn't like the idea of "aggregate devices". So, I kept
the previously agreed term "V4L2 hardware".

Also, as everything comes with a price, I added it on this paragraph:

	**MC-centric** V4L2 hardware provide more versatile control of the
	hardware than **V4L2 device node centric** devices at the expense of
	requiring device-specific userspace settings.

Finally, I'm now using :term:`foo` Sphinx directive on the patchset
(I'll send a new version soon) at the first time a term appears inside
a section[1].

[1] We might repeat that on every occurrence of a term, but:
	a) it sounded overkill to me;
	b) if we decide to change some term, there will be a lot
	   more stuff to be fixed, specially for terms in plural,
	   as a plural for :term:`device` would be
	   :term:`devices <device>`.
    Once we set this patchset into a stone, it could make sense to
    run some script that would replace every other occurrence of the
    glossary terms within Documentation/media/uapi/v4l to link to
    the glossary reference - but let's postpone this to be applied
    on a separate patchset.
    Btw, it probably makes sense to make the glossary as a general
    media book glossary - but again, this is out of topic for this
    patchset.


With this, the version I'm adding is:

<snippet>
When **V4L2** was originally designed, the
:term:`V4L2 device nodes <v4l2 device node>` served the purpose of both
control and data interfaces and there was no separation
between the two interface-wise. V4L2 controls, setting inputs and outputs,
format configuration and buffer related operations were all performed
through the same **V4L2 device nodes**. Devices offering such interface are
called **V4L2 device node centric**.

Later on, support for the :term:`media controller` interface was added
to V4L2 in order to better support complex :term:`V4L2 hardware` where the 
**V4L2** interface alone could no longer meaningfully serve as both a
control and a data interface. On such V4L2 hardware, **V4L2** interface
remains a data interface whereas control takes place through the 
:term:`media controller` and :term:`V4L2 sub-device` interfaces. Stream
control is an exception to this: streaming is enabled and disabled
through the **V4L2** interface. These devices are called
**Media controller centric**.

**MC-centric** V4L2 hardware provide more versatile control of the
hardware than **V4L2 device node centric** devices at the expense of
requiring device-specific userspace settings.

On **MC-centric** V4L2 hardware, the **V4L2 sub-device nodes** 
represent specific parts of the V4L2 hardware, to which they enable
control.

Also, the additional versatility of **MC-centric** V4L2 hardware comes
with additional responsibilities, the main one of which is the requirements
of the user configuring the device pipeline before starting streaming. This
typically involves configuring the links using the **Media controller**
interface and the media bus formats on pads (at both ends of the links)
using the **V4L2 sub-device** interface.
</snippet>



Thanks,
Mauro

  reply	other threads:[~2017-10-10 11:24 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-27 22:23 [PATCH v7 0/7] document types of hardware control for V4L2 Mauro Carvalho Chehab
2017-09-27 22:23 ` [PATCH v7 1/7] media: add glossary.rst with a glossary of terms used at V4L2 spec Mauro Carvalho Chehab
2017-10-06 10:22   ` Sakari Ailus
2017-10-06 11:51     ` Sakari Ailus
2017-10-10  9:15       ` Mauro Carvalho Chehab
2017-10-10 11:54         ` Sakari Ailus
2017-10-10 12:49           ` Mauro Carvalho Chehab
2017-10-10 22:18             ` Sakari Ailus
2017-10-11 10:15               ` Mauro Carvalho Chehab
2017-10-10  8:30     ` Mauro Carvalho Chehab
2017-10-10  8:56       ` Sakari Ailus
2017-10-10  8:51     ` Mauro Carvalho Chehab
2017-10-10  8:54       ` [PATCH] " Mauro Carvalho Chehab
2017-10-10  7:47   ` [PATCH v7 1/7] " Hans Verkuil
2017-10-10  8:20     ` Mauro Carvalho Chehab
2017-10-10  8:27       ` Hans Verkuil
2017-10-10  8:36         ` Mauro Carvalho Chehab
2017-09-27 22:23 ` [PATCH v7 2/7] media: open.rst: better document device node naming Mauro Carvalho Chehab
2017-09-27 22:23 ` [PATCH v7 3/7] media: open.rst: remove the minor number range Mauro Carvalho Chehab
2017-09-27 22:23 ` [PATCH v7 4/7] media: open.rst: document devnode-centric and mc-centric types Mauro Carvalho Chehab
2017-09-27 22:32   ` Randy Dunlap
2017-09-28  1:09     ` Mauro Carvalho Chehab
2017-10-06 12:24   ` Sakari Ailus
2017-10-10 11:24     ` Mauro Carvalho Chehab [this message]
2017-09-27 22:23 ` [PATCH v7 5/7] media: open.rst: Adjust some terms to match the glossary Mauro Carvalho Chehab
2017-10-06 12:48   ` Sakari Ailus
2017-10-10 11:37     ` Mauro Carvalho Chehab
2017-10-10 22:41       ` Sakari Ailus
2017-10-11  9:05         ` Mauro Carvalho Chehab
2017-09-27 22:23 ` [PATCH v7 6/7] media: videodev2: add a flag for MC-centric devices Mauro Carvalho Chehab
2017-09-29  6:27   ` Sakari Ailus
2017-10-10  7:58   ` Hans Verkuil
2017-09-27 22:23 ` [PATCH v7 7/7] media: open.rst: add a notice about subdev-API on vdev-centric Mauro Carvalho Chehab
2017-09-29  6:26   ` Sakari Ailus
2017-10-10  8:02   ` Hans Verkuil

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=20171010082402.1bfe3b45@vento.lan \
    --to=mchehab@s-opensource.com \
    --cc=corbet@lwn.net \
    --cc=hans.verkuil@cisco.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@infradead.org \
    --cc=sakari.ailus@iki.fi \
    --cc=sakari.ailus@linux.intel.com \
    /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;
as well as URLs for NNTP newsgroup(s).