xref: /linux/Documentation/devicetree/bindings/display/msm/dsi-controller-main.yaml (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
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/dsi-controller-main.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Display DSI controller
8
9maintainers:
10  - Krishna Manikandan <quic_mkrishn@quicinc.com>
11
12properties:
13  compatible:
14    oneOf:
15      - items:
16          - enum:
17              - qcom,apq8064-dsi-ctrl
18              - qcom,msm8226-dsi-ctrl
19              - qcom,msm8916-dsi-ctrl
20              - qcom,msm8953-dsi-ctrl
21              - qcom,msm8974-dsi-ctrl
22              - qcom,msm8976-dsi-ctrl
23              - qcom,msm8996-dsi-ctrl
24              - qcom,msm8998-dsi-ctrl
25              - qcom,qcm2290-dsi-ctrl
26              - qcom,sc7180-dsi-ctrl
27              - qcom,sc7280-dsi-ctrl
28              - qcom,sdm660-dsi-ctrl
29              - qcom,sdm670-dsi-ctrl
30              - qcom,sdm845-dsi-ctrl
31              - qcom,sm6115-dsi-ctrl
32              - qcom,sm6125-dsi-ctrl
33              - qcom,sm6350-dsi-ctrl
34              - qcom,sm6375-dsi-ctrl
35              - qcom,sm7150-dsi-ctrl
36              - qcom,sm8150-dsi-ctrl
37              - qcom,sm8250-dsi-ctrl
38              - qcom,sm8350-dsi-ctrl
39              - qcom,sm8450-dsi-ctrl
40              - qcom,sm8550-dsi-ctrl
41              - qcom,sm8650-dsi-ctrl
42          - const: qcom,mdss-dsi-ctrl
43      - enum:
44          - qcom,dsi-ctrl-6g-qcm2290
45          - qcom,mdss-dsi-ctrl # This should always come with an SoC-specific compatible
46        deprecated: true
47
48  reg:
49    maxItems: 1
50
51  reg-names:
52    const: dsi_ctrl
53
54  interrupts:
55    maxItems: 1
56
57  clocks:
58    description: |
59      Several clocks are used, depending on the variant. Typical ones are::
60       - bus:: Display AHB clock.
61       - byte:: Display byte clock.
62       - byte_intf:: Display byte interface clock.
63       - core:: Display core clock.
64       - core_mss:: Core MultiMedia SubSystem clock.
65       - iface:: Display AXI clock.
66       - mdp_core:: MDP Core clock.
67       - mnoc:: MNOC clock
68       - pixel:: Display pixel clock.
69    minItems: 3
70    maxItems: 9
71
72  clock-names:
73    minItems: 3
74    maxItems: 9
75
76  phys:
77    maxItems: 1
78
79  phy-names:
80    deprecated: true
81    const: dsi
82
83  syscon-sfpb:
84    description: A phandle to mmss_sfpb syscon node (only for DSIv2).
85    $ref: /schemas/types.yaml#/definitions/phandle
86
87  qcom,dual-dsi-mode:
88    type: boolean
89    description: |
90      Indicates if the DSI controller is driving a panel which needs
91      2 DSI links.
92
93  qcom,master-dsi:
94    type: boolean
95    description: |
96      Indicates if the DSI controller is the master DSI controller when
97      qcom,dual-dsi-mode enabled.
98
99  qcom,sync-dual-dsi:
100    type: boolean
101    description: |
102      Indicates if the DSI controller needs to sync the other DSI controller
103      with MIPI DCS commands when qcom,dual-dsi-mode enabled.
104
105  assigned-clocks:
106    minItems: 2
107    maxItems: 4
108    description: |
109      Parents of "byte" and "pixel" for the given platform.
110      For DSIv2 platforms this should contain "byte", "esc", "src" and
111      "pixel_src" clocks.
112
113  assigned-clock-parents:
114    minItems: 2
115    maxItems: 4
116    description: |
117      The Byte clock and Pixel clock PLL outputs provided by a DSI PHY block.
118
119  power-domains:
120    maxItems: 1
121
122  operating-points-v2: true
123
124  opp-table:
125    type: object
126
127  ports:
128    $ref: /schemas/graph.yaml#/properties/ports
129    description: |
130      Contains DSI controller input and output ports as children, each
131      containing one endpoint subnode.
132
133    properties:
134      port@0:
135        $ref: /schemas/graph.yaml#/$defs/port-base
136        unevaluatedProperties: false
137        description: |
138          Input endpoints of the controller.
139        properties:
140          endpoint:
141            $ref: /schemas/media/video-interfaces.yaml#
142            unevaluatedProperties: false
143            properties:
144              data-lanes:
145                maxItems: 4
146                minItems: 1
147                items:
148                  enum: [ 0, 1, 2, 3 ]
149
150      port@1:
151        $ref: /schemas/graph.yaml#/$defs/port-base
152        unevaluatedProperties: false
153        description: |
154          Output endpoints of the controller.
155        properties:
156          endpoint:
157            $ref: /schemas/media/video-interfaces.yaml#
158            unevaluatedProperties: false
159            properties:
160              data-lanes:
161                maxItems: 4
162                minItems: 1
163                items:
164                  enum: [ 0, 1, 2, 3 ]
165
166              qcom,te-source:
167                $ref: /schemas/types.yaml#/definitions/string
168                description:
169                  Specifies the source of vsync signal from the panel used for
170                  tearing elimination.
171                default: mdp_vsync_p
172                enum:
173                  - mdp_vsync_p
174                  - mdp_vsync_s
175                  - mdp_vsync_e
176                  - timer0
177                  - timer1
178                  - timer2
179                  - timer3
180                  - timer4
181
182    required:
183      - port@0
184      - port@1
185
186  avdd-supply:
187    description:
188      Phandle to vdd regulator device node
189
190  refgen-supply:
191    description:
192      Phandle to REFGEN regulator device node
193
194  vcca-supply:
195    description:
196      Phandle to vdd regulator device node
197
198  vdd-supply:
199    description:
200      VDD regulator
201
202  vddio-supply:
203    description:
204      VDD-IO regulator
205
206  vdda-supply:
207    description:
208      VDDA regulator
209
210required:
211  - compatible
212  - reg
213  - reg-names
214  - interrupts
215  - clocks
216  - clock-names
217  - phys
218  - assigned-clocks
219  - assigned-clock-parents
220  - ports
221
222allOf:
223  - $ref: ../dsi-controller.yaml#
224  - if:
225      properties:
226        compatible:
227          contains:
228            enum:
229              - qcom,apq8064-dsi-ctrl
230    then:
231      properties:
232        clocks:
233          maxItems: 7
234        clock-names:
235          items:
236            - const: iface
237            - const: bus
238            - const: core_mmss
239            - const: src
240            - const: byte
241            - const: pixel
242            - const: core
243
244  - if:
245      properties:
246        compatible:
247          contains:
248            enum:
249              - qcom,msm8916-dsi-ctrl
250    then:
251      properties:
252        clocks:
253          maxItems: 6
254        clock-names:
255          items:
256            - const: mdp_core
257            - const: iface
258            - const: bus
259            - const: byte
260            - const: pixel
261            - const: core
262
263  - if:
264      properties:
265        compatible:
266          contains:
267            enum:
268              - qcom,msm8953-dsi-ctrl
269              - qcom,msm8976-dsi-ctrl
270    then:
271      properties:
272        clocks:
273          maxItems: 6
274        clock-names:
275          items:
276            - const: mdp_core
277            - const: iface
278            - const: bus
279            - const: byte
280            - const: pixel
281            - const: core
282
283  - if:
284      properties:
285        compatible:
286          contains:
287            enum:
288              - qcom,msm8226-dsi-ctrl
289              - qcom,msm8974-dsi-ctrl
290    then:
291      properties:
292        clocks:
293          maxItems: 7
294        clock-names:
295          items:
296            - const: mdp_core
297            - const: iface
298            - const: bus
299            - const: byte
300            - const: pixel
301            - const: core
302            - const: core_mmss
303
304  - if:
305      properties:
306        compatible:
307          contains:
308            enum:
309              - qcom,msm8996-dsi-ctrl
310    then:
311      properties:
312        clocks:
313          maxItems: 7
314        clock-names:
315          items:
316            - const: mdp_core
317            - const: byte
318            - const: iface
319            - const: bus
320            - const: core_mmss
321            - const: pixel
322            - const: core
323
324  - if:
325      properties:
326        compatible:
327          contains:
328            enum:
329              - qcom,msm8998-dsi-ctrl
330              - qcom,sm6125-dsi-ctrl
331              - qcom,sm6350-dsi-ctrl
332    then:
333      properties:
334        clocks:
335          maxItems: 6
336        clock-names:
337          items:
338            - const: byte
339            - const: byte_intf
340            - const: pixel
341            - const: core
342            - const: iface
343            - const: bus
344
345  - if:
346      properties:
347        compatible:
348          contains:
349            enum:
350              - qcom,sc7180-dsi-ctrl
351              - qcom,sc7280-dsi-ctrl
352              - qcom,sm7150-dsi-ctrl
353              - qcom,sm8150-dsi-ctrl
354              - qcom,sm8250-dsi-ctrl
355              - qcom,sm8350-dsi-ctrl
356              - qcom,sm8450-dsi-ctrl
357              - qcom,sm8550-dsi-ctrl
358              - qcom,sm8650-dsi-ctrl
359    then:
360      properties:
361        clocks:
362          maxItems: 6
363        clock-names:
364          items:
365            - const: byte
366            - const: byte_intf
367            - const: pixel
368            - const: core
369            - const: iface
370            - const: bus
371
372  - if:
373      properties:
374        compatible:
375          contains:
376            enum:
377              - qcom,sdm660-dsi-ctrl
378    then:
379      properties:
380        clocks:
381          maxItems: 9
382        clock-names:
383          items:
384            - const: mdp_core
385            - const: byte
386            - const: byte_intf
387            - const: mnoc
388            - const: iface
389            - const: bus
390            - const: core_mmss
391            - const: pixel
392            - const: core
393
394  - if:
395      properties:
396        compatible:
397          contains:
398            enum:
399              - qcom,sdm845-dsi-ctrl
400              - qcom,sm6115-dsi-ctrl
401              - qcom,sm6375-dsi-ctrl
402    then:
403      properties:
404        clocks:
405          maxItems: 6
406        clock-names:
407          items:
408            - const: byte
409            - const: byte_intf
410            - const: pixel
411            - const: core
412            - const: iface
413            - const: bus
414
415unevaluatedProperties: false
416
417examples:
418  - |
419     #include <dt-bindings/interrupt-controller/arm-gic.h>
420     #include <dt-bindings/clock/qcom,dispcc-sdm845.h>
421     #include <dt-bindings/clock/qcom,gcc-sdm845.h>
422     #include <dt-bindings/power/qcom-rpmpd.h>
423
424     dsi@ae94000 {
425           compatible = "qcom,sc7180-dsi-ctrl", "qcom,mdss-dsi-ctrl";
426           reg = <0x0ae94000 0x400>;
427           reg-names = "dsi_ctrl";
428
429           #address-cells = <1>;
430           #size-cells = <0>;
431
432           interrupt-parent = <&mdss>;
433           interrupts = <4>;
434
435           clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
436                    <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
437                    <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
438                    <&dispcc DISP_CC_MDSS_ESC0_CLK>,
439                    <&dispcc DISP_CC_MDSS_AHB_CLK>,
440                    <&dispcc DISP_CC_MDSS_AXI_CLK>;
441           clock-names = "byte",
442                         "byte_intf",
443                         "pixel",
444                         "core",
445                         "iface",
446                         "bus";
447
448           phys = <&dsi0_phy>;
449           phy-names = "dsi";
450
451           assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
452           assigned-clock-parents = <&dsi_phy 0>, <&dsi_phy 1>;
453
454           power-domains = <&rpmhpd SC7180_CX>;
455           operating-points-v2 = <&dsi_opp_table>;
456
457           ports {
458                  #address-cells = <1>;
459                  #size-cells = <0>;
460
461                  port@0 {
462                          reg = <0>;
463                          dsi0_in: endpoint {
464                                   remote-endpoint = <&dpu_intf1_out>;
465                          };
466                  };
467
468                  port@1 {
469                          reg = <1>;
470                          dsi0_out: endpoint {
471                                   remote-endpoint = <&sn65dsi86_in>;
472                                   data-lanes = <0 1 2 3>;
473                                   qcom,te-source = "mdp_vsync_e";
474                          };
475                  };
476           };
477     };
478...
479