Common bindings for video receiver and transmitter interfaces

General concept
---------------

Video data pipelines usually 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 their child 'port' nodes.
Configuration of a port depends on other devices participating in the data
transfer and is described by 'endpoint' subnodes.

device {
	...
	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@0 {
			...
			endpoint@0 { ... };
			endpoint@1 { ... };
		};
		port@1 { ... };
	};
};

If a port can be configured to work with more than one remote device on the same
bus, an 'endpoint' child node must be provided for each of them.  If more than
one port is present in a device node or there is more than one endpoint at a
port, or port node needs to be associated with a selected hardware interface,
a common scheme using '#address-cells', '#size-cells' and 'reg' properties is
used.

All 'port' nodes can be grouped under optional 'ports' node, which allows to
specify #address-cells, #size-cells properties independently for the 'port'
and 'endpoint' nodes and any child device nodes a device might have.

Two 'endpoint' nodes are linked with each other through their 'remote-endpoint'
phandles.  An endpoint subnode of a device contains all properties needed for
configuration of this device for data exchange with other device.  In most
cases properties at the peer 'endpoint' nodes will be identical, however they
might need to be different when there is any signal modifications on the bus
between two devices, e.g. there are logic signal inverters on the lines.

It is allowed for multiple endpoints at a port to be active simultaneously,
where supported by a device.  For example, in case where a data interface of
a device is partitioned into multiple data busses, e.g. 16-bit input port
divided into two separate ITU-R BT.656 8-bit busses.  In such case bus-width
and data-shift properties can be used to assign physical data lines to each
endpoint node (logical bus).

Documenting bindings for devices
--------------------------------

All required and optional bindings the device supports shall be explicitly
documented in device DT binding documentation. This also includes port and
endpoint nodes for the device, including unit-addresses and reg properties where
relevant.

Please also see Documentation/devicetree/bindings/graph.txt .

Required properties
-------------------

If there is more than one 'port' or more than one 'endpoint' node or 'reg'
property is present in port and/or endpoint nodes the following properties
are required in a relevant parent node:

 - #address-cells : number of cells required to define port/endpoint
		    identifier, should be 1.
 - #size-cells    : should be zero.


Optional properties
-------------------

- flash-leds: An array of phandles, each referring to a flash LED, a sub-node
  of the LED driver device node.

- lens-focus: A phandle to the node of the focus lens controller.


Optional endpoint properties
----------------------------

- remote-endpoint: phandle to an 'endpoint' subnode of a remote device node.
- slave-mode: a boolean property indicating that the link is run in slave mode.
  The default when this property is not specified is master mode. In the slave
  mode horizontal and vertical synchronization signals are provided to the
  slave device (data source) by the master device (data sink). In the master
  mode the data source device is also the source of the synchronization signals.
- bus-type: data bus type. Possible values are:
  0 - autodetect based on other properties (MIPI CSI-2 D-PHY, parallel or Bt656)
  1 - MIPI CSI-2 C-PHY
  2 - MIPI CSI1
  3 - CCP2
- bus-width: number of data lines actively used, valid for the parallel busses.
- data-shift: on the parallel data busses, if bus-width is used to specify the
  number of data lines, data-shift can be used to specify which data lines are
  used, e.g. "bus-width=<8>; data-shift=<2>;" means, that lines 9:2 are used.
- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively.
- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively.
  Note, that if HSYNC and VSYNC polarities are not specified, embedded
  synchronization 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: sample data on rising (1) or falling (0) edge of the pixel clock
  signal.
- sync-on-green-active: active state of Sync-on-green (SoG) signal, 0/1 for
  LOW/HIGH respectively.
- data-lanes: an array of physical data lane indexes. Position of an entry
  determines the logical lane number, while the value of an entry indicates
  physical lane, e.g. for 2-lane MIPI CSI-2 bus we could have
  "data-lanes = <1 2>;", assuming the clock lane is on hardware lane 0.
  If the hardware does not support lane reordering, monotonically
  incremented values shall be used from 0 or 1 onwards, depending on
  whether or not there is also a clock lane. This property is valid for
  serial busses only (e.g. MIPI CSI-2).
