Linux Media Controller development
 help / color / mirror / Atom feed
From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: linux-media@vger.kernel.org, devicetree-discuss@lists.ozlabs.org,
	Sylwester Nawrocki <sylvester.nawrocki@gmail.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	Magnus Damm <magnus.damm@gmail.com>,
	linux-sh@vger.kernel.org,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Stephen Warren <swarren@wwwdotorg.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Grant Likely <grant.likely@secretlab.ca>
Subject: Re: [PATCH 04/14] media: add V4L2 DT binding documentation
Date: Fri, 5 Oct 2012 17:41:00 +0200 (CEST)	[thread overview]
Message-ID: <Pine.LNX.4.64.1210051735360.13761@axis700.grange> (raw)
In-Reply-To: <20121005151057.GA5125@pengutronix.de>

Hi Sascha

On Fri, 5 Oct 2012, Sascha Hauer wrote:

> Hi Guennadi,
> 
> Some comments inline.
> 
> 
> On Thu, Sep 27, 2012 at 04:07:23PM +0200, Guennadi Liakhovetski wrote:
> > This patch adds a document, describing common V4L2 device tree bindings.
> > 
> > Co-authored-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> > ---
> >  Documentation/devicetree/bindings/media/v4l2.txt |  162 ++++++++++++++++++++++
> >  1 files changed, 162 insertions(+), 0 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/media/v4l2.txt
> > 
> > diff --git a/Documentation/devicetree/bindings/media/v4l2.txt b/Documentation/devicetree/bindings/media/v4l2.txt
> > new file mode 100644
> > index 0000000..b8b3f41
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/media/v4l2.txt
> > @@ -0,0 +1,162 @@
> > +Video4Linux Version 2 (V4L2)
> > +
> > +General concept
> > +---------------
> > +
> > +Video pipelines consist of external devices, e.g. camera sensors, controlled
> > +over an I2C, SPI or UART bus, and SoC internal IP blocks, including video DMA
> > +engines and video data processors.
> > +
> > +SoC internal blocks are described by DT nodes, placed similarly to other SoC
> > +blocks. External devices are represented as child nodes of their respective bus
> > +controller nodes, e.g. I2C.
> > +
> > +Data interfaces on all video devices are described by "port" child DT nodes.
> > +Configuration of a port depends on other devices participating in the data
> > +transfer and is described by "link" DT nodes, specified as children of the
> > +"port" nodes:
> > +
> > +/foo {
> > +	port@0 {
> > +		link@0 { ... };
> > +		link@1 { ... };
> > +	};
> > +	port@1 { ... };
> > +};
> > +
> > +If a port can be configured to work with more than one other device on the same
> > +bus, a "link" child DT node must be provided for each of them. If more than one
> > +port is present on a device or more than one link is connected to a port, a
> > +common scheme, using "#address-cells," "#size-cells" and "reg" properties is
> > +used.
> > +
> > +Optional link properties:
> > +- remote: phandle to the other endpoint link DT node.
> > +- slave-mode: a boolean property, run the link in slave mode. Default is master
> > +  mode.
> > +- data-shift: on parallel data busses, if data-width is used to specify the
> > +  number of data lines, data-shift can be used to specify which data lines are
> > +  used, e.g. "data-width=<10>; data-shift=<2>;" means, that lines 9:2 are used.
> > +- hsync-active: 1 or 0 for active-high or -low HSYNC signal polarity
> > +  respectively.
> > +- vsync-active: ditto for VSYNC. Note, that if HSYNC and VSYNC polarities are
> > +  not specified, embedded synchronisation may be required, where supported.
> > +- data-active: similar to HSYNC and VSYNC specifies data line polarity.
> > +- field-even-active: field signal level during the even field data transmission.
> > +- pclk-sample: rising (1) or falling (0) edge to sample the pixel clock pin.
> > +- data-lanes: array of serial, e.g. MIPI CSI-2, data hardware lane numbers in
> > +  the ascending order, beginning with logical lane 0.
> > +- clock-lanes: hardware lane number, used for the clock lane.
> > +- clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous
> > +  clock mode.
> > +
> > +Example:
> > +
> > +	ceu0: ceu@0xfe910000 {
> > +		compatible = "renesas,sh-mobile-ceu";
> > +		reg = <0xfe910000 0xa0>;
> > +		interrupts = <0x880>;
> > +
> > +		mclk: master_clock {
> > +			compatible = "renesas,ceu-clock";
> > +			#clock-cells = <1>;
> > +			clock-frequency = <50000000>;	/* max clock frequency */
> > +			clock-output-names = "mclk";
> > +		};
> > +
> > +		port {
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +
> > +			ceu0_1: link@1 {
> > +				reg = <1>;		/* local link # */
> > +				remote = <&ov772x_1_1>;	/* remote phandle */
> > +				bus-width = <8>;	/* used data lines */
> > +				data-shift = <0>;	/* lines 7:0 are used */
> > +
> > +				/* If [hv]sync-active are missing, embedded bt.605 sync is used */
> > +				hsync-active = <1>;	/* active high */
> > +				vsync-active = <1>;	/* active high */
> > +				data-active = <1>;	/* active high */
> > +				pclk-sample = <1>;	/* rising */
> > +			};
> > +
> > +			ceu0_0: link@0 {
> > +				reg = <0>;
> > +				remote = <&csi2_2>;
> > +				immutable;
> > +			};
> > +		};
> > +	};
> > +
> > +	i2c0: i2c@0xfff20000 {
> > +		...
> > +		ov772x_1: camera@0x21 {
> > +			compatible = "omnivision,ov772x";
> > +			reg = <0x21>;
> > +			vddio-supply = <&regulator1>;
> > +			vddcore-supply = <&regulator2>;
> > +
> > +			clock-frequency = <20000000>;
> > +			clocks = <&mclk 0>;
> > +			clock-names = "xclk";
> > +
> > +			port {
> > +				/* With 1 link per port no need in addresses */
> > +				ov772x_1_1: link {
> > +					bus-width = <8>;
> > +					remote = <&ceu0_1>;
> > +					hsync-active = <1>;
> > +					vsync-active = <0>;	/* who came up with an inverter here?... */
> > +					data-active = <1>;
> > +					pclk-sample = <1>;
> > +				};
> 
> I currently do not understand why these properties are both in the sensor
> and in the link. What happens if they conflict? Are inverters assumed
> like suggested above? I think the bus can only have a single bus-width,
> why allow multiple bus widths here?

Yes, these nodes represent port configuration of each party on a certain 
link. And they can differ in certain properties, like - as you correctly 
notice - in the case, when there's an inverter on a line. As for other 
properties, some of them must be identical, like bus-width, still, they 
have to be provided on both ends, because generally drivers have to be 
able to perform all the required configuration based only on the 
information from their own nodes, without looking at "remote" partner node 
properties.

> > +		reg = <0xffc90000 0x1000>;
> > +		interrupts = <0x17a0>;
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +
> > +		port@1 {
> > +			compatible = "renesas,csi2c";	/* one of CSI2I and CSI2C */
> > +			reg = <1>;			/* CSI-2 PHY #1 of 2: PHY_S, PHY_M has port address 0, is unused */
> > +
> > +			csi2_1: link {
> > +				clock-lanes = <0>;
> > +				data-lanes = <2>, <1>;
> > +				remote = <&imx074_1>;
> > +			};
> > +		};
> > +		port@2 {
> > +			reg = <2>;			/* port 2: link to the CEU */
> > +
> > +			csi2_2: link {
> > +				immutable;
> > +				remote = <&ceu0_0>;
> > +			};
> > +		};
> 
> Maybe the example would be clearer if you split it up in two, one simple
> case with the csi2_1 <-> imx074_1 and a more advanced with the link in
> between.

With no link between two ports no connection is possible, so, only 
examples with links make sense.

> It took me some time until I figured out that these are two
> separate camera/sensor pairs. Somehow I was looking for a multiplexer
> between them.

Maybe I can add more comments to the file, perhaps, add an ASCII-art 
chart.

> I am not sure we really want to have these circular phandles here.

It has been suggested and accepted during a discussion at the KS / LPC a 
month ago. The original version only had phandle referencing in one 
direction.

> I
> think phandles in the direction of data flow should be enough. I mean
> the devices probe in arbitrary order anyway and the SoC camera core must
> keep track of the possible sensor/csi combinations anyway, so it should
> be enough to make the connections in a single direction.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

  reply	other threads:[~2012-10-05 15:41 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1348754853-28619-1-git-send-email-g.liakhovetski@gmx.de>
     [not found] ` <1348754853-28619-6-git-send-email-g.liakhovetski@gmx.de>
2012-10-01 21:37   ` [PATCH 05/14] media: add a V4L2 OF parser Sylwester Nawrocki
2012-10-02  9:49     ` Guennadi Liakhovetski
2012-10-02 10:13       ` Sylwester Nawrocki
2012-10-02 11:04         ` Guennadi Liakhovetski
2012-10-05 10:41         ` Hans Verkuil
2012-10-05 10:58           ` Guennadi Liakhovetski
2012-10-05 11:23             ` Hans Verkuil
2012-10-05 11:35               ` Guennadi Liakhovetski
2012-10-08 12:23               ` Guennadi Liakhovetski
2012-10-08 13:48                 ` Hans Verkuil
2012-10-08 14:30                   ` Guennadi Liakhovetski
2012-10-08 14:53                     ` Hans Verkuil
2012-10-08 15:15                       ` Guennadi Liakhovetski
2012-10-08 15:41                         ` Hans Verkuil
2012-10-08 15:53                           ` Guennadi Liakhovetski
2012-10-08 16:00                             ` Guennadi Liakhovetski
2012-10-10 13:22                           ` Laurent Pinchart
2012-10-10 13:18                         ` Laurent Pinchart
2012-10-10 16:50                           ` Stephen Warren
2012-10-10 22:51                             ` Laurent Pinchart
2012-10-11 16:15                               ` Stephen Warren
2012-10-10 13:12                       ` Laurent Pinchart
2012-10-10 12:54                 ` Laurent Pinchart
2012-10-10 13:45                   ` Mauro Carvalho Chehab
2012-10-10 14:48                     ` Laurent Pinchart
2012-10-10 14:57                       ` Mauro Carvalho Chehab
2012-10-10 15:15                         ` Laurent Pinchart
2012-10-11 19:48                 ` Sakari Ailus
2012-10-13  0:16                   ` Guennadi Liakhovetski
2012-10-05 18:30             ` Sylwester Nawrocki
2012-10-05 18:45               ` Mark Brown
2012-10-08  9:40               ` Guennadi Liakhovetski
2012-10-09 10:34                 ` Sylwester Nawrocki
2012-10-09 11:00                   ` Hans Verkuil
2012-10-10 13:25                     ` Laurent Pinchart
2012-10-10 20:23                       ` Sylwester Nawrocki
2012-10-10 20:32                         ` Guennadi Liakhovetski
2012-10-10 21:12                           ` Sylwester Nawrocki
2012-10-10 23:05                           ` Laurent Pinchart
2012-10-10 22:58                         ` Laurent Pinchart
2012-10-08 21:30             ` Laurent Pinchart
2012-10-08 10:03   ` Sylwester Nawrocki
     [not found] ` <1348754853-28619-5-git-send-email-g.liakhovetski@gmx.de>
2012-10-01 20:45   ` [PATCH 04/14] media: add V4L2 DT binding documentation Sylwester Nawrocki
2012-10-02 14:15   ` Rob Herring
2012-10-02 14:33     ` Guennadi Liakhovetski
2012-10-03 20:54       ` Rob Herring
2012-10-05  9:43         ` Guennadi Liakhovetski
2012-10-05 11:31           ` Hans Verkuil
2012-10-05 11:37             ` Guennadi Liakhovetski
2012-10-08 20:00       ` Stephen Warren
2012-10-08 21:00         ` Laurent Pinchart
2012-10-08 21:14           ` Guennadi Liakhovetski
2012-10-09  9:21             ` Hans Verkuil
2012-10-09  9:29               ` Guennadi Liakhovetski
2012-10-05 15:10   ` Sascha Hauer
2012-10-05 15:41     ` Guennadi Liakhovetski [this message]
2012-10-05 16:02       ` Sascha Hauer
2012-10-08  7:58         ` Guennadi Liakhovetski
2012-10-10  8:40           ` Sascha Hauer
2012-10-10  8:51             ` Mark Brown
2012-10-10  9:21               ` Sascha Hauer
2012-10-10 10:46                 ` Mark Brown
2012-10-08 20:12   ` Stephen Warren
2012-10-05 12:32 ` [PATCH 00/14] V4L2 DT support Sylwester Nawrocki
2012-10-05 14:41   ` Guennadi Liakhovetski
     [not found] ` <1348754853-28619-11-git-send-email-g.liakhovetski@gmx.de>
2012-10-05 19:11   ` [PATCH 10/14] media: soc-camera: support OF cameras Sylwester Nawrocki
2012-10-08  8:37     ` Guennadi Liakhovetski
2012-10-08  9:28       ` Sylwester Nawrocki
2013-04-08  9:19   ` Barry Song
2013-04-08 11:21     ` Guennadi Liakhovetski
2013-04-08 11:49       ` Barry Song
     [not found] ` <1348754853-28619-8-git-send-email-g.liakhovetski@gmx.de>
2013-04-10 10:38   ` [PATCH 07/14] media: soc-camera: support deferred probing of clients Barry Song
2013-04-10 12:06     ` Guennadi Liakhovetski
2013-04-10 13:53       ` Barry Song
2013-04-10 13:56         ` Mark Brown
2013-04-10 14:00           ` Barry Song
2013-04-10 14:03         ` Guennadi Liakhovetski
2013-04-10 14:30           ` Barry Song
2013-04-10 14:43             ` Guennadi Liakhovetski
2013-04-10 15:02               ` Barry Song

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=Pine.LNX.4.64.1210051735360.13761@axis700.grange \
    --to=g.liakhovetski@gmx.de \
    --cc=arnd@arndb.de \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --cc=hverkuil@xs4all.nl \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=s.hauer@pengutronix.de \
    --cc=swarren@wwwdotorg.org \
    --cc=sylvester.nawrocki@gmail.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