Merge tag 'char-misc-4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregk...
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / media / rcar_vin.txt
1 Renesas R-Car Video Input driver (rcar_vin)
2 -------------------------------------------
3
4 The rcar_vin device provides video input capabilities for the Renesas R-Car
5 family of devices.
6
7 Each VIN instance has a single parallel input that supports RGB and YUV video,
8 with both external synchronization and BT.656 synchronization for the latter.
9 Depending on the instance the VIN input is connected to external SoC pins, or
10 on Gen3 platforms to a CSI-2 receiver.
11
12  - compatible: Must be one or more of the following
13    - "renesas,vin-r8a7743" for the R8A7743 device
14    - "renesas,vin-r8a7745" for the R8A7745 device
15    - "renesas,vin-r8a7778" for the R8A7778 device
16    - "renesas,vin-r8a7779" for the R8A7779 device
17    - "renesas,vin-r8a7790" for the R8A7790 device
18    - "renesas,vin-r8a7791" for the R8A7791 device
19    - "renesas,vin-r8a7792" for the R8A7792 device
20    - "renesas,vin-r8a7793" for the R8A7793 device
21    - "renesas,vin-r8a7794" for the R8A7794 device
22    - "renesas,vin-r8a7795" for the R8A7795 device
23    - "renesas,vin-r8a7796" for the R8A7796 device
24    - "renesas,vin-r8a77965" for the R8A77965 device
25    - "renesas,vin-r8a77970" for the R8A77970 device
26    - "renesas,vin-r8a77995" for the R8A77995 device
27    - "renesas,rcar-gen2-vin" for a generic R-Car Gen2 or RZ/G1 compatible
28      device.
29
30    When compatible with the generic version nodes must list the
31    SoC-specific version corresponding to the platform first
32    followed by the generic version.
33
34  - reg: the register base and size for the device registers
35  - interrupts: the interrupt for the device
36  - clocks: Reference to the parent clock
37
38 Additionally, an alias named vinX will need to be created to specify
39 which video input device this is.
40
41 The per-board settings Gen2 platforms:
42
43 - port - sub-node describing a single endpoint connected to the VIN
44   from external SoC pins as described in video-interfaces.txt[1].
45   Only the first one will be considered as each vin interface has one
46   input port.
47
48   - Optional properties for endpoint nodes:
49     - hsync-active: see [1] for description. Default is active high.
50     - vsync-active: see [1] for description. Default is active high.
51       If both HSYNC and VSYNC polarities are not specified, embedded
52       synchronization is selected.
53     - field-active-even: see [1] for description. Default is active high.
54     - bus-width: see [1] for description. The selected bus width depends on
55       the SoC type and selected input image format.
56       Valid values are: 8, 10, 12, 16, 24 and 32.
57     - data-shift: see [1] for description. Valid values are 0 and 8.
58     - data-enable-active: polarity of CLKENB signal, see [1] for
59       description. Default is active high.
60
61 The per-board settings Gen3 platforms:
62
63 Gen3 platforms can support both a single connected parallel input source
64 from external SoC pins (port@0) and/or multiple parallel input sources
65 from local SoC CSI-2 receivers (port@1) depending on SoC.
66
67 - renesas,id - ID number of the VIN, VINx in the documentation.
68 - ports
69     - port@0 - sub-node describing a single endpoint connected to the VIN
70       from external SoC pins as described in video-interfaces.txt[1].
71       Describing more than one endpoint in port@0 is invalid. Only VIN
72       instances that are connected to external pins should have port@0.
73
74       Endpoint nodes of port@0 support the optional properties listed in
75       the Gen2 per-board settings description.
76
77     - port@1 - sub-nodes describing one or more endpoints connected to
78       the VIN from local SoC CSI-2 receivers. The endpoint numbers must
79       use the following schema.
80
81         - endpoint@0 - sub-node describing the endpoint connected to CSI20
82         - endpoint@1 - sub-node describing the endpoint connected to CSI21
83         - endpoint@2 - sub-node describing the endpoint connected to CSI40
84         - endpoint@3 - sub-node describing the endpoint connected to CSI41
85
86       Endpoint nodes of port@1 do not support any optional endpoint property.
87
88 Device node example for Gen2 platforms
89 --------------------------------------
90
91         aliases {
92                 vin0 = &vin0;
93         };
94
95         vin0: vin@e6ef0000 {
96                 compatible = "renesas,vin-r8a7790", "renesas,rcar-gen2-vin";
97                 clocks = <&mstp8_clks R8A7790_CLK_VIN0>;
98                 reg = <0 0xe6ef0000 0 0x1000>;
99                 interrupts = <0 188 IRQ_TYPE_LEVEL_HIGH>;
100                 status = "disabled";
101         };
102
103 Board setup example for Gen2 platforms (vin1 composite video input)
104 -------------------------------------------------------------------
105
106 &i2c2   {
107         status = "okay";
108         pinctrl-0 = <&i2c2_pins>;
109         pinctrl-names = "default";
110
111         adv7180@20 {
112                 compatible = "adi,adv7180";
113                 reg = <0x20>;
114                 remote = <&vin1>;
115
116                 port {
117                         adv7180: endpoint {
118                                 bus-width = <8>;
119                                 remote-endpoint = <&vin1ep0>;
120                         };
121                 };
122         };
123 };
124
125 /* composite video input */
126 &vin1 {
127         pinctrl-0 = <&vin1_pins>;
128         pinctrl-names = "default";
129
130         status = "okay";
131
132         port {
133                 vin1ep0: endpoint {
134                         remote-endpoint = <&adv7180>;
135                         bus-width = <8>;
136                 };
137         };
138 };
139
140 Device node example for Gen3 platforms
141 --------------------------------------
142
143         vin0: video@e6ef0000 {
144                 compatible = "renesas,vin-r8a7795";
145                 reg = <0 0xe6ef0000 0 0x1000>;
146                 interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
147                 clocks = <&cpg CPG_MOD 811>;
148                 power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
149                 resets = <&cpg 811>;
150                 renesas,id = <0>;
151
152                 ports {
153                         #address-cells = <1>;
154                         #size-cells = <0>;
155
156                         port@1 {
157                                 #address-cells = <1>;
158                                 #size-cells = <0>;
159
160                                 reg = <1>;
161
162                                 vin0csi20: endpoint@0 {
163                                         reg = <0>;
164                                         remote-endpoint= <&csi20vin0>;
165                                 };
166                                 vin0csi21: endpoint@1 {
167                                         reg = <1>;
168                                         remote-endpoint= <&csi21vin0>;
169                                 };
170                                 vin0csi40: endpoint@2 {
171                                         reg = <2>;
172                                         remote-endpoint= <&csi40vin0>;
173                                 };
174                         };
175                 };
176         };
177
178         csi20: csi2@fea80000 {
179                 compatible = "renesas,r8a7795-csi2";
180                 reg = <0 0xfea80000 0 0x10000>;
181                 interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
182                 clocks = <&cpg CPG_MOD 714>;
183                 power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
184                 resets = <&cpg 714>;
185
186                 ports {
187                         #address-cells = <1>;
188                         #size-cells = <0>;
189
190                         port@0 {
191                                 reg = <0>;
192                                 csi20_in: endpoint {
193                                         clock-lanes = <0>;
194                                         data-lanes = <1>;
195                                         remote-endpoint = <&adv7482_txb>;
196                                 };
197                         };
198
199                         port@1 {
200                                 #address-cells = <1>;
201                                 #size-cells = <0>;
202
203                                 reg = <1>;
204
205                                 csi20vin0: endpoint@0 {
206                                         reg = <0>;
207                                         remote-endpoint = <&vin0csi20>;
208                                 };
209                         };
210                 };
211         };
212
213 [1] video-interfaces.txt common video media interface