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 of the following
   - "renesas,vin-r8a7794" for the R8A7794 device
   - "renesas,vin-r8a7793" for the R8A7793 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
 - 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";
                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
