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 <quic_mkrishn@quicinc.com>
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
67  resets:
68    items:
69      - description: MDSS_CORE reset
70
71patternProperties:
72  "^display-controller@[0-9a-f]+$":
73    type: object
74    description: Node containing the properties of DPU.
75
76    properties:
77      compatible:
78        const: qcom,sc7280-dpu
79
80      reg:
81        items:
82          - description: Address offset and size for mdp register set
83          - description: Address offset and size for vbif register set
84
85      reg-names:
86        items:
87          - const: mdp
88          - const: vbif
89
90      clocks:
91        items:
92          - description: Display hf axi clock
93          - description: Display sf axi clock
94          - description: Display ahb clock
95          - description: Display lut clock
96          - description: Display core clock
97          - description: Display vsync clock
98
99      clock-names:
100        items:
101          - const: bus
102          - const: nrt_bus
103          - const: iface
104          - const: lut
105          - const: core
106          - const: vsync
107
108      interrupts:
109        maxItems: 1
110
111      power-domains:
112        maxItems: 1
113
114      operating-points-v2: true
115
116      ports:
117        $ref: /schemas/graph.yaml#/properties/ports
118        description: |
119          Contains the list of output ports from DPU device. These ports
120          connect to interfaces that are external to the DPU hardware,
121          such as DSI, DP etc. Each output port contains an endpoint that
122          describes how it is connected to an external interface.
123
124        properties:
125          port@0:
126            $ref: /schemas/graph.yaml#/properties/port
127            description: DPU_INTF1 (DSI)
128
129          port@1:
130            $ref: /schemas/graph.yaml#/properties/port
131            description: DPU_INTF5 (EDP)
132
133        required:
134          - port@0
135
136    required:
137      - compatible
138      - reg
139      - reg-names
140      - clocks
141      - interrupts
142      - power-domains
143      - operating-points-v2
144      - ports
145
146required:
147  - compatible
148  - reg
149  - reg-names
150  - power-domains
151  - clocks
152  - interrupts
153  - interrupt-controller
154  - iommus
155  - ranges
156
157additionalProperties: false
158
159examples:
160  - |
161    #include <dt-bindings/clock/qcom,dispcc-sc7280.h>
162    #include <dt-bindings/clock/qcom,gcc-sc7280.h>
163    #include <dt-bindings/interrupt-controller/arm-gic.h>
164    #include <dt-bindings/interconnect/qcom,sc7280.h>
165    #include <dt-bindings/power/qcom-rpmpd.h>
166
167    display-subsystem@ae00000 {
168         #address-cells = <1>;
169         #size-cells = <1>;
170         compatible = "qcom,sc7280-mdss";
171         reg = <0xae00000 0x1000>;
172         reg-names = "mdss";
173         power-domains = <&dispcc DISP_CC_MDSS_CORE_GDSC>;
174         clocks = <&gcc GCC_DISP_AHB_CLK>,
175                  <&dispcc DISP_CC_MDSS_AHB_CLK>,
176                  <&dispcc DISP_CC_MDSS_MDP_CLK>;
177         clock-names = "iface",
178                       "ahb",
179                       "core";
180
181         interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
182         interrupt-controller;
183         #interrupt-cells = <1>;
184
185         interconnects = <&mmss_noc MASTER_MDP0 &mc_virt SLAVE_EBI1>;
186         interconnect-names = "mdp0-mem";
187
188         iommus = <&apps_smmu 0x900 0x402>;
189         ranges;
190
191         display-controller@ae01000 {
192                   compatible = "qcom,sc7280-dpu";
193                   reg = <0x0ae01000 0x8f000>,
194                         <0x0aeb0000 0x2008>;
195
196                   reg-names = "mdp", "vbif";
197
198                   clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
199                            <&gcc GCC_DISP_SF_AXI_CLK>,
200                            <&dispcc DISP_CC_MDSS_AHB_CLK>,
201                            <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
202                            <&dispcc DISP_CC_MDSS_MDP_CLK>,
203                            <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
204                   clock-names = "bus",
205                                 "nrt_bus",
206                                 "iface",
207                                 "lut",
208                                 "core",
209                                 "vsync";
210
211                   interrupt-parent = <&mdss>;
212                   interrupts = <0>;
213                   power-domains = <&rpmhpd SC7280_CX>;
214                   operating-points-v2 = <&mdp_opp_table>;
215
216                   ports {
217                           #address-cells = <1>;
218                           #size-cells = <0>;
219
220                           port@0 {
221                                   reg = <0>;
222                                   dpu_intf1_out: endpoint {
223                                           remote-endpoint = <&dsi0_in>;
224                                   };
225                           };
226
227                           port@1 {
228                                   reg = <1>;
229                                   dpu_intf5_out: endpoint {
230                                           remote-endpoint = <&edp_in>;
231                                   };
232                           };
233                   };
234         };
235    };
236...
237