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
7title: Analog Devices ADV748X video decoder with HDMI receiver
8
9maintainers:
10  - Kieran Bingham <kieran.bingham@ideasonboard.com>
11  - Niklas S��derlund <niklas.soderlund@ragnatech.se>
12
13description:
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
18properties:
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
116allOf:
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
145additionalProperties: false
146
147required:
148  - compatible
149  - reg
150  - ports
151
152examples:
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    };
213