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