Analog Device ADV7511(W)/13/33/35 HDMI Encoders
-----------------------------------------

The ADV7511, ADV7511W, ADV7513, ADV7533 and ADV7535 are HDMI audio and video
transmitters compatible with HDMI 1.4 and DVI 1.0. They support color space
conversion, S/PDIF, CEC and HDCP. ADV7533 and ADV7535 support the DSI interface
for input pixels, while the others support RGB interface.

Required properties:

- compatible: Should be one of:
		"adi,adv7511"
		"adi,adv7511w"
		"adi,adv7513"
		"adi,adv7533"
		"adi,adv7535"

- reg: I2C slave address

The ADV7511 supports a large number of input data formats that differ by their
color depth, color format, clock mode, bit justification and random
arrangement of components on the data bus. The combination of the following
properties describe the input and map directly to the video input tables of the
ADV7511 datasheet that document all the supported combinations.

- adi,input-depth: Number of bits per color component at the input (8, 10 or
  12).
- adi,input-colorspace: The input color space, one of "rgb", "yuv422" or
  "yuv444".
- adi,input-clock: The input clock type, one of "1x" (one clock cycle per
  pixel), "2x" (two clock cycles per pixel), "ddr" (one clock cycle per pixel,
  data driven on both edges).

The following input format properties are required except in "rgb 1x" and
"yuv444 1x" modes, in which case they must not be specified.

- adi,input-style: The input components arrangement variant (1, 2 or 3), as
  listed in the input format tables in the datasheet.
- adi,input-justification: The input bit justification ("left", "evenly",
  "right").

- avdd-supply: A 1.8V supply that powers up the AVDD pin on the chip.
- dvdd-supply: A 1.8V supply that powers up the DVDD pin on the chip.
- pvdd-supply: A 1.8V supply that powers up the PVDD pin on the chip.
- dvdd-3v-supply: A 3.3V supply that powers up the pin called DVDD_3V
  on the chip.
- bgvdd-supply: A 1.8V supply that powers up the BGVDD pin. This is
  needed only for ADV7511.

The following properties are required for ADV7533 and ADV7535:

- adi,dsi-lanes: Number of DSI data lanes connected to the DSI host. It should
  be one of 1, 2, 3 or 4.
- a2vdd-supply: 1.8V supply that powers up the A2VDD pin on the chip.
- v3p3-supply: A 3.3V supply that powers up the V3P3 pin on the chip.
- v1p2-supply: A supply that powers up the V1P2 pin on the chip. It can be
  either 1.2V or 1.8V.

Optional properties:

- interrupts: Specifier for the ADV7511 interrupt
- pd-gpios: Specifier for the GPIO connected to the power down signal

- adi,clock-delay: Video data clock delay relative to the pixel clock, in ps
  (-1200 ps .. 1600 ps). Defaults to no delay.
- adi,embedded-sync: The input uses synchronization signals embedded in the
  data stream (similar to BT.656). Defaults to separate H/V synchronization
  signals.
- adi,disable-timing-generator: Only for ADV7533 and ADV7535. Disables the
  internal timing generator. The chip will rely on the sync signals in the DSI
  data lanes, rather than generate its own timings for HDMI output.
- adi,dsi-channel: Only for ADV7533 and ADV7535. DSI channel number to be used
  when communicating with the DSI peripheral. It should be one of 0, 1, 2 or 3.
- adi,addr-cec: Only for ADV7533 and ADV7535. The I2C DSI-CEC register map
  address to be programmed into the MAIN register map.
- adi,addr-edid: Only for ADV7533 and ADV7535. The I2C EDID register map
  to be programmed into the MAIN register map.
- adi,addr-pkt: Only for ADV7533 and ADV7535. The I2C PACKET register map
  to be programmed into the MAIN register map.

Required nodes:

The ADV7511 has two video ports. Their connections are modelled using the OF
graph bindings specified in Documentation/devicetree/bindings/graph.txt.

- Video port 0 for the RGB, YUV or DSI input. In the case of ADV7533 and
  ADV7535, the remote endpoint phandle should be a reference to a valid
  mipi_dsi_host device node.
- Video port 1 for the HDMI output
- Audio port 2 for the HDMI audio input


Example
-------

	adv7511w: hdmi@39 {
		compatible = "adi,adv7511w";
		reg = <39>;
		interrupt-parent = <&gpio3>;
		interrupts = <29 IRQ_TYPE_EDGE_FALLING>;

		adi,input-depth = <8>;
		adi,input-colorspace = "rgb";
		adi,input-clock = "1x";
		adi,input-style = <1>;
		adi,input-justification = "evenly";

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

			port@0 {
				reg = <0>;
				adv7511w_in: endpoint {
					remote-endpoint = <&dpi_out>;
				};
			};

			port@1 {
				reg = <1>;
				adv7511_out: endpoint {
					remote-endpoint = <&hdmi_connector_in>;
				};
			};

			port@2 {
				reg = <2>;
				codec_endpoint: endpoint {
					remote-endpoint = <&i2s0_cpu_endpoint>;
				};
			};
		};
	};