- clock-lanes: an array of physical clock lane indexes. Position of an entry
  determines the logical lane number, while the value of an entry indicates
  physical lane, e.g. for a MIPI CSI-2 bus we could have "clock-lanes = <0>;",
  which places the clock lane on hardware lane 0. This property is valid for
  serial busses only (e.g. MIPI CSI-2). Note that for the MIPI CSI-2 bus this
  array contains only one entry.
- clock-noncontinuous: a boolean property to allow MIPI CSI-2 non-continuous
  clock mode.
- link-frequencies: Allowed data bus frequencies. For MIPI CSI-2, for
  instance, this is the actual frequency of the bus, not bits per clock per
  lane value. An array of 64-bit unsigned integers.
- lane-polarities: an array of polarities of the lanes starting from the clock
  lane and followed by the data lanes in the same order as in data-lanes.
  Valid values are 0 (normal) and 1 (inverted). The length of the array
  should be the combined length of data-lanes and clock-lanes properties.
  If the lane-polarities property is omitted, the value must be interpreted
  as 0 (normal). This property is valid for serial busses only.
- strobe: Whether the clock signal is used as clock (0) or strobe (1). Used
  with CCP2, for instance.

Example
-------

The example snippet below describes two data pipelines.  ov772x and imx074 are
camera sensors with a parallel and serial (MIPI CSI-2) video bus respectively.
Both sensors are on the I2C control bus corresponding to the i2c0 controller
node.  ov772x sensor is linked directly to the ceu0 video host interface.
imx074 is linked to ceu0 through the MIPI CSI-2 receiver (csi2). ceu0 has a
(single) DMA engine writing captured data to memory.  ceu0 node has a single
'port' node which may indicate that at any time only one of the following data
pipelines can be active: ov772x -> ceu0 or imx074 -> csi2 -> ceu0.

	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>;

			/* Parallel bus endpoint */
			ceu0_1: endpoint@1 {
				reg = <1>;		/* Local endpoint # */
				remote = <&ov772x_1_1>;	/* Remote phandle */
				bus-width = <8>;	/* Used data lines */
				data-shift = <2>;	/* Lines 9:2 are used */

				/* If hsync-active/vsync-active are missing,
				   embedded BT.656 sync is used */
				hsync-active = <0>;	/* Active low */
				vsync-active = <0>;	/* Active low */
				data-active = <1>;	/* Active high */
				pclk-sample = <1>;	/* Rising */
			};

			/* MIPI CSI-2 bus endpoint */
			ceu0_0: endpoint@0 {
				reg = <0>;
				remote = <&csi2_2>;
			};
		};
	};

	i2c0: i2c@0xfff20000 {
		...
		ov772x_1: camera@0x21 {
			compatible = "ovti,ov772x";
			reg = <0x21>;
			vddio-supply = <&regulator1>;
			vddcore-supply = <&regulator2>;

			clock-frequency = <20000000>;
			clocks = <&mclk 0>;
			clock-names = "xclk";

			port {
				/* With 1 endpoint per port no need for addresses. */
				ov772x_1_1: endpoint {
					bus-width = <8>;
					remote-endpoint = <&ceu0_1>;
					hsync-active = <1>;
					vsync-active = <0>; /* Who came up with an
							       inverter here ?... */
					data-active = <1>;
					pclk-sample = <1>;
				};
			};
		};

		imx074: camera@0x1a {
			compatible = "sony,imx074";
			reg = <0x1a>;
			vddio-supply = <&regulator1>;
			vddcore-supply = <&regulator2>;

			clock-frequency = <30000000>;	/* Shared clock with ov772x_1 */
			clocks = <&mclk 0>;
			clock-names = "sysclk";		/* Assuming this is the
							   name in the datasheet */
			port {
				imx074_1: endpoint {
					clock-lanes = <0>;
					data-lanes = <1 2>;
					remote-endpoint = <&csi2_1>;
				};
			};
		};
	};

	csi2: csi2@0xffc90000 {
		compatible = "renesas,sh-mobile-csi2";
		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: endpoint {
				clock-lanes = <0>;
				data-lanes = <2 1>;
				remote-endpoint = <&imx074_1>;
			};
		};
		port@2 {
			reg = <2>;			/* port 2: link to the CEU */

			csi2_2: endpoint {
				remote-endpoint = <&ceu0_0>;
			};
		};
	};
