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/qcom,sm8450-dpu.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SM8450 Display DPU
8
9maintainers:
10  - Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
11
12$ref: /schemas/display/msm/dpu-common.yaml#
13
14properties:
15  compatible:
16    const: qcom,sm8450-dpu
17
18  reg:
19    items:
20      - description: Address offset and size for mdp register set
21      - description: Address offset and size for vbif register set
22
23  reg-names:
24    items:
25      - const: mdp
26      - const: vbif
27
28  clocks:
29    items:
30      - description: Display hf axi
31      - description: Display sf axi
32      - description: Display ahb
33      - description: Display lut
34      - description: Display core
35      - description: Display vsync
36
37  clock-names:
38    items:
39      - const: bus
40      - const: nrt_bus
41      - const: iface
42      - const: lut
43      - const: core
44      - const: vsync
45
46required:
47  - compatible
48  - reg
49  - reg-names
50  - clocks
51  - clock-names
52
53unevaluatedProperties: false
54
55examples:
56  - |
57    #include <dt-bindings/clock/qcom,sm8450-dispcc.h>
58    #include <dt-bindings/clock/qcom,gcc-sm8450.h>
59    #include <dt-bindings/interrupt-controller/arm-gic.h>
60    #include <dt-bindings/interconnect/qcom,sm8450.h>
61    #include <dt-bindings/power/qcom,rpmhpd.h>
62
63    display-controller@ae01000 {
64        compatible = "qcom,sm8450-dpu";
65        reg = <0x0ae01000 0x8f000>,
66              <0x0aeb0000 0x2008>;
67        reg-names = "mdp", "vbif";
68
69        clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
70                <&gcc GCC_DISP_SF_AXI_CLK>,
71                <&dispcc DISP_CC_MDSS_AHB_CLK>,
72                <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
73                <&dispcc DISP_CC_MDSS_MDP_CLK>,
74                <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
75        clock-names = "bus",
76                      "nrt_bus",
77                      "iface",
78                      "lut",
79                      "core",
80                      "vsync";
81
82        assigned-clocks = <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
83        assigned-clock-rates = <19200000>;
84
85        operating-points-v2 = <&mdp_opp_table>;
86        power-domains = <&rpmhpd RPMHPD_MMCX>;
87
88        interrupt-parent = <&mdss>;
89        interrupts = <0>;
90
91        ports {
92            #address-cells = <1>;
93            #size-cells = <0>;
94
95            port@0 {
96                reg = <0>;
97                dpu_intf1_out: endpoint {
98                    remote-endpoint = <&dsi0_in>;
99                };
100            };
101
102            port@1 {
103                reg = <1>;
104                dpu_intf2_out: endpoint {
105                    remote-endpoint = <&dsi1_in>;
106                };
107            };
108        };
109
110        mdp_opp_table: opp-table {
111            compatible = "operating-points-v2";
112
113            opp-172000000{
114                opp-hz = /bits/ 64 <172000000>;
115                required-opps = <&rpmhpd_opp_low_svs_d1>;
116            };
117
118            opp-200000000 {
119                opp-hz = /bits/ 64 <200000000>;
120                required-opps = <&rpmhpd_opp_low_svs>;
121            };
122
123            opp-325000000 {
124                opp-hz = /bits/ 64 <325000000>;
125                required-opps = <&rpmhpd_opp_svs>;
126            };
127
128            opp-375000000 {
129                opp-hz = /bits/ 64 <375000000>;
130                required-opps = <&rpmhpd_opp_svs_l1>;
131            };
132
133            opp-500000000 {
134                opp-hz = /bits/ 64 <500000000>;
135                required-opps = <&rpmhpd_opp_nom>;
136            };
137        };
138    };
139...
140