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-sc7180.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Display DPU dt properties for SC7180 target
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 SC7180 target.
16
17properties:
18  compatible:
19    items:
20      - const: qcom,sc7180-mdss
21
22  reg:
23    maxItems: 1
24
25  reg-names:
26    const: mdss
27
28  power-domains:
29    maxItems: 1
30
31  clocks:
32    items:
33      - description: Display AHB clock from gcc
34      - description: Display AHB clock from dispcc
35      - description: Display core clock
36
37  clock-names:
38    items:
39      - const: iface
40      - const: ahb
41      - const: core
42
43  interrupts:
44    maxItems: 1
45
46  interrupt-controller: true
47
48  "#address-cells": true
49
50  "#size-cells": true
51
52  "#interrupt-cells":
53    const: 1
54
55  iommus:
56    items:
57      - description: Phandle to apps_smmu node with SID mask for Hard-Fail port0
58
59  ranges: true
60
61  interconnects:
62    items:
63      - description: Interconnect path specifying the port ids for data bus
64
65  interconnect-names:
66    const: mdp0-mem
67
68  resets:
69    items:
70      - description: MDSS_CORE reset
71
72patternProperties:
73  "^display-controller@[0-9a-f]+$":
74    type: object
75    description: Node containing the properties of DPU.
76
77    properties:
78      compatible:
79        items:
80          - const: qcom,sc7180-dpu
81
82      reg:
83        items:
84          - description: Address offset and size for mdp register set
85          - description: Address offset and size for vbif register set
86
87      reg-names:
88        items:
89          - const: mdp
90          - const: vbif
91
92      clocks:
93        items:
94          - description: Display hf axi clock
95          - description: Display ahb clock
96          - description: Display rotator clock
97          - description: Display lut clock
98          - description: Display core clock
99          - description: Display vsync clock
100
101      clock-names:
102        items:
103          - const: bus
104          - const: iface
105          - const: rot
106          - const: lut
107          - const: core
108          - const: vsync
109
110      interrupts:
111        maxItems: 1
112
113      power-domains:
114        maxItems: 1
115
116      operating-points-v2: true
117
118      ports:
119        $ref: /schemas/graph.yaml#/properties/ports
120        description: |
121          Contains the list of output ports from DPU device. These ports
122          connect to interfaces that are external to the DPU hardware,
123          such as DSI, DP etc. Each output port contains an endpoint that
124          describes how it is connected to an external interface.
125
126        properties:
127          port@0:
128            $ref: /schemas/graph.yaml#/properties/port
129            description: DPU_INTF1 (DSI1)
130
131          port@2:
132            $ref: /schemas/graph.yaml#/properties/port
133            description: DPU_INTF0 (DP)
134
135        required:
136          - port@0
137
138    required:
139      - compatible
140      - reg
141      - reg-names
142      - clocks
143      - interrupts
144      - power-domains
145      - operating-points-v2
146      - ports
147
148required:
149  - compatible
150  - reg
151  - reg-names
152  - power-domains
153  - clocks
154  - interrupts
155  - interrupt-controller
156  - iommus
157  - ranges
158
159additionalProperties: false
160
161examples:
162  - |
163    #include <dt-bindings/clock/qcom,dispcc-sc7180.h>
164    #include <dt-bindings/clock/qcom,gcc-sc7180.h>
165    #include <dt-bindings/interrupt-controller/arm-gic.h>
166    #include <dt-bindings/interconnect/qcom,sdm845.h>
167    #include <dt-bindings/power/qcom-rpmpd.h>
168
169    display-subsystem@ae00000 {
170         #address-cells = <1>;
171         #size-cells = <1>;
172         compatible = "qcom,sc7180-mdss";
173         reg = <0xae00000 0x1000>;
174         reg-names = "mdss";
175         power-domains = <&dispcc MDSS_GDSC>;
176         clocks = <&gcc GCC_DISP_AHB_CLK>,
177                  <&dispcc DISP_CC_MDSS_AHB_CLK>,
178                  <&dispcc DISP_CC_MDSS_MDP_CLK>;
179         clock-names = "iface", "ahb", "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 0x800 0x2>;
189         ranges;
190
191         display-controller@ae01000 {
192                   compatible = "qcom,sc7180-dpu";
193                   reg = <0x0ae01000 0x8f000>,
194                         <0x0aeb0000 0x2008>;
195
196                   reg-names = "mdp", "vbif";
197
198                   clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
199                            <&dispcc DISP_CC_MDSS_AHB_CLK>,
200                            <&dispcc DISP_CC_MDSS_ROT_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", "iface", "rot", "lut", "core",
205                                 "vsync";
206
207                   interrupt-parent = <&mdss>;
208                   interrupts = <0>;
209                   power-domains = <&rpmhpd SC7180_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@2 {
224                                    reg = <2>;
225                                    dpu_intf0_out: endpoint {
226                                                   remote-endpoint = <&dp_in>;
227                                    };
228                            };
229                   };
230         };
231    };
232...
233