xref: /linux/Documentation/devicetree/bindings/display/msm/dp-controller.yaml (revision 6dfafbd0299a60bfb5d5e277fdf100037c7ded07)
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,glymur-dp
257              - qcom,sc8280xp-dp
258              - qcom,x1e80100-dp
259    then:
260      properties:
261        reg:
262          minItems: 5
263          maxItems: 5
264        clocks:
265          minItems: 5
266          maxItems: 6
267        clocks-names:
268          minItems: 5
269          maxItems: 6
270
271  - if:
272      properties:
273        compatible:
274          contains:
275            # 2 streams MST
276            enum:
277              - qcom,sc8180x-dp
278              - qcom,sdm845-dp
279              - qcom,sm8350-dp
280              - qcom,sm8650-dp
281    then:
282      properties:
283        reg:
284          minItems: 5
285          maxItems: 5
286        clocks:
287          minItems: 6
288          maxItems: 6
289        clocks-names:
290          minItems: 6
291          maxItems: 6
292
293  - if:
294      properties:
295        compatible:
296          contains:
297            enum:
298              # these platforms support 4 stream MST on first DP,
299              # 2 streams MST on the second one.
300              - qcom,sa8775p-dp
301    then:
302      properties:
303        reg:
304          minItems: 9
305          maxItems: 9
306        clocks:
307          minItems: 6
308          maxItems: 8
309        clocks-names:
310          minItems: 6
311          maxItems: 8
312
313unevaluatedProperties: false
314
315examples:
316  - |
317    #include <dt-bindings/interrupt-controller/arm-gic.h>
318    #include <dt-bindings/clock/qcom,dispcc-sc7180.h>
319    #include <dt-bindings/power/qcom-rpmpd.h>
320
321    displayport-controller@ae90000 {
322        compatible = "qcom,sc7180-dp";
323        reg = <0xae90000 0x200>,
324              <0xae90200 0x200>,
325              <0xae90400 0xc00>,
326              <0xae91000 0x400>,
327              <0xae91400 0x400>;
328        interrupt-parent = <&mdss>;
329        interrupts = <12>;
330        clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
331                 <&dispcc DISP_CC_MDSS_DP_AUX_CLK>,
332                 <&dispcc DISP_CC_MDSS_DP_LINK_CLK>,
333                 <&dispcc DISP_CC_MDSS_DP_LINK_INTF_CLK>,
334                 <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK>;
335        clock-names = "core_iface", "core_aux",
336                      "ctrl_link",
337                      "ctrl_link_iface", "stream_pixel";
338
339        assigned-clocks = <&dispcc DISP_CC_MDSS_DP_LINK_CLK_SRC>,
340                          <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK_SRC>;
341
342        assigned-clock-parents = <&dp_phy 0>, <&dp_phy 1>;
343
344        phys = <&dp_phy>;
345        phy-names = "dp";
346
347        #sound-dai-cells = <0>;
348
349        power-domains = <&rpmhpd SC7180_CX>;
350
351        ports {
352            #address-cells = <1>;
353            #size-cells = <0>;
354
355            port@0 {
356                reg = <0>;
357                endpoint {
358                    remote-endpoint = <&dpu_intf0_out>;
359                };
360            };
361
362            port@1 {
363                reg = <1>;
364                endpoint {
365                    remote-endpoint = <&typec>;
366                    data-lanes = <0 1>;
367                    link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
368                };
369            };
370        };
371    };
372...
373