* Analog Devices ADV7604/11/12 video decoder with HDMI receiver

The ADV7604 and ADV7611/12 are multiformat video decoders with an integrated
HDMI receiver. The ADV7604 has four multiplexed HDMI inputs and one analog
input, and the ADV7611 has one HDMI input and no analog input. The 7612 is
similar to the 7611 but has 2 HDMI inputs.

These device tree bindings support the ADV7611/12 only at the moment.

Required Properties:

  - compatible: Must contain one of the following
    - "adi,adv7611" for the ADV7611
    - "adi,adv7612" for the ADV7612

  - reg: I2C slave addresses
    The ADV76xx has up to thirteen 256-byte maps that can be accessed via the
    main I2C ports. Each map has it own I2C address and acts as a standard
    slave device on the I2C bus. The main address is mandatory, others are
    optional and revert to defaults if not specified.

  - hpd-gpios: References to the GPIOs that control the HDMI hot-plug
    detection pins, one per HDMI input. The active flag indicates the GPIO
    level that enables hot-plug detection.

The device node must contain one 'port' child node per device input and output
port, in accordance with the video interface bindings defined in
Documentation/devicetree/bindings/media/video-interfaces.txt. The port nodes
are numbered as follows.

  Port			ADV7611    ADV7612
------------------------------------------------------------
  HDMI			0             0, 1
  Digital output	1                2

The digital output port node must contain at least one endpoint.

Optional Properties:

  - reset-gpios: Reference to the GPIO connected to the device's reset pin.
  - default-input: Select which input is selected after reset.
  - reg-names : Names of maps with programmable addresses.
		It can contain any map needing a non-default address.
		Possible maps names are :
		  "main", "avlink", "cec", "infoframe", "esdp", "dpp", "afe",
		  "rep", "edid", "hdmi", "test", "cp", "vdp"

Optional Endpoint Properties:

  The following three properties are defined in video-interfaces.txt and are
  valid for source endpoints only.

  - hsync-active: Horizontal synchronization polarity. Defaults to active low.
  - vsync-active: Vertical synchronization polarity. Defaults to active low.
  - pclk-sample: Pixel clock polarity. Defaults to output on the falling edge.

  If none of hsync-active, vsync-active and pclk-sample is specified the
  endpoint will use embedded BT.656 synchronization.

Example:

	hdmi_receiver@4c {
		compatible = "adi,adv7611";
		/*
		 * The edid page will be accessible @ 0x66 on the I2C bus. All
		 * other maps will retain their default addresses.
		 */
		reg = <0x4c>, <0x66>;
		reg-names "main", "edid";

		reset-gpios = <&ioexp 0 GPIO_ACTIVE_LOW>;
		hpd-gpios = <&ioexp 2 GPIO_ACTIVE_HIGH>;

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

		default-input = <0>;

		port@0 {
			reg = <0>;
		};
		port@1 {
			reg = <1>;
			hdmi_in: endpoint {
				remote-endpoint = <&ccdc_in>;
			};
		};
	};
