1*440b075bSKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
20eda3c6cSDmitry Baryshkov%YAML 1.2
30eda3c6cSDmitry Baryshkov---
40eda3c6cSDmitry Baryshkov$id: http://devicetree.org/schemas/display/msm/qcom,sm8450-dpu.yaml#
50eda3c6cSDmitry Baryshkov$schema: http://devicetree.org/meta-schemas/core.yaml#
60eda3c6cSDmitry Baryshkov
70eda3c6cSDmitry Baryshkovtitle: Qualcomm SM8450 Display DPU
80eda3c6cSDmitry Baryshkov
90eda3c6cSDmitry Baryshkovmaintainers:
100eda3c6cSDmitry Baryshkov  - Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
110eda3c6cSDmitry Baryshkov
120eda3c6cSDmitry Baryshkov$ref: /schemas/display/msm/dpu-common.yaml#
130eda3c6cSDmitry Baryshkov
140eda3c6cSDmitry Baryshkovproperties:
150eda3c6cSDmitry Baryshkov  compatible:
160eda3c6cSDmitry Baryshkov    const: qcom,sm8450-dpu
170eda3c6cSDmitry Baryshkov
180eda3c6cSDmitry Baryshkov  reg:
190eda3c6cSDmitry Baryshkov    items:
200eda3c6cSDmitry Baryshkov      - description: Address offset and size for mdp register set
210eda3c6cSDmitry Baryshkov      - description: Address offset and size for vbif register set
220eda3c6cSDmitry Baryshkov
230eda3c6cSDmitry Baryshkov  reg-names:
240eda3c6cSDmitry Baryshkov    items:
250eda3c6cSDmitry Baryshkov      - const: mdp
260eda3c6cSDmitry Baryshkov      - const: vbif
270eda3c6cSDmitry Baryshkov
280eda3c6cSDmitry Baryshkov  clocks:
290eda3c6cSDmitry Baryshkov    items:
300eda3c6cSDmitry Baryshkov      - description: Display hf axi
310eda3c6cSDmitry Baryshkov      - description: Display sf axi
320eda3c6cSDmitry Baryshkov      - description: Display ahb
330eda3c6cSDmitry Baryshkov      - description: Display lut
340eda3c6cSDmitry Baryshkov      - description: Display core
350eda3c6cSDmitry Baryshkov      - description: Display vsync
360eda3c6cSDmitry Baryshkov
370eda3c6cSDmitry Baryshkov  clock-names:
380eda3c6cSDmitry Baryshkov    items:
390eda3c6cSDmitry Baryshkov      - const: bus
400eda3c6cSDmitry Baryshkov      - const: nrt_bus
410eda3c6cSDmitry Baryshkov      - const: iface
420eda3c6cSDmitry Baryshkov      - const: lut
430eda3c6cSDmitry Baryshkov      - const: core
440eda3c6cSDmitry Baryshkov      - const: vsync
450eda3c6cSDmitry Baryshkov
460eda3c6cSDmitry Baryshkovrequired:
470eda3c6cSDmitry Baryshkov  - compatible
480eda3c6cSDmitry Baryshkov  - reg
490eda3c6cSDmitry Baryshkov  - reg-names
500eda3c6cSDmitry Baryshkov  - clocks
510eda3c6cSDmitry Baryshkov  - clock-names
520eda3c6cSDmitry Baryshkov
530eda3c6cSDmitry BaryshkovunevaluatedProperties: false
540eda3c6cSDmitry Baryshkov
550eda3c6cSDmitry Baryshkovexamples:
560eda3c6cSDmitry Baryshkov  - |
570eda3c6cSDmitry Baryshkov    #include <dt-bindings/clock/qcom,sm8450-dispcc.h>
580eda3c6cSDmitry Baryshkov    #include <dt-bindings/clock/qcom,gcc-sm8450.h>
590eda3c6cSDmitry Baryshkov    #include <dt-bindings/interrupt-controller/arm-gic.h>
600eda3c6cSDmitry Baryshkov    #include <dt-bindings/interconnect/qcom,sm8450.h>
610eda3c6cSDmitry Baryshkov    #include <dt-bindings/power/qcom,rpmhpd.h>
620eda3c6cSDmitry Baryshkov
630eda3c6cSDmitry Baryshkov    display-controller@ae01000 {
640eda3c6cSDmitry Baryshkov        compatible = "qcom,sm8450-dpu";
650eda3c6cSDmitry Baryshkov        reg = <0x0ae01000 0x8f000>,
660eda3c6cSDmitry Baryshkov              <0x0aeb0000 0x2008>;
670eda3c6cSDmitry Baryshkov        reg-names = "mdp", "vbif";
680eda3c6cSDmitry Baryshkov
690eda3c6cSDmitry Baryshkov        clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
700eda3c6cSDmitry Baryshkov                <&gcc GCC_DISP_SF_AXI_CLK>,
710eda3c6cSDmitry Baryshkov                <&dispcc DISP_CC_MDSS_AHB_CLK>,
720eda3c6cSDmitry Baryshkov                <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
730eda3c6cSDmitry Baryshkov                <&dispcc DISP_CC_MDSS_MDP_CLK>,
740eda3c6cSDmitry Baryshkov                <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
750eda3c6cSDmitry Baryshkov        clock-names = "bus",
760eda3c6cSDmitry Baryshkov                      "nrt_bus",
770eda3c6cSDmitry Baryshkov                      "iface",
780eda3c6cSDmitry Baryshkov                      "lut",
790eda3c6cSDmitry Baryshkov                      "core",
800eda3c6cSDmitry Baryshkov                      "vsync";
810eda3c6cSDmitry Baryshkov
820eda3c6cSDmitry Baryshkov        assigned-clocks = <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
830eda3c6cSDmitry Baryshkov        assigned-clock-rates = <19200000>;
840eda3c6cSDmitry Baryshkov
850eda3c6cSDmitry Baryshkov        operating-points-v2 = <&mdp_opp_table>;
860eda3c6cSDmitry Baryshkov        power-domains = <&rpmhpd RPMHPD_MMCX>;
870eda3c6cSDmitry Baryshkov
880eda3c6cSDmitry Baryshkov        interrupt-parent = <&mdss>;
890eda3c6cSDmitry Baryshkov        interrupts = <0>;
900eda3c6cSDmitry Baryshkov
910eda3c6cSDmitry Baryshkov        ports {
920eda3c6cSDmitry Baryshkov            #address-cells = <1>;
930eda3c6cSDmitry Baryshkov            #size-cells = <0>;
940eda3c6cSDmitry Baryshkov
950eda3c6cSDmitry Baryshkov            port@0 {
960eda3c6cSDmitry Baryshkov                reg = <0>;
970eda3c6cSDmitry Baryshkov                dpu_intf1_out: endpoint {
980eda3c6cSDmitry Baryshkov                    remote-endpoint = <&dsi0_in>;
990eda3c6cSDmitry Baryshkov                };
1000eda3c6cSDmitry Baryshkov            };
1010eda3c6cSDmitry Baryshkov
1020eda3c6cSDmitry Baryshkov            port@1 {
1030eda3c6cSDmitry Baryshkov                reg = <1>;
1040eda3c6cSDmitry Baryshkov                dpu_intf2_out: endpoint {
1050eda3c6cSDmitry Baryshkov                    remote-endpoint = <&dsi1_in>;
1060eda3c6cSDmitry Baryshkov                };
1070eda3c6cSDmitry Baryshkov            };
1080eda3c6cSDmitry Baryshkov        };
1090eda3c6cSDmitry Baryshkov
1100eda3c6cSDmitry Baryshkov        mdp_opp_table: opp-table {
1110eda3c6cSDmitry Baryshkov            compatible = "operating-points-v2";
1120eda3c6cSDmitry Baryshkov
1130eda3c6cSDmitry Baryshkov            opp-172000000{
1140eda3c6cSDmitry Baryshkov                opp-hz = /bits/ 64 <172000000>;
1150eda3c6cSDmitry Baryshkov                required-opps = <&rpmhpd_opp_low_svs_d1>;
1160eda3c6cSDmitry Baryshkov            };
1170eda3c6cSDmitry Baryshkov
1180eda3c6cSDmitry Baryshkov            opp-200000000 {
1190eda3c6cSDmitry Baryshkov                opp-hz = /bits/ 64 <200000000>;
1200eda3c6cSDmitry Baryshkov                required-opps = <&rpmhpd_opp_low_svs>;
1210eda3c6cSDmitry Baryshkov            };
1220eda3c6cSDmitry Baryshkov
1230eda3c6cSDmitry Baryshkov            opp-325000000 {
1240eda3c6cSDmitry Baryshkov                opp-hz = /bits/ 64 <325000000>;
1250eda3c6cSDmitry Baryshkov                required-opps = <&rpmhpd_opp_svs>;
1260eda3c6cSDmitry Baryshkov            };
1270eda3c6cSDmitry Baryshkov
1280eda3c6cSDmitry Baryshkov            opp-375000000 {
1290eda3c6cSDmitry Baryshkov                opp-hz = /bits/ 64 <375000000>;
1300eda3c6cSDmitry Baryshkov                required-opps = <&rpmhpd_opp_svs_l1>;
1310eda3c6cSDmitry Baryshkov            };
1320eda3c6cSDmitry Baryshkov
1330eda3c6cSDmitry Baryshkov            opp-500000000 {
1340eda3c6cSDmitry Baryshkov                opp-hz = /bits/ 64 <500000000>;
1350eda3c6cSDmitry Baryshkov                required-opps = <&rpmhpd_opp_nom>;
1360eda3c6cSDmitry Baryshkov            };
1370eda3c6cSDmitry Baryshkov        };
1380eda3c6cSDmitry Baryshkov    };
1390eda3c6cSDmitry Baryshkov...
140