GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / media / i2c / adv748x.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/media/i2c/adv748x.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Analog Devices ADV748X video decoder with HDMI receiver
8
9 maintainers:
10   - Kieran Bingham <kieran.bingham@ideasonboard.com>
11   - Niklas Söderlund <niklas.soderlund@ragnatech.se>
12
13 description:
14   The ADV7481 and ADV7482 are multi format video decoders with an integrated
15   HDMI receiver. They can output CSI-2 on two independent outputs TXA and TXB
16   from three input sources HDMI, analog and TTL.
17
18 properties:
19   compatible:
20     items:
21       - enum:
22           - adi,adv7481
23           - adi,adv7482
24
25   reg:
26     minItems: 1
27     maxItems: 12
28     description:
29       The ADV748x has up to twelve 256-byte maps that can be accessed via the
30       main I2C ports. Each map has it own I2C address and acts as a standard
31       slave device on the I2C bus. The main address is mandatory, others are
32       optional and remain at default values if not specified.
33
34   reg-names:
35     minItems: 1
36     items:
37       - const: main
38       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
39       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
40       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
41       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
42       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
43       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
44       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
45       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
46       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
47       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
48       - enum: [ dpll, cp, hdmi, edid, repeater, infoframe, cbus, cec, sdp, txa, txb ]
49
50   interrupts: true
51
52   interrupt-names: true
53
54   ports:
55     $ref: /schemas/graph.yaml#/properties/ports
56
57     patternProperties:
58       "^port@[0-7]$":
59         $ref: /schemas/graph.yaml#/properties/port
60         description: Input port nodes for analog inputs AIN[0-7].
61
62     properties:
63       port@8:
64         $ref: /schemas/graph.yaml#/properties/port
65         description: Input port node for HDMI.
66
67       port@9:
68         $ref: /schemas/graph.yaml#/properties/port
69         description: Input port node for TTL.
70
71       port@a:
72         $ref: /schemas/graph.yaml#/$defs/port-base
73         unevaluatedProperties: false
74         description:
75           Output port node, single endpoint describing the CSI-2 transmitter TXA.
76
77         properties:
78           endpoint:
79             $ref: /schemas/media/video-interfaces.yaml#
80             unevaluatedProperties: false
81
82             properties:
83               clock-lanes:
84                 maxItems: 1
85
86               data-lanes:
87                 minItems: 1
88                 maxItems: 4
89
90             required:
91               - clock-lanes
92               - data-lanes
93
94       port@b:
95         $ref: /schemas/graph.yaml#/$defs/port-base
96         unevaluatedProperties: false
97         description:
98           Output port node, single endpoint describing the CSI-2 transmitter TXB.
99
100         properties:
101           endpoint:
102             $ref: /schemas/media/video-interfaces.yaml#
103             unevaluatedProperties: false
104
105             properties:
106               clock-lanes:
107                 maxItems: 1
108
109               data-lanes:
110                 maxItems: 1
111
112             required:
113               - clock-lanes
114               - data-lanes
115
116 allOf:
117   - if:
118       properties:
119         compatible:
120           contains:
121             const: adi,adv7481
122     then:
123       properties:
124         interrupts:
125           minItems: 1
126           maxItems: 3
127
128         interrupt-names:
129           minItems: 1
130           maxItems: 3
131           items:
132             enum: [ intrq1, intrq2, intrq3 ]
133     else:
134       properties:
135         interrupts:
136           minItems: 1
137           maxItems: 2
138
139         interrupt-names:
140           minItems: 1
141           maxItems: 2
142           items:
143             enum: [ intrq1, intrq2 ]
144
145 additionalProperties: false
146
147 required:
148   - compatible
149   - reg
150   - ports
151
152 examples:
153   - |
154     #include <dt-bindings/interrupt-controller/irq.h>
155
156     i2c {
157         #address-cells = <1>;
158         #size-cells = <0>;
159
160         video-receiver@70 {
161             compatible = "adi,adv7482";
162             reg = <0x70 0x71 0x72 0x73 0x74 0x75
163                    0x60 0x61 0x62 0x63 0x64 0x65>;
164             reg-names = "main", "dpll", "cp", "hdmi", "edid", "repeater",
165                         "infoframe", "cbus", "cec", "sdp", "txa", "txb";
166
167             interrupt-parent = <&gpio6>;
168             interrupts = <30 IRQ_TYPE_LEVEL_LOW>, <31 IRQ_TYPE_LEVEL_LOW>;
169             interrupt-names = "intrq1", "intrq2";
170
171             ports {
172                 #address-cells = <1>;
173                 #size-cells = <0>;
174
175                 port@7 {
176                     reg = <7>;
177
178                     adv7482_ain7: endpoint {
179                         remote-endpoint = <&cvbs_in>;
180                     };
181                 };
182
183                 port@8 {
184                     reg = <8>;
185
186                     adv7482_hdmi: endpoint {
187                         remote-endpoint = <&hdmi_in>;
188                     };
189                 };
190
191                 port@a {
192                     reg = <10>;
193
194                     adv7482_txa: endpoint {
195                         clock-lanes = <0>;
196                         data-lanes = <1 2 3 4>;
197                         remote-endpoint = <&csi40_in>;
198                     };
199                 };
200
201                 port@b {
202                     reg = <11>;
203
204                     adv7482_txb: endpoint {
205                         clock-lanes = <0>;
206                         data-lanes = <1>;
207                         remote-endpoint = <&csi20_in>;
208                     };
209                 };
210             };
211         };
212     };