1*4dbe55c9SKrishna Manikandan# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
2*4dbe55c9SKrishna Manikandan%YAML 1.2
3*4dbe55c9SKrishna Manikandan---
4*4dbe55c9SKrishna Manikandan$id: http://devicetree.org/schemas/display/msm/dsi-controller-main.yaml#
5*4dbe55c9SKrishna Manikandan$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4dbe55c9SKrishna Manikandan
7*4dbe55c9SKrishna Manikandantitle: Qualcomm Display DSI controller
8*4dbe55c9SKrishna Manikandan
9*4dbe55c9SKrishna Manikandanmaintainers:
10*4dbe55c9SKrishna Manikandan  - Krishna Manikandan <mkrishn@codeaurora.org>
11*4dbe55c9SKrishna Manikandan
12*4dbe55c9SKrishna ManikandanallOf:
13*4dbe55c9SKrishna Manikandan  - $ref: "../dsi-controller.yaml#"
14*4dbe55c9SKrishna Manikandan
15*4dbe55c9SKrishna Manikandanproperties:
16*4dbe55c9SKrishna Manikandan  compatible:
17*4dbe55c9SKrishna Manikandan    items:
18*4dbe55c9SKrishna Manikandan      - const: qcom,mdss-dsi-ctrl
19*4dbe55c9SKrishna Manikandan
20*4dbe55c9SKrishna Manikandan  reg:
21*4dbe55c9SKrishna Manikandan    maxItems: 1
22*4dbe55c9SKrishna Manikandan
23*4dbe55c9SKrishna Manikandan  reg-names:
24*4dbe55c9SKrishna Manikandan    const: dsi_ctrl
25*4dbe55c9SKrishna Manikandan
26*4dbe55c9SKrishna Manikandan  interrupts:
27*4dbe55c9SKrishna Manikandan    maxItems: 1
28*4dbe55c9SKrishna Manikandan
29*4dbe55c9SKrishna Manikandan  clocks:
30*4dbe55c9SKrishna Manikandan    items:
31*4dbe55c9SKrishna Manikandan      - description: Display byte clock
32*4dbe55c9SKrishna Manikandan      - description: Display byte interface clock
33*4dbe55c9SKrishna Manikandan      - description: Display pixel clock
34*4dbe55c9SKrishna Manikandan      - description: Display escape clock
35*4dbe55c9SKrishna Manikandan      - description: Display AHB clock
36*4dbe55c9SKrishna Manikandan      - description: Display AXI clock
37*4dbe55c9SKrishna Manikandan
38*4dbe55c9SKrishna Manikandan  clock-names:
39*4dbe55c9SKrishna Manikandan    items:
40*4dbe55c9SKrishna Manikandan      - const: byte
41*4dbe55c9SKrishna Manikandan      - const: byte_intf
42*4dbe55c9SKrishna Manikandan      - const: pixel
43*4dbe55c9SKrishna Manikandan      - const: core
44*4dbe55c9SKrishna Manikandan      - const: iface
45*4dbe55c9SKrishna Manikandan      - const: bus
46*4dbe55c9SKrishna Manikandan
47*4dbe55c9SKrishna Manikandan  phys:
48*4dbe55c9SKrishna Manikandan    maxItems: 1
49*4dbe55c9SKrishna Manikandan
50*4dbe55c9SKrishna Manikandan  phy-names:
51*4dbe55c9SKrishna Manikandan    const: dsi
52*4dbe55c9SKrishna Manikandan
53*4dbe55c9SKrishna Manikandan  "#address-cells": true
54*4dbe55c9SKrishna Manikandan
55*4dbe55c9SKrishna Manikandan  "#size-cells": true
56*4dbe55c9SKrishna Manikandan
57*4dbe55c9SKrishna Manikandan  syscon-sfpb:
58*4dbe55c9SKrishna Manikandan    description: A phandle to mmss_sfpb syscon node (only for DSIv2).
59*4dbe55c9SKrishna Manikandan    $ref: "/schemas/types.yaml#/definitions/phandle"
60*4dbe55c9SKrishna Manikandan
61*4dbe55c9SKrishna Manikandan  qcom,dual-dsi-mode:
62*4dbe55c9SKrishna Manikandan    type: boolean
63*4dbe55c9SKrishna Manikandan    description: |
64*4dbe55c9SKrishna Manikandan      Indicates if the DSI controller is driving a panel which needs
65*4dbe55c9SKrishna Manikandan      2 DSI links.
66*4dbe55c9SKrishna Manikandan
67*4dbe55c9SKrishna Manikandan  power-domains:
68*4dbe55c9SKrishna Manikandan    maxItems: 1
69*4dbe55c9SKrishna Manikandan
70*4dbe55c9SKrishna Manikandan  operating-points-v2: true
71*4dbe55c9SKrishna Manikandan
72*4dbe55c9SKrishna Manikandan  ports:
73*4dbe55c9SKrishna Manikandan    $ref: "/schemas/graph.yaml#/properties/ports"
74*4dbe55c9SKrishna Manikandan    description: |
75*4dbe55c9SKrishna Manikandan      Contains DSI controller input and output ports as children, each
76*4dbe55c9SKrishna Manikandan      containing one endpoint subnode.
77*4dbe55c9SKrishna Manikandan
78*4dbe55c9SKrishna Manikandan    properties:
79*4dbe55c9SKrishna Manikandan      port@0:
80*4dbe55c9SKrishna Manikandan        $ref: "/schemas/graph.yaml#/properties/port"
81*4dbe55c9SKrishna Manikandan        description: |
82*4dbe55c9SKrishna Manikandan          Input endpoints of the controller.
83*4dbe55c9SKrishna Manikandan        properties:
84*4dbe55c9SKrishna Manikandan          endpoint:
85*4dbe55c9SKrishna Manikandan            $ref: /schemas/media/video-interfaces.yaml#
86*4dbe55c9SKrishna Manikandan            unevaluatedProperties: false
87*4dbe55c9SKrishna Manikandan            properties:
88*4dbe55c9SKrishna Manikandan              data-lanes:
89*4dbe55c9SKrishna Manikandan                maxItems: 4
90*4dbe55c9SKrishna Manikandan                minItems: 4
91*4dbe55c9SKrishna Manikandan                items:
92*4dbe55c9SKrishna Manikandan                  enum: [ 0, 1, 2, 3 ]
93*4dbe55c9SKrishna Manikandan
94*4dbe55c9SKrishna Manikandan      port@1:
95*4dbe55c9SKrishna Manikandan        $ref: "/schemas/graph.yaml#/properties/port"
96*4dbe55c9SKrishna Manikandan        description: |
97*4dbe55c9SKrishna Manikandan          Output endpoints of the controller.
98*4dbe55c9SKrishna Manikandan        properties:
99*4dbe55c9SKrishna Manikandan          endpoint:
100*4dbe55c9SKrishna Manikandan            $ref: /schemas/media/video-interfaces.yaml#
101*4dbe55c9SKrishna Manikandan            unevaluatedProperties: false
102*4dbe55c9SKrishna Manikandan            properties:
103*4dbe55c9SKrishna Manikandan              data-lanes:
104*4dbe55c9SKrishna Manikandan                maxItems: 4
105*4dbe55c9SKrishna Manikandan                minItems: 4
106*4dbe55c9SKrishna Manikandan                items:
107*4dbe55c9SKrishna Manikandan                  enum: [ 0, 1, 2, 3 ]
108*4dbe55c9SKrishna Manikandan
109*4dbe55c9SKrishna Manikandan    required:
110*4dbe55c9SKrishna Manikandan      - port@0
111*4dbe55c9SKrishna Manikandan      - port@1
112*4dbe55c9SKrishna Manikandan
113*4dbe55c9SKrishna Manikandanrequired:
114*4dbe55c9SKrishna Manikandan  - compatible
115*4dbe55c9SKrishna Manikandan  - reg
116*4dbe55c9SKrishna Manikandan  - reg-names
117*4dbe55c9SKrishna Manikandan  - interrupts
118*4dbe55c9SKrishna Manikandan  - clocks
119*4dbe55c9SKrishna Manikandan  - clock-names
120*4dbe55c9SKrishna Manikandan  - phys
121*4dbe55c9SKrishna Manikandan  - phy-names
122*4dbe55c9SKrishna Manikandan  - power-domains
123*4dbe55c9SKrishna Manikandan  - operating-points-v2
124*4dbe55c9SKrishna Manikandan  - ports
125*4dbe55c9SKrishna Manikandan
126*4dbe55c9SKrishna ManikandanadditionalProperties: false
127*4dbe55c9SKrishna Manikandan
128*4dbe55c9SKrishna Manikandanexamples:
129*4dbe55c9SKrishna Manikandan  - |
130*4dbe55c9SKrishna Manikandan     #include <dt-bindings/interrupt-controller/arm-gic.h>
131*4dbe55c9SKrishna Manikandan     #include <dt-bindings/clock/qcom,dispcc-sdm845.h>
132*4dbe55c9SKrishna Manikandan     #include <dt-bindings/clock/qcom,gcc-sdm845.h>
133*4dbe55c9SKrishna Manikandan     #include <dt-bindings/power/qcom-rpmpd.h>
134*4dbe55c9SKrishna Manikandan
135*4dbe55c9SKrishna Manikandan     dsi@ae94000 {
136*4dbe55c9SKrishna Manikandan           compatible = "qcom,mdss-dsi-ctrl";
137*4dbe55c9SKrishna Manikandan           reg = <0x0ae94000 0x400>;
138*4dbe55c9SKrishna Manikandan           reg-names = "dsi_ctrl";
139*4dbe55c9SKrishna Manikandan
140*4dbe55c9SKrishna Manikandan           #address-cells = <1>;
141*4dbe55c9SKrishna Manikandan           #size-cells = <0>;
142*4dbe55c9SKrishna Manikandan
143*4dbe55c9SKrishna Manikandan           interrupt-parent = <&mdss>;
144*4dbe55c9SKrishna Manikandan           interrupts = <4>;
145*4dbe55c9SKrishna Manikandan
146*4dbe55c9SKrishna Manikandan           clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
147*4dbe55c9SKrishna Manikandan                    <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
148*4dbe55c9SKrishna Manikandan                    <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
149*4dbe55c9SKrishna Manikandan                    <&dispcc DISP_CC_MDSS_ESC0_CLK>,
150*4dbe55c9SKrishna Manikandan                    <&dispcc DISP_CC_MDSS_AHB_CLK>,
151*4dbe55c9SKrishna Manikandan                    <&dispcc DISP_CC_MDSS_AXI_CLK>;
152*4dbe55c9SKrishna Manikandan           clock-names = "byte",
153*4dbe55c9SKrishna Manikandan                         "byte_intf",
154*4dbe55c9SKrishna Manikandan                         "pixel",
155*4dbe55c9SKrishna Manikandan                         "core",
156*4dbe55c9SKrishna Manikandan                         "iface",
157*4dbe55c9SKrishna Manikandan                         "bus";
158*4dbe55c9SKrishna Manikandan
159*4dbe55c9SKrishna Manikandan           phys = <&dsi0_phy>;
160*4dbe55c9SKrishna Manikandan           phy-names = "dsi";
161*4dbe55c9SKrishna Manikandan
162*4dbe55c9SKrishna Manikandan           power-domains = <&rpmhpd SC7180_CX>;
163*4dbe55c9SKrishna Manikandan           operating-points-v2 = <&dsi_opp_table>;
164*4dbe55c9SKrishna Manikandan
165*4dbe55c9SKrishna Manikandan           ports {
166*4dbe55c9SKrishna Manikandan                  #address-cells = <1>;
167*4dbe55c9SKrishna Manikandan                  #size-cells = <0>;
168*4dbe55c9SKrishna Manikandan
169*4dbe55c9SKrishna Manikandan                  port@0 {
170*4dbe55c9SKrishna Manikandan                          reg = <0>;
171*4dbe55c9SKrishna Manikandan                          dsi0_in: endpoint {
172*4dbe55c9SKrishna Manikandan                                   remote-endpoint = <&dpu_intf1_out>;
173*4dbe55c9SKrishna Manikandan                          };
174*4dbe55c9SKrishna Manikandan                  };
175*4dbe55c9SKrishna Manikandan
176*4dbe55c9SKrishna Manikandan                  port@1 {
177*4dbe55c9SKrishna Manikandan                          reg = <1>;
178*4dbe55c9SKrishna Manikandan                          dsi0_out: endpoint {
179*4dbe55c9SKrishna Manikandan                                   remote-endpoint = <&sn65dsi86_in>;
180*4dbe55c9SKrishna Manikandan                                   data-lanes = <0 1 2 3>;
181*4dbe55c9SKrishna Manikandan                          };
182*4dbe55c9SKrishna Manikandan                  };
183*4dbe55c9SKrishna Manikandan           };
184*4dbe55c9SKrishna Manikandan     };
185*4dbe55c9SKrishna Manikandan...
186