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/dpu-sc7280.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Display DPU dt properties for SC7280
8
9maintainers:
10  - Krishna Manikandan <mkrishn@codeaurora.org>
11
12description: |
13  Device tree bindings for MSM Mobile Display Subsystem (MDSS) that encapsulates
14  sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree
15  bindings of MDSS and DPU are mentioned for SC7280.
16
17properties:
18  compatible:
19    const: qcom,sc7280-mdss
20
21  reg:
22    maxItems: 1
23
24  reg-names:
25    const: mdss
26
27  power-domains:
28    maxItems: 1
29
30  clocks:
31    items:
32      - description: Display AHB clock from gcc
33      - description: Display AHB clock from dispcc
34      - description: Display core clock
35
36  clock-names:
37    items:
38      - const: iface
39      - const: ahb
40      - const: core
41
42  interrupts:
43    maxItems: 1
44
45  interrupt-controller: true
46
47  "#address-cells": true
48
49  "#size-cells": true
50
51  "#interrupt-cells":
52    const: 1
53
54  iommus:
55    items:
56      - description: Phandle to apps_smmu node with SID mask for Hard-Fail port0
57
58  ranges: true
59
60  interconnects:
61    items:
62      - description: Interconnect path specifying the port ids for data bus
63
64  interconnect-names:
65    const: mdp0-mem
66
67patternProperties:
68  "^display-controller@[0-9a-f]+$":
69    type: object
70    description: Node containing the properties of DPU.
71
72    properties:
73      compatible:
74        const: qcom,sc7280-dpu
75
76      reg:
77        items:
78          - description: Address offset and size for mdp register set
79          - description: Address offset and size for vbif register set
80
81      reg-names:
82        items:
83          - const: mdp
84          - const: vbif
85
86      clocks:
87        items:
88          - description: Display hf axi clock
89          - description: Display sf axi clock
90          - description: Display ahb clock
91          - description: Display lut clock
92          - description: Display core clock
93          - description: Display vsync clock
94
95      clock-names:
96        items:
97          - const: bus
98          - const: nrt_bus
99          - const: iface
100          - const: lut
101          - const: core
102          - const: vsync
103
104      interrupts:
105        maxItems: 1
106
107      power-domains:
108        maxItems: 1
109
110      operating-points-v2: true
111
112      ports:
113        $ref: /schemas/graph.yaml#/properties/ports
114        description: |
115          Contains the list of output ports from DPU device. These ports
116          connect to interfaces that are external to the DPU hardware,
117          such as DSI, DP etc. Each output port contains an endpoint that
118          describes how it is connected to an external interface.
119
120        properties:
121          port@0:
122            $ref: /schemas/graph.yaml#/properties/port
123            description: DPU_INTF1 (DSI)
124
125          port@1:
126            $ref: /schemas/graph.yaml#/properties/port
127            description: DPU_INTF5 (EDP)
128
129        required:
130          - port@0
131
132    required:
133      - compatible
134      - reg
135      - reg-names
136      - clocks
137      - interrupts
138      - power-domains
139      - operating-points-v2
140      - ports
141
142required:
143  - compatible
144  - reg
145  - reg-names
146  - power-domains
147  - clocks
148  - interrupts
149  - interrupt-controller
150  - iommus
151  - ranges
152
153additionalProperties: false
154
155examples:
156  - |
157    #include <dt-bindings/clock/qcom,dispcc-sc7280.h>
158    #include <dt-bindings/clock/qcom,gcc-sc7280.h>
159    #include <dt-bindings/interrupt-controller/arm-gic.h>
160    #include <dt-bindings/interconnect/qcom,sc7280.h>
161    #include <dt-bindings/power/qcom-rpmpd.h>
162
163    display-subsystem@ae00000 {
164         #address-cells = <1>;
165         #size-cells = <1>;
166         compatible = "qcom,sc7280-mdss";
167         reg = <0xae00000 0x1000>;
168         reg-names = "mdss";
169         power-domains = <&dispcc DISP_CC_MDSS_CORE_GDSC>;
170         clocks = <&gcc GCC_DISP_AHB_CLK>,
171                  <&dispcc DISP_CC_MDSS_AHB_CLK>,
172                  <&dispcc DISP_CC_MDSS_MDP_CLK>;
173         clock-names = "iface",
174                       "ahb",
175                       "core";
176
177         interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
178         interrupt-controller;
179         #interrupt-cells = <1>;
180
181         interconnects = <&mmss_noc MASTER_MDP0 &mc_virt SLAVE_EBI1>;
182         interconnect-names = "mdp0-mem";
183
184         iommus = <&apps_smmu 0x900 0x402>;
185         ranges;
186
187         display-controller@ae01000 {
188                   compatible = "qcom,sc7280-dpu";
189                   reg = <0x0ae01000 0x8f000>,
190                         <0x0aeb0000 0x2008>;
191
192                   reg-names = "mdp", "vbif";
193
194                   clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
195                            <&gcc GCC_DISP_SF_AXI_CLK>,
196                            <&dispcc DISP_CC_MDSS_AHB_CLK>,
197                            <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
198                            <&dispcc DISP_CC_MDSS_MDP_CLK>,
199                            <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
200                   clock-names = "bus",
201                                 "nrt_bus",
202                                 "iface",
203                                 "lut",
204                                 "core",
205                                 "vsync";
206
207                   interrupt-parent = <&mdss>;
208                   interrupts = <0>;
209                   power-domains = <&rpmhpd SC7280_CX>;
210                   operating-points-v2 = <&mdp_opp_table>;
211
212                   ports {
213                           #address-cells = <1>;
214                           #size-cells = <0>;
215
216                           port@0 {
217                                   reg = <0>;
218                                   dpu_intf1_out: endpoint {
219                                           remote-endpoint = <&dsi0_in>;
220                                   };
221                           };
222
223                           port@1 {
224                                   reg = <1>;
225                                   dpu_intf5_out: endpoint {
226                                           remote-endpoint = <&edp_in>;
227                                   };
228                           };
229                   };
230         };
231    };
232...
233