Renesas RCar Video Input driver (rcar_vin)
------------------------------------------

The rcar_vin device provides video input capabilities for the Renesas R-Car
family of devices. The current blocks are always slaves and suppot one input
channel which can be either RGB, YUYV or BT656.

 - compatible: Must be one or more of the following
   - "renesas,vin-r8a7795" for the R8A7795 device
   - "renesas,vin-r8a7794" for the R8A7794 device
   - "renesas,vin-r8a7793" for the R8A7793 device
   - "renesas,vin-r8a7792" for the R8A7792 device
   - "renesas,vin-r8a7791" for the R8A7791 device
   - "renesas,vin-r8a7790" for the R8A7790 device
   - "renesas,vin-r8a7779" for the R8A7779 device
   - "renesas,vin-r8a7778" for the R8A7778 device
   - "renesas,rcar-gen2-vin" for a generic R-Car Gen2 compatible device.
   - "renesas,rcar-gen3-vin" for a generic R-Car Gen3 compatible device.

   When compatible with the generic version nodes must list the
   SoC-specific version corresponding to the platform first
   followed by the generic version.

 - reg: the register base and size for the device registers
 - interrupts: the interrupt for the device
 - clocks: Reference to the parent clock

Additionally, an alias named vinX will need to be created to specify
which video input device this is.

The per-board settings:
 - port sub-node describing a single endpoint connected to the vin
   as described in video-interfaces.txt[1]. Only the first one will
   be considered as each vin interface has one input port.

   These settings are used to work out video input format and widths
   into the system.


Device node example
-------------------

	aliases {
	       vin0 = &vin0;
	};

        vin0: vin@0xe6ef0000 {
                compatible = "renesas,vin-r8a7790", "renesas,rcar-gen2-vin";
                clocks = <&mstp8_clks R8A7790_CLK_VIN0>;
                reg = <0 0xe6ef0000 0 0x1000>;
                interrupts = <0 188 IRQ_TYPE_LEVEL_HIGH>;
                status = "disabled";
        };

Board setup example (vin1 composite video input)
------------------------------------------------

&i2c2   {
        status = "ok";
        pinctrl-0 = <&i2c2_pins>;
        pinctrl-names = "default";

        adv7180@20 {
                compatible = "adi,adv7180";
                reg = <0x20>;
                remote = <&vin1>;

                port {
                        adv7180: endpoint {
                                bus-width = <8>;
                                remote-endpoint = <&vin1ep0>;
                        };
                };
        };
};

/* composite video input */
&vin1 {
        pinctrl-0 = <&vin1_pins>;
        pinctrl-names = "default";

        status = "ok";

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

                vin1ep0: endpoint {
                        remote-endpoint = <&adv7180>;
                        bus-width = <8>;
                };
        };
};



[1] video-interfaces.txt common video media interface
