18c2ecf20Sopenharmony_ciTexas Instruments VPIF
28c2ecf20Sopenharmony_ci----------------------
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ciThe TI Video Port InterFace (VPIF) is the primary component for video
58c2ecf20Sopenharmony_cicapture and display on the DA850/AM18x family of TI DaVinci/Sitara
68c2ecf20Sopenharmony_ciSoCs.
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ciTI Document reference: SPRUH82C, Chapter 35
98c2ecf20Sopenharmony_cihttp://www.ti.com/lit/pdf/spruh82
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ciRequired properties:
128c2ecf20Sopenharmony_ci- compatible: must be "ti,da850-vpif"
138c2ecf20Sopenharmony_ci- reg: physical base address and length of the registers set for the device;
148c2ecf20Sopenharmony_ci- interrupts: should contain IRQ line for the VPIF
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ciVideo Capture:
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciVPIF has a 16-bit parallel bus input, supporting 2 8-bit channels or a
198c2ecf20Sopenharmony_cisingle 16-bit channel. It should contain one or two port child nodes
208c2ecf20Sopenharmony_ciwith child 'endpoint' node. If there are two ports then port@0 must
218c2ecf20Sopenharmony_cidescribe the input and port@1 output channels. Please refer to the
228c2ecf20Sopenharmony_cibindings defined in
238c2ecf20Sopenharmony_ciDocumentation/devicetree/bindings/media/video-interfaces.txt.
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciExample using 2 8-bit input channels, one of which is connected to an
268c2ecf20Sopenharmony_ciI2C-connected TVP5147 decoder:
278c2ecf20Sopenharmony_ci
288c2ecf20Sopenharmony_ci	vpif: vpif@217000 {
298c2ecf20Sopenharmony_ci		compatible = "ti,da850-vpif";
308c2ecf20Sopenharmony_ci		reg = <0x217000 0x1000>;
318c2ecf20Sopenharmony_ci		interrupts = <92>;
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci		port@0 {
348c2ecf20Sopenharmony_ci			vpif_input_ch0: endpoint@0 {
358c2ecf20Sopenharmony_ci				reg = <0>;
368c2ecf20Sopenharmony_ci				bus-width = <8>;
378c2ecf20Sopenharmony_ci				remote-endpoint = <&composite_in>;
388c2ecf20Sopenharmony_ci			};
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci			vpif_input_ch1: endpoint@1 {
418c2ecf20Sopenharmony_ci				reg = <1>;
428c2ecf20Sopenharmony_ci				bus-width = <8>;
438c2ecf20Sopenharmony_ci				data-shift = <8>;
448c2ecf20Sopenharmony_ci			};
458c2ecf20Sopenharmony_ci		};
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci		port@1 {
488c2ecf20Sopenharmony_ci			vpif_output_ch0: endpoint {
498c2ecf20Sopenharmony_ci				bus-width = <8>;
508c2ecf20Sopenharmony_ci				remote-endpoint = <&composite_out>;
518c2ecf20Sopenharmony_ci			};
528c2ecf20Sopenharmony_ci		};
538c2ecf20Sopenharmony_ci	};
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci[ ... ]
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci&i2c0 {
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci	tvp5147@5d {
608c2ecf20Sopenharmony_ci		compatible = "ti,tvp5147";
618c2ecf20Sopenharmony_ci		reg = <0x5d>;
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci		port {
648c2ecf20Sopenharmony_ci			composite_in: endpoint {
658c2ecf20Sopenharmony_ci				hsync-active = <1>;
668c2ecf20Sopenharmony_ci				vsync-active = <1>;
678c2ecf20Sopenharmony_ci				pclk-sample = <0>;
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci				/* VPIF channel 0 (lower 8-bits) */
708c2ecf20Sopenharmony_ci				remote-endpoint = <&vpif_input_ch0>;
718c2ecf20Sopenharmony_ci				bus-width = <8>;
728c2ecf20Sopenharmony_ci			};
738c2ecf20Sopenharmony_ci		};
748c2ecf20Sopenharmony_ci	};
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci	adv7343@2a {
778c2ecf20Sopenharmony_ci		compatible = "adi,adv7343";
788c2ecf20Sopenharmony_ci		reg = <0x2a>;
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci		port {
818c2ecf20Sopenharmony_ci			composite_out: endpoint {
828c2ecf20Sopenharmony_ci				adi,dac-enable = <1 1 1>;
838c2ecf20Sopenharmony_ci				adi,sd-dac-enable = <1>;
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci				remote-endpoint = <&vpif_output_ch0>;
868c2ecf20Sopenharmony_ci				bus-width = <8>;
878c2ecf20Sopenharmony_ci			};
888c2ecf20Sopenharmony_ci		};
898c2ecf20Sopenharmony_ci	};
908c2ecf20Sopenharmony_ci};
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ciAlternatively, an example when the bus is configured as a single
948c2ecf20Sopenharmony_ci16-bit input (e.g. for raw-capture mode):
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci	vpif: vpif@217000 {
978c2ecf20Sopenharmony_ci		compatible = "ti,da850-vpif";
988c2ecf20Sopenharmony_ci		reg = <0x217000 0x1000>;
998c2ecf20Sopenharmony_ci		interrupts = <92>;
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci		port {
1028c2ecf20Sopenharmony_ci			vpif_ch0: endpoint {
1038c2ecf20Sopenharmony_ci				  bus-width = <16>;
1048c2ecf20Sopenharmony_ci			};
1058c2ecf20Sopenharmony_ci		};
1068c2ecf20Sopenharmony_ci	};
107