xref: /openbmc/linux/Documentation/devicetree/bindings/display/msm/qcom,sm8550-mdss.yaml (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1*440b075bSKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
29cf4fc47SNeil Armstrong%YAML 1.2
39cf4fc47SNeil Armstrong---
49cf4fc47SNeil Armstrong$id: http://devicetree.org/schemas/display/msm/qcom,sm8550-mdss.yaml#
59cf4fc47SNeil Armstrong$schema: http://devicetree.org/meta-schemas/core.yaml#
69cf4fc47SNeil Armstrong
79cf4fc47SNeil Armstrongtitle: Qualcomm SM8550 Display MDSS
89cf4fc47SNeil Armstrong
99cf4fc47SNeil Armstrongmaintainers:
109cf4fc47SNeil Armstrong  - Neil Armstrong <neil.armstrong@linaro.org>
119cf4fc47SNeil Armstrong
129cf4fc47SNeil Armstrongdescription:
139cf4fc47SNeil Armstrong  SM8550 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
149cf4fc47SNeil Armstrong  DPU display controller, DSI and DP interfaces etc.
159cf4fc47SNeil Armstrong
169cf4fc47SNeil Armstrong$ref: /schemas/display/msm/mdss-common.yaml#
179cf4fc47SNeil Armstrong
189cf4fc47SNeil Armstrongproperties:
199cf4fc47SNeil Armstrong  compatible:
209cf4fc47SNeil Armstrong    const: qcom,sm8550-mdss
219cf4fc47SNeil Armstrong
229cf4fc47SNeil Armstrong  clocks:
239cf4fc47SNeil Armstrong    items:
249cf4fc47SNeil Armstrong      - description: Display MDSS AHB
259cf4fc47SNeil Armstrong      - description: Display AHB
269cf4fc47SNeil Armstrong      - description: Display hf AXI
279cf4fc47SNeil Armstrong      - description: Display core
289cf4fc47SNeil Armstrong
299cf4fc47SNeil Armstrong  iommus:
309cf4fc47SNeil Armstrong    maxItems: 1
319cf4fc47SNeil Armstrong
329cf4fc47SNeil Armstrong  interconnects:
339cf4fc47SNeil Armstrong    maxItems: 2
349cf4fc47SNeil Armstrong
359cf4fc47SNeil Armstrong  interconnect-names:
369cf4fc47SNeil Armstrong    maxItems: 2
379cf4fc47SNeil Armstrong
389cf4fc47SNeil ArmstrongpatternProperties:
399cf4fc47SNeil Armstrong  "^display-controller@[0-9a-f]+$":
409cf4fc47SNeil Armstrong    type: object
419cf4fc47SNeil Armstrong    properties:
429cf4fc47SNeil Armstrong      compatible:
439cf4fc47SNeil Armstrong        const: qcom,sm8550-dpu
449cf4fc47SNeil Armstrong
45d92ae361SNeil Armstrong  "^displayport-controller@[0-9a-f]+$":
46d92ae361SNeil Armstrong    type: object
47d92ae361SNeil Armstrong    properties:
48d92ae361SNeil Armstrong      compatible:
49d92ae361SNeil Armstrong        items:
50d92ae361SNeil Armstrong          - const: qcom,sm8550-dp
51d92ae361SNeil Armstrong          - const: qcom,sm8350-dp
52d92ae361SNeil Armstrong
539cf4fc47SNeil Armstrong  "^dsi@[0-9a-f]+$":
549cf4fc47SNeil Armstrong    type: object
559cf4fc47SNeil Armstrong    properties:
569cf4fc47SNeil Armstrong      compatible:
579cf4fc47SNeil Armstrong        items:
589cf4fc47SNeil Armstrong          - const: qcom,sm8550-dsi-ctrl
599cf4fc47SNeil Armstrong          - const: qcom,mdss-dsi-ctrl
609cf4fc47SNeil Armstrong
619cf4fc47SNeil Armstrong  "^phy@[0-9a-f]+$":
629cf4fc47SNeil Armstrong    type: object
639cf4fc47SNeil Armstrong    properties:
649cf4fc47SNeil Armstrong      compatible:
659cf4fc47SNeil Armstrong        const: qcom,sm8550-dsi-phy-4nm
669cf4fc47SNeil Armstrong
679cf4fc47SNeil Armstrongrequired:
689cf4fc47SNeil Armstrong  - compatible
699cf4fc47SNeil Armstrong
709cf4fc47SNeil ArmstrongunevaluatedProperties: false
719cf4fc47SNeil Armstrong
729cf4fc47SNeil Armstrongexamples:
739cf4fc47SNeil Armstrong  - |
749cf4fc47SNeil Armstrong    #include <dt-bindings/clock/qcom,sm8550-dispcc.h>
759cf4fc47SNeil Armstrong    #include <dt-bindings/clock/qcom,sm8550-gcc.h>
769cf4fc47SNeil Armstrong    #include <dt-bindings/clock/qcom,rpmh.h>
779cf4fc47SNeil Armstrong    #include <dt-bindings/interrupt-controller/arm-gic.h>
789cf4fc47SNeil Armstrong    #include <dt-bindings/interconnect/qcom,sm8550-rpmh.h>
79014f3272SRohit Agarwal    #include <dt-bindings/power/qcom,rpmhpd.h>
809cf4fc47SNeil Armstrong
819cf4fc47SNeil Armstrong    display-subsystem@ae00000 {
829cf4fc47SNeil Armstrong        compatible = "qcom,sm8550-mdss";
839cf4fc47SNeil Armstrong        reg = <0x0ae00000 0x1000>;
849cf4fc47SNeil Armstrong        reg-names = "mdss";
859cf4fc47SNeil Armstrong
869cf4fc47SNeil Armstrong        interconnects = <&mmss_noc MASTER_MDP 0 &gem_noc SLAVE_LLCC 0>,
879cf4fc47SNeil Armstrong                        <&mc_virt MASTER_LLCC 0 &mc_virt SLAVE_EBI1 0>;
889cf4fc47SNeil Armstrong        interconnect-names = "mdp0-mem", "mdp1-mem";
899cf4fc47SNeil Armstrong
909cf4fc47SNeil Armstrong        resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
919cf4fc47SNeil Armstrong
929cf4fc47SNeil Armstrong        power-domains = <&dispcc MDSS_GDSC>;
939cf4fc47SNeil Armstrong
949cf4fc47SNeil Armstrong        clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
959cf4fc47SNeil Armstrong                 <&gcc GCC_DISP_AHB_CLK>,
969cf4fc47SNeil Armstrong                 <&gcc GCC_DISP_HF_AXI_CLK>,
979cf4fc47SNeil Armstrong                 <&dispcc DISP_CC_MDSS_MDP_CLK>;
989cf4fc47SNeil Armstrong        clock-names = "iface", "bus", "nrt_bus", "core";
999cf4fc47SNeil Armstrong
1009cf4fc47SNeil Armstrong        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
1019cf4fc47SNeil Armstrong        interrupt-controller;
1029cf4fc47SNeil Armstrong        #interrupt-cells = <1>;
1039cf4fc47SNeil Armstrong
1049cf4fc47SNeil Armstrong        iommus = <&apps_smmu 0x1c00 0x2>;
1059cf4fc47SNeil Armstrong
1069cf4fc47SNeil Armstrong        #address-cells = <1>;
1079cf4fc47SNeil Armstrong        #size-cells = <1>;
1089cf4fc47SNeil Armstrong        ranges;
1099cf4fc47SNeil Armstrong
1109cf4fc47SNeil Armstrong        display-controller@ae01000 {
1119cf4fc47SNeil Armstrong            compatible = "qcom,sm8550-dpu";
1129cf4fc47SNeil Armstrong            reg = <0x0ae01000 0x8f000>,
1139cf4fc47SNeil Armstrong                  <0x0aeb0000 0x2008>;
1149cf4fc47SNeil Armstrong            reg-names = "mdp", "vbif";
1159cf4fc47SNeil Armstrong
1169cf4fc47SNeil Armstrong            clocks = <&gcc GCC_DISP_AHB_CLK>,
1179cf4fc47SNeil Armstrong                    <&gcc GCC_DISP_HF_AXI_CLK>,
1189cf4fc47SNeil Armstrong                    <&dispcc DISP_CC_MDSS_AHB_CLK>,
1199cf4fc47SNeil Armstrong                    <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
1209cf4fc47SNeil Armstrong                    <&dispcc DISP_CC_MDSS_MDP_CLK>,
1219cf4fc47SNeil Armstrong                    <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
1229cf4fc47SNeil Armstrong            clock-names = "bus",
1239cf4fc47SNeil Armstrong                          "nrt_bus",
1249cf4fc47SNeil Armstrong                          "iface",
1259cf4fc47SNeil Armstrong                          "lut",
1269cf4fc47SNeil Armstrong                          "core",
1279cf4fc47SNeil Armstrong                          "vsync";
1289cf4fc47SNeil Armstrong
1299cf4fc47SNeil Armstrong            assigned-clocks = <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
1309cf4fc47SNeil Armstrong            assigned-clock-rates = <19200000>;
1319cf4fc47SNeil Armstrong
1329cf4fc47SNeil Armstrong            operating-points-v2 = <&mdp_opp_table>;
133014f3272SRohit Agarwal            power-domains = <&rpmhpd RPMHPD_MMCX>;
1349cf4fc47SNeil Armstrong
1359cf4fc47SNeil Armstrong            interrupt-parent = <&mdss>;
1369cf4fc47SNeil Armstrong            interrupts = <0>;
1379cf4fc47SNeil Armstrong
1389cf4fc47SNeil Armstrong            ports {
1399cf4fc47SNeil Armstrong                #address-cells = <1>;
1409cf4fc47SNeil Armstrong                #size-cells = <0>;
1419cf4fc47SNeil Armstrong
1429cf4fc47SNeil Armstrong                port@0 {
1439cf4fc47SNeil Armstrong                    reg = <0>;
1449cf4fc47SNeil Armstrong                    dpu_intf1_out: endpoint {
1459cf4fc47SNeil Armstrong                        remote-endpoint = <&dsi0_in>;
1469cf4fc47SNeil Armstrong                    };
1479cf4fc47SNeil Armstrong                };
1489cf4fc47SNeil Armstrong
1499cf4fc47SNeil Armstrong                port@1 {
1509cf4fc47SNeil Armstrong                    reg = <1>;
1519cf4fc47SNeil Armstrong                    dpu_intf2_out: endpoint {
1529cf4fc47SNeil Armstrong                        remote-endpoint = <&dsi1_in>;
1539cf4fc47SNeil Armstrong                    };
1549cf4fc47SNeil Armstrong                };
1559cf4fc47SNeil Armstrong            };
1569cf4fc47SNeil Armstrong
1579cf4fc47SNeil Armstrong            mdp_opp_table: opp-table {
1589cf4fc47SNeil Armstrong                compatible = "operating-points-v2";
1599cf4fc47SNeil Armstrong
1609cf4fc47SNeil Armstrong                opp-200000000 {
1619cf4fc47SNeil Armstrong                    opp-hz = /bits/ 64 <200000000>;
1629cf4fc47SNeil Armstrong                    required-opps = <&rpmhpd_opp_low_svs>;
1639cf4fc47SNeil Armstrong                };
1649cf4fc47SNeil Armstrong
1659cf4fc47SNeil Armstrong                opp-325000000 {
1669cf4fc47SNeil Armstrong                    opp-hz = /bits/ 64 <325000000>;
1679cf4fc47SNeil Armstrong                    required-opps = <&rpmhpd_opp_svs>;
1689cf4fc47SNeil Armstrong                };
1699cf4fc47SNeil Armstrong
1709cf4fc47SNeil Armstrong                opp-375000000 {
1719cf4fc47SNeil Armstrong                    opp-hz = /bits/ 64 <375000000>;
1729cf4fc47SNeil Armstrong                    required-opps = <&rpmhpd_opp_svs_l1>;
1739cf4fc47SNeil Armstrong                };
1749cf4fc47SNeil Armstrong
1759cf4fc47SNeil Armstrong                opp-514000000 {
1769cf4fc47SNeil Armstrong                    opp-hz = /bits/ 64 <514000000>;
1779cf4fc47SNeil Armstrong                    required-opps = <&rpmhpd_opp_nom>;
1789cf4fc47SNeil Armstrong                };
1799cf4fc47SNeil Armstrong            };
1809cf4fc47SNeil Armstrong        };
1819cf4fc47SNeil Armstrong
1829cf4fc47SNeil Armstrong        dsi@ae94000 {
1839cf4fc47SNeil Armstrong            compatible = "qcom,sm8550-dsi-ctrl", "qcom,mdss-dsi-ctrl";
1849cf4fc47SNeil Armstrong            reg = <0x0ae94000 0x400>;
1859cf4fc47SNeil Armstrong            reg-names = "dsi_ctrl";
1869cf4fc47SNeil Armstrong
1879cf4fc47SNeil Armstrong            interrupt-parent = <&mdss>;
1889cf4fc47SNeil Armstrong            interrupts = <4>;
1899cf4fc47SNeil Armstrong
1909cf4fc47SNeil Armstrong            clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
1919cf4fc47SNeil Armstrong                     <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
1929cf4fc47SNeil Armstrong                     <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
1939cf4fc47SNeil Armstrong                     <&dispcc DISP_CC_MDSS_ESC0_CLK>,
1949cf4fc47SNeil Armstrong                     <&dispcc DISP_CC_MDSS_AHB_CLK>,
1959cf4fc47SNeil Armstrong                     <&gcc GCC_DISP_HF_AXI_CLK>;
1969cf4fc47SNeil Armstrong            clock-names = "byte",
1979cf4fc47SNeil Armstrong                          "byte_intf",
1989cf4fc47SNeil Armstrong                          "pixel",
1999cf4fc47SNeil Armstrong                          "core",
2009cf4fc47SNeil Armstrong                          "iface",
2019cf4fc47SNeil Armstrong                          "bus";
2029cf4fc47SNeil Armstrong
2039cf4fc47SNeil Armstrong            assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
2049cf4fc47SNeil Armstrong                              <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
2059cf4fc47SNeil Armstrong            assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
2069cf4fc47SNeil Armstrong
2079cf4fc47SNeil Armstrong            operating-points-v2 = <&dsi_opp_table>;
208014f3272SRohit Agarwal            power-domains = <&rpmhpd RPMHPD_MMCX>;
2099cf4fc47SNeil Armstrong
2109cf4fc47SNeil Armstrong            phys = <&dsi0_phy>;
2119cf4fc47SNeil Armstrong            phy-names = "dsi";
2129cf4fc47SNeil Armstrong
2139cf4fc47SNeil Armstrong            #address-cells = <1>;
2149cf4fc47SNeil Armstrong            #size-cells = <0>;
2159cf4fc47SNeil Armstrong
2169cf4fc47SNeil Armstrong            ports {
2179cf4fc47SNeil Armstrong                #address-cells = <1>;
2189cf4fc47SNeil Armstrong                #size-cells = <0>;
2199cf4fc47SNeil Armstrong
2209cf4fc47SNeil Armstrong                port@0 {
2219cf4fc47SNeil Armstrong                    reg = <0>;
2229cf4fc47SNeil Armstrong                    dsi0_in: endpoint {
2239cf4fc47SNeil Armstrong                        remote-endpoint = <&dpu_intf1_out>;
2249cf4fc47SNeil Armstrong                    };
2259cf4fc47SNeil Armstrong                };
2269cf4fc47SNeil Armstrong
2279cf4fc47SNeil Armstrong                port@1 {
2289cf4fc47SNeil Armstrong                    reg = <1>;
2299cf4fc47SNeil Armstrong                    dsi0_out: endpoint {
2309cf4fc47SNeil Armstrong                    };
2319cf4fc47SNeil Armstrong                };
2329cf4fc47SNeil Armstrong            };
2339cf4fc47SNeil Armstrong
2349cf4fc47SNeil Armstrong            dsi_opp_table: opp-table {
2359cf4fc47SNeil Armstrong                compatible = "operating-points-v2";
2369cf4fc47SNeil Armstrong
2379cf4fc47SNeil Armstrong                opp-187500000 {
2389cf4fc47SNeil Armstrong                    opp-hz = /bits/ 64 <187500000>;
2399cf4fc47SNeil Armstrong                    required-opps = <&rpmhpd_opp_low_svs>;
2409cf4fc47SNeil Armstrong                };
2419cf4fc47SNeil Armstrong
2429cf4fc47SNeil Armstrong                opp-300000000 {
2439cf4fc47SNeil Armstrong                    opp-hz = /bits/ 64 <300000000>;
2449cf4fc47SNeil Armstrong                    required-opps = <&rpmhpd_opp_svs>;
2459cf4fc47SNeil Armstrong                };
2469cf4fc47SNeil Armstrong
2479cf4fc47SNeil Armstrong                opp-358000000 {
2489cf4fc47SNeil Armstrong                    opp-hz = /bits/ 64 <358000000>;
2499cf4fc47SNeil Armstrong                    required-opps = <&rpmhpd_opp_svs_l1>;
2509cf4fc47SNeil Armstrong                };
2519cf4fc47SNeil Armstrong            };
2529cf4fc47SNeil Armstrong        };
2539cf4fc47SNeil Armstrong
2549cf4fc47SNeil Armstrong        dsi0_phy: phy@ae94400 {
2559cf4fc47SNeil Armstrong            compatible = "qcom,sm8550-dsi-phy-4nm";
2569cf4fc47SNeil Armstrong            reg = <0x0ae95000 0x200>,
2579cf4fc47SNeil Armstrong                  <0x0ae95200 0x280>,
2589cf4fc47SNeil Armstrong                  <0x0ae95500 0x400>;
2599cf4fc47SNeil Armstrong            reg-names = "dsi_phy",
2609cf4fc47SNeil Armstrong                        "dsi_phy_lane",
2619cf4fc47SNeil Armstrong                        "dsi_pll";
2629cf4fc47SNeil Armstrong
2639cf4fc47SNeil Armstrong            #clock-cells = <1>;
2649cf4fc47SNeil Armstrong            #phy-cells = <0>;
2659cf4fc47SNeil Armstrong
2669cf4fc47SNeil Armstrong            clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
2679cf4fc47SNeil Armstrong                     <&rpmhcc RPMH_CXO_CLK>;
2689cf4fc47SNeil Armstrong            clock-names = "iface", "ref";
2699cf4fc47SNeil Armstrong        };
2709cf4fc47SNeil Armstrong
2719cf4fc47SNeil Armstrong        dsi@ae96000 {
2729cf4fc47SNeil Armstrong            compatible = "qcom,sm8550-dsi-ctrl", "qcom,mdss-dsi-ctrl";
2739cf4fc47SNeil Armstrong            reg = <0x0ae96000 0x400>;
2749cf4fc47SNeil Armstrong            reg-names = "dsi_ctrl";
2759cf4fc47SNeil Armstrong
2769cf4fc47SNeil Armstrong            interrupt-parent = <&mdss>;
2779cf4fc47SNeil Armstrong            interrupts = <5>;
2789cf4fc47SNeil Armstrong
2799cf4fc47SNeil Armstrong            clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK>,
2809cf4fc47SNeil Armstrong                     <&dispcc DISP_CC_MDSS_BYTE1_INTF_CLK>,
2819cf4fc47SNeil Armstrong                     <&dispcc DISP_CC_MDSS_PCLK1_CLK>,
2829cf4fc47SNeil Armstrong                     <&dispcc DISP_CC_MDSS_ESC1_CLK>,
2839cf4fc47SNeil Armstrong                     <&dispcc DISP_CC_MDSS_AHB_CLK>,
2849cf4fc47SNeil Armstrong                     <&gcc GCC_DISP_HF_AXI_CLK>;
2859cf4fc47SNeil Armstrong            clock-names = "byte",
2869cf4fc47SNeil Armstrong                          "byte_intf",
2879cf4fc47SNeil Armstrong                          "pixel",
2889cf4fc47SNeil Armstrong                          "core",
2899cf4fc47SNeil Armstrong                          "iface",
2909cf4fc47SNeil Armstrong                          "bus";
2919cf4fc47SNeil Armstrong
2929cf4fc47SNeil Armstrong            assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
2939cf4fc47SNeil Armstrong                              <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
2949cf4fc47SNeil Armstrong            assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
2959cf4fc47SNeil Armstrong
2969cf4fc47SNeil Armstrong            operating-points-v2 = <&dsi_opp_table>;
297014f3272SRohit Agarwal            power-domains = <&rpmhpd RPMHPD_MMCX>;
2989cf4fc47SNeil Armstrong
2999cf4fc47SNeil Armstrong            phys = <&dsi1_phy>;
3009cf4fc47SNeil Armstrong            phy-names = "dsi";
3019cf4fc47SNeil Armstrong
3029cf4fc47SNeil Armstrong            #address-cells = <1>;
3039cf4fc47SNeil Armstrong            #size-cells = <0>;
3049cf4fc47SNeil Armstrong
3059cf4fc47SNeil Armstrong            ports {
3069cf4fc47SNeil Armstrong                #address-cells = <1>;
3079cf4fc47SNeil Armstrong                #size-cells = <0>;
3089cf4fc47SNeil Armstrong
3099cf4fc47SNeil Armstrong                port@0 {
3109cf4fc47SNeil Armstrong                    reg = <0>;
3119cf4fc47SNeil Armstrong                    dsi1_in: endpoint {
3129cf4fc47SNeil Armstrong                        remote-endpoint = <&dpu_intf2_out>;
3139cf4fc47SNeil Armstrong                    };
3149cf4fc47SNeil Armstrong                };
3159cf4fc47SNeil Armstrong
3169cf4fc47SNeil Armstrong                port@1 {
3179cf4fc47SNeil Armstrong                    reg = <1>;
3189cf4fc47SNeil Armstrong                    dsi1_out: endpoint {
3199cf4fc47SNeil Armstrong                    };
3209cf4fc47SNeil Armstrong                };
3219cf4fc47SNeil Armstrong            };
3229cf4fc47SNeil Armstrong        };
3239cf4fc47SNeil Armstrong
3249cf4fc47SNeil Armstrong        dsi1_phy: phy@ae96400 {
3259cf4fc47SNeil Armstrong            compatible = "qcom,sm8550-dsi-phy-4nm";
3269cf4fc47SNeil Armstrong            reg = <0x0ae97000 0x200>,
3279cf4fc47SNeil Armstrong                  <0x0ae97200 0x280>,
3289cf4fc47SNeil Armstrong                  <0x0ae97500 0x400>;
3299cf4fc47SNeil Armstrong            reg-names = "dsi_phy",
3309cf4fc47SNeil Armstrong                        "dsi_phy_lane",
3319cf4fc47SNeil Armstrong                        "dsi_pll";
3329cf4fc47SNeil Armstrong
3339cf4fc47SNeil Armstrong            #clock-cells = <1>;
3349cf4fc47SNeil Armstrong            #phy-cells = <0>;
3359cf4fc47SNeil Armstrong
3369cf4fc47SNeil Armstrong            clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
3379cf4fc47SNeil Armstrong                     <&rpmhcc RPMH_CXO_CLK>;
3389cf4fc47SNeil Armstrong            clock-names = "iface", "ref";
3399cf4fc47SNeil Armstrong        };
3409cf4fc47SNeil Armstrong    };
3419cf4fc47SNeil Armstrong...
342