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