Texas Instruments VPIF
----------------------

The TI Video Port InterFace (VPIF) is the primary component for video
capture and display on the DA850/AM18x family of TI DaVinci/Sitara
SoCs.

TI Document reference: SPRUH82C, Chapter 35
http://www.ti.com/lit/pdf/spruh82

Required properties:
- compatible: must be "ti,da850-vpif"
- reg: physical base address and length of the registers set for the device;
- interrupts: should contain IRQ line for the VPIF

Video Capture:

VPIF has a 16-bit parallel bus input, supporting 2 8-bit channels or a
single 16-bit channel.  It should contain at least one port child node
with child 'endpoint' node. Please refer to the bindings defined in
Documentation/devicetree/bindings/media/video-interfaces.txt.

Example using 2 8-bit input channels, one of which is connected to an
I2C-connected TVP5147 decoder:

	vpif: vpif@217000 {
		compatible = "ti,da850-vpif";
		reg = <0x217000 0x1000>;
		interrupts = <92>;

		port {
			vpif_ch0: endpoint@0 {
				  reg = <0>;
				  bus-width = <8>;
				  remote-endpoint = <&composite>;
			};

			vpif_ch1: endpoint@1 {
				  reg = <1>;
				  bus-width = <8>;
				  data-shift = <8>;
			};
		};
	};

[ ... ]

&i2c0 {

	tvp5147@5d {
		compatible = "ti,tvp5147";
		reg = <0x5d>;
		status = "okay";

		port {
			composite: endpoint {
				hsync-active = <1>;
				vsync-active = <1>;
				pclk-sample = <0>;

				/* VPIF channel 0 (lower 8-bits) */
				remote-endpoint = <&vpif_ch0>;
				bus-width = <8>;
			};
		};
	};
};


Alternatively, an example when the bus is configured as a single
16-bit input (e.g. for raw-capture mode):

	vpif: vpif@217000 {
		compatible = "ti,da850-vpif";
		reg = <0x217000 0x1000>;
		interrupts = <92>;

		port {
			vpif_ch0: endpoint {
				  bus-width = <16>;
			};
		};
	};
