xref: /linux/Documentation/devicetree/bindings/display/msm/dp-controller.yaml (revision 2d8c5098b847f37dde8351fb5b5d190f1bb5c576)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/msm/dp-controller.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: MSM Display Port Controller
8
9maintainers:
10  - Kuogee Hsieh <quic_khsieh@quicinc.com>
11  - Abhinav Kumar <quic_abhinavk@quicinc.com>
12
13description: |
14  Device tree bindings for DisplayPort host controller for MSM targets
15  that are compatible with VESA DisplayPort interface specification.
16
17properties:
18  compatible:
19    oneOf:
20      - enum:
21          - qcom,glymur-dp
22          - qcom,sa8775p-dp
23          - qcom,sc7180-dp
24          - qcom,sc7280-dp
25          - qcom,sc7280-edp
26          - qcom,sc8180x-dp
27          - qcom,sc8180x-edp
28          - qcom,sc8280xp-dp
29          - qcom,sc8280xp-edp
30          - qcom,sdm845-dp
31          - qcom,sm8350-dp
32          - qcom,sm8650-dp
33          - qcom,x1e80100-dp
34
35      - items:
36          - enum:
37              - qcom,qcs8300-dp
38          - const: qcom,sa8775p-dp
39
40      - items:
41          - enum:
42              - qcom,sm6350-dp
43          - const: qcom,sc7180-dp
44
45      # deprecated entry for compatibility with old DT
46      - items:
47          - enum:
48              - qcom,sm6350-dp
49          - const: qcom,sm8350-dp
50        deprecated: true
51
52      - items:
53          - enum:
54              - qcom,sar2130p-dp
55              - qcom,sm7150-dp
56              - qcom,sm8150-dp
57              - qcom,sm8250-dp
58              - qcom,sm8450-dp
59              - qcom,sm8550-dp
60          - const: qcom,sm8350-dp
61
62      - items:
63          - enum:
64              - qcom,sm6150-dp
65          - const: qcom,sm8150-dp
66          - const: qcom,sm8350-dp
67
68      - items:
69          - enum:
70              - qcom,sm8750-dp
71          - const: qcom,sm8650-dp
72
73  reg:
74    minItems: 4
75    items:
76      - description: ahb register block
77      - description: aux register block
78      - description: link register block
79      - description: p0 register block
80      - description: p1 register block
81      - description: p2 register block
82      - description: p3 register block
83      - description: mst2link register block
84      - description: mst3link register block
85
86  interrupts:
87    maxItems: 1
88
89  clocks:
90    minItems: 5
91    items:
92      - description: AHB clock to enable register access
93      - description: Display Port AUX clock
94      - description: Display Port Link clock
95      - description: Link interface clock between DP and PHY
96      - description: Display Port stream 0 Pixel clock
97      - description: Display Port stream 1 Pixel clock
98      - description: Display Port stream 2 Pixel clock
99      - description: Display Port stream 3 Pixel clock
100
101  clock-names:
102    minItems: 5
103    items:
104      - const: core_iface
105      - const: core_aux
106      - const: ctrl_link
107      - const: ctrl_link_iface
108      - const: stream_pixel
109      - const: stream_1_pixel
110      - const: stream_2_pixel
111      - const: stream_3_pixel
112
113  phys:
114    maxItems: 1
115
116  phy-names:
117    items:
118      - const: dp
119
120  operating-points-v2: true
121
122  opp-table:
123    type: object
124
125  power-domains:
126    maxItems: 1
127
128  aux-bus:
129    $ref: /schemas/display/dp-aux-bus.yaml#
130
131  data-lanes:
132    $ref: /schemas/types.yaml#/definitions/uint32-array
133    deprecated: true
134    minItems: 1
135    maxItems: 4
136    items:
137      maximum: 3
138
139  "#sound-dai-cells":
140    const: 0
141
142  vdda-0p9-supply:
143    deprecated: true
144  vdda-1p2-supply:
145    deprecated: true
146
147  ports:
148    $ref: /schemas/graph.yaml#/properties/ports
149    properties:
150      port@0:
151        $ref: /schemas/graph.yaml#/properties/port
152        description: Input endpoint of the controller
153
154      port@1:
155        $ref: /schemas/graph.yaml#/$defs/port-base
156        unevaluatedProperties: false
157        description: Output endpoint of the controller
158        properties:
159          endpoint:
160            $ref: /schemas/media/video-interfaces.yaml#
161            unevaluatedProperties: false
162            properties:
163              data-lanes:
164                minItems: 1
165                maxItems: 4
166                items:
167                  enum: [ 0, 1, 2, 3 ]
168
169              link-frequencies:
170                minItems: 1
171                maxItems: 4
172                items:
173                  enum: [ 1620000000, 2700000000, 5400000000, 8100000000 ]
174
175    required:
176      - port@0
177      - port@1
178
179required:
180  - compatible
181  - reg
182  - interrupts
183  - clocks
184  - clock-names
185  - phys
186  - phy-names
187  - power-domains
188  - ports
189
190allOf:
191  # AUX BUS does not exist on DP controllers
192  # Audio output also is present only on DP output
193  - if:
194      properties:
195        compatible:
196          contains:
197            enum:
198              - qcom,sc7280-edp
199              - qcom,sc8180x-edp
200              - qcom,sc8280xp-edp
201    then:
202      properties:
203        "#sound-dai-cells": false
204    else:
205      if:
206        properties:
207          compatible:
208            contains:
209              enum:
210                - qcom,glymur-dp
211                - qcom,sa8775p-dp
212                - qcom,x1e80100-dp
213      then:
214        $ref: /schemas/sound/dai-common.yaml#
215        oneOf:
216          - required:
217              - aux-bus
218          - required:
219              - "#sound-dai-cells"
220      else:
221        properties:
222          aux-bus: false
223        required:
224          - "#sound-dai-cells"
225
226  - if:
227      properties:
228        compatible:
229          contains:
230            enum:
231              # these platforms support SST only
232              - qcom,sc7180-dp
233              - qcom,sc7280-dp
234              - qcom,sc7280-edp
235              - qcom,sc8180x-edp
236              - qcom,sc8280xp-edp
237    then:
238      properties:
239        reg:
240          minItems: 5
241          maxItems: 5
242        clocks:
243          minItems: 5
244          maxItems: 5
245        clocks-names:
246          minItems: 5
247          maxItems: 5
248
249  - if:
250      properties:
251        compatible:
252          contains:
253            enum:
254              # these platforms support 2 streams MST on some interfaces,
255              # others are SST only
256              - qcom,sc8280xp-dp
257              - qcom,x1e80100-dp
258    then:
259      properties:
260        reg:
261          minItems: 5
262          maxItems: 5
263        clocks:
264          minItems: 5
265          maxItems: 6
266        clocks-names:
267          minItems: 5
268          maxItems: 6
269
270  - if:
271      properties:
272        compatible:
273          contains:
274            # 2 streams MST
275            enum:
276              - qcom,sc8180x-dp
277              - qcom,sdm845-dp
278              - qcom,sm8350-dp
279              - qcom,sm8650-dp
280    then:
281      properties:
282        reg:
283          minItems: 5
284          maxItems: 5
285        clocks:
286          minItems: 6
287          maxItems: 6
288        clocks-names:
289          minItems: 6
290          maxItems: 6
291
292  - if:
293      properties:
294        compatible:
295          contains:
296            enum:
297              # these platforms support 4 stream MST on first DP,
298              # 2 streams MST on the second one.
299              - qcom,sa8775p-dp
300    then:
301      properties:
302        reg:
303          minItems: 9
304          maxItems: 9
305        clocks:
306          minItems: 6
307          maxItems: 8
308        clocks-names:
309          minItems: 6
310          maxItems: 8
311
312  - if:
313      properties:
314        compatible:
315          contains:
316            enum:
317              # these platforms support 2 streams MST on some interfaces,
318              # others are SST only, but all controllers have 4 ports
319              - qcom,glymur-dp
320    then:
321      properties:
322        reg:
323          minItems: 9
324          maxItems: 9
325        clocks:
326          minItems: 5
327          maxItems: 6
328        clocks-names:
329          minItems: 5
330          maxItems: 6
331
332unevaluatedProperties: false
333
334examples:
335  - |
336    #include <dt-bindings/interrupt-controller/arm-gic.h>
337    #include <dt-bindings/clock/qcom,dispcc-sc7180.h>
338    #include <dt-bindings/power/qcom-rpmpd.h>
339
340    displayport-controller@ae90000 {
341        compatible = "qcom,sc7180-dp";
342        reg = <0xae90000 0x200>,
343              <0xae90200 0x200>,
344              <0xae90400 0xc00>,
345              <0xae91000 0x400>,
346              <0xae91400 0x400>;
347        interrupt-parent = <&mdss>;
348        interrupts = <12>;
349        clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
350                 <&dispcc DISP_CC_MDSS_DP_AUX_CLK>,
351                 <&dispcc DISP_CC_MDSS_DP_LINK_CLK>,
352                 <&dispcc DISP_CC_MDSS_DP_LINK_INTF_CLK>,
353                 <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK>;
354        clock-names = "core_iface", "core_aux",
355                      "ctrl_link",
356                      "ctrl_link_iface", "stream_pixel";
357
358        assigned-clocks = <&dispcc DISP_CC_MDSS_DP_LINK_CLK_SRC>,
359                          <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK_SRC>;
360
361        assigned-clock-parents = <&dp_phy 0>, <&dp_phy 1>;
362
363        phys = <&dp_phy>;
364        phy-names = "dp";
365
366        #sound-dai-cells = <0>;
367
368        power-domains = <&rpmhpd SC7180_CX>;
369
370        ports {
371            #address-cells = <1>;
372            #size-cells = <0>;
373
374            port@0 {
375                reg = <0>;
376                endpoint {
377                    remote-endpoint = <&dpu_intf0_out>;
378                };
379            };
380
381            port@1 {
382                reg = <1>;
383                endpoint {
384                    remote-endpoint = <&typec>;
385                    data-lanes = <0 1>;
386                    link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
387                };
388            };
389        };
390    };
391...
392