162306a36Sopenharmony_ciTexas Instruments VPIF
262306a36Sopenharmony_ci----------------------
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciThe TI Video Port InterFace (VPIF) is the primary component for video
562306a36Sopenharmony_cicapture and display on the DA850/AM18x family of TI DaVinci/Sitara
662306a36Sopenharmony_ciSoCs.
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciTI Document reference: SPRUH82C, Chapter 35
962306a36Sopenharmony_cihttp://www.ti.com/lit/pdf/spruh82
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciRequired properties:
1262306a36Sopenharmony_ci- compatible: must be "ti,da850-vpif"
1362306a36Sopenharmony_ci- reg: physical base address and length of the registers set for the device;
1462306a36Sopenharmony_ci- interrupts: should contain IRQ line for the VPIF
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciVideo Capture:
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciVPIF has a 16-bit parallel bus input, supporting 2 8-bit channels or a
1962306a36Sopenharmony_cisingle 16-bit channel. It should contain one or two port child nodes
2062306a36Sopenharmony_ciwith child 'endpoint' node. If there are two ports then port@0 must
2162306a36Sopenharmony_cidescribe the input and port@1 output channels. Please refer to the
2262306a36Sopenharmony_cibindings defined in
2362306a36Sopenharmony_ciDocumentation/devicetree/bindings/media/video-interfaces.txt.
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciExample using 2 8-bit input channels, one of which is connected to an
2662306a36Sopenharmony_ciI2C-connected TVP5147 decoder:
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	vpif: vpif@217000 {
2962306a36Sopenharmony_ci		compatible = "ti,da850-vpif";
3062306a36Sopenharmony_ci		reg = <0x217000 0x1000>;
3162306a36Sopenharmony_ci		interrupts = <92>;
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci		port@0 {
3462306a36Sopenharmony_ci			vpif_input_ch0: endpoint@0 {
3562306a36Sopenharmony_ci				reg = <0>;
3662306a36Sopenharmony_ci				bus-width = <8>;
3762306a36Sopenharmony_ci				remote-endpoint = <&composite_in>;
3862306a36Sopenharmony_ci			};
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci			vpif_input_ch1: endpoint@1 {
4162306a36Sopenharmony_ci				reg = <1>;
4262306a36Sopenharmony_ci				bus-width = <8>;
4362306a36Sopenharmony_ci				data-shift = <8>;
4462306a36Sopenharmony_ci			};
4562306a36Sopenharmony_ci		};
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci		port@1 {
4862306a36Sopenharmony_ci			vpif_output_ch0: endpoint {
4962306a36Sopenharmony_ci				bus-width = <8>;
5062306a36Sopenharmony_ci				remote-endpoint = <&composite_out>;
5162306a36Sopenharmony_ci			};
5262306a36Sopenharmony_ci		};
5362306a36Sopenharmony_ci	};
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci[ ... ]
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci&i2c0 {
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci	tvp5147@5d {
6062306a36Sopenharmony_ci		compatible = "ti,tvp5147";
6162306a36Sopenharmony_ci		reg = <0x5d>;
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci		port {
6462306a36Sopenharmony_ci			composite_in: endpoint {
6562306a36Sopenharmony_ci				hsync-active = <1>;
6662306a36Sopenharmony_ci				vsync-active = <1>;
6762306a36Sopenharmony_ci				pclk-sample = <0>;
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci				/* VPIF channel 0 (lower 8-bits) */
7062306a36Sopenharmony_ci				remote-endpoint = <&vpif_input_ch0>;
7162306a36Sopenharmony_ci				bus-width = <8>;
7262306a36Sopenharmony_ci			};
7362306a36Sopenharmony_ci		};
7462306a36Sopenharmony_ci	};
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci	adv7343@2a {
7762306a36Sopenharmony_ci		compatible = "adi,adv7343";
7862306a36Sopenharmony_ci		reg = <0x2a>;
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci		port {
8162306a36Sopenharmony_ci			composite_out: endpoint {
8262306a36Sopenharmony_ci				adi,dac-enable = <1 1 1>;
8362306a36Sopenharmony_ci				adi,sd-dac-enable = <1>;
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci				remote-endpoint = <&vpif_output_ch0>;
8662306a36Sopenharmony_ci				bus-width = <8>;
8762306a36Sopenharmony_ci			};
8862306a36Sopenharmony_ci		};
8962306a36Sopenharmony_ci	};
9062306a36Sopenharmony_ci};
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciAlternatively, an example when the bus is configured as a single
9462306a36Sopenharmony_ci16-bit input (e.g. for raw-capture mode):
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci	vpif: vpif@217000 {
9762306a36Sopenharmony_ci		compatible = "ti,da850-vpif";
9862306a36Sopenharmony_ci		reg = <0x217000 0x1000>;
9962306a36Sopenharmony_ci		interrupts = <92>;
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci		port {
10262306a36Sopenharmony_ci			vpif_ch0: endpoint {
10362306a36Sopenharmony_ci				  bus-width = <16>;
10462306a36Sopenharmony_ci			};
10562306a36Sopenharmony_ci		};
10662306a36Sopenharmony_ci	};
107