xref: /freebsd-src/sys/contrib/device-tree/Bindings/display/msm/qcom,sc7180-mdss.yaml (revision 8d13bc63c0e1d50bc9e47ac1f26329c999bfecf0)
1aa1a8ff2SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
28bab661aSEmmanuel Vadot%YAML 1.2
38bab661aSEmmanuel Vadot---
48bab661aSEmmanuel Vadot$id: http://devicetree.org/schemas/display/msm/qcom,sc7180-mdss.yaml#
58bab661aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68bab661aSEmmanuel Vadot
78bab661aSEmmanuel Vadottitle: Qualcomm SC7180 Display MDSS
88bab661aSEmmanuel Vadot
98bab661aSEmmanuel Vadotmaintainers:
108bab661aSEmmanuel Vadot  - Krishna Manikandan <quic_mkrishn@quicinc.com>
118bab661aSEmmanuel Vadot
128bab661aSEmmanuel Vadotdescription:
138bab661aSEmmanuel Vadot  Device tree bindings for MSM Mobile Display Subsystem(MDSS) that encapsulates
148bab661aSEmmanuel Vadot  sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree
158bab661aSEmmanuel Vadot  bindings of MDSS are mentioned for SC7180 target.
168bab661aSEmmanuel Vadot
178bab661aSEmmanuel Vadot$ref: /schemas/display/msm/mdss-common.yaml#
188bab661aSEmmanuel Vadot
198bab661aSEmmanuel Vadotproperties:
208bab661aSEmmanuel Vadot  compatible:
21cb7aa33aSEmmanuel Vadot    const: qcom,sc7180-mdss
228bab661aSEmmanuel Vadot
238bab661aSEmmanuel Vadot  clocks:
248bab661aSEmmanuel Vadot    items:
258bab661aSEmmanuel Vadot      - description: Display AHB clock from gcc
268bab661aSEmmanuel Vadot      - description: Display AHB clock from dispcc
278bab661aSEmmanuel Vadot      - description: Display core clock
288bab661aSEmmanuel Vadot
298bab661aSEmmanuel Vadot  clock-names:
308bab661aSEmmanuel Vadot    items:
318bab661aSEmmanuel Vadot      - const: iface
328bab661aSEmmanuel Vadot      - const: ahb
338bab661aSEmmanuel Vadot      - const: core
348bab661aSEmmanuel Vadot
358bab661aSEmmanuel Vadot  iommus:
368bab661aSEmmanuel Vadot    maxItems: 1
378bab661aSEmmanuel Vadot
388bab661aSEmmanuel Vadot  interconnects:
39*8d13bc63SEmmanuel Vadot    items:
40*8d13bc63SEmmanuel Vadot      - description: Interconnect path from mdp0 port to the data bus
41*8d13bc63SEmmanuel Vadot      - description: Interconnect path from CPU to the reg bus
428bab661aSEmmanuel Vadot
438bab661aSEmmanuel Vadot  interconnect-names:
44*8d13bc63SEmmanuel Vadot    items:
45*8d13bc63SEmmanuel Vadot      - const: mdp0-mem
46*8d13bc63SEmmanuel Vadot      - const: cpu-cfg
478bab661aSEmmanuel Vadot
488bab661aSEmmanuel VadotpatternProperties:
498bab661aSEmmanuel Vadot  "^display-controller@[0-9a-f]+$":
508bab661aSEmmanuel Vadot    type: object
5184943d6fSEmmanuel Vadot    additionalProperties: true
5284943d6fSEmmanuel Vadot
538bab661aSEmmanuel Vadot    properties:
548bab661aSEmmanuel Vadot      compatible:
558bab661aSEmmanuel Vadot        const: qcom,sc7180-dpu
568bab661aSEmmanuel Vadot
578bab661aSEmmanuel Vadot  "^displayport-controller@[0-9a-f]+$":
588bab661aSEmmanuel Vadot    type: object
5984943d6fSEmmanuel Vadot    additionalProperties: true
6084943d6fSEmmanuel Vadot
618bab661aSEmmanuel Vadot    properties:
628bab661aSEmmanuel Vadot      compatible:
638bab661aSEmmanuel Vadot        const: qcom,sc7180-dp
648bab661aSEmmanuel Vadot
658bab661aSEmmanuel Vadot  "^dsi@[0-9a-f]+$":
668bab661aSEmmanuel Vadot    type: object
6784943d6fSEmmanuel Vadot    additionalProperties: true
6884943d6fSEmmanuel Vadot
698bab661aSEmmanuel Vadot    properties:
708bab661aSEmmanuel Vadot      compatible:
71cb7aa33aSEmmanuel Vadot        items:
72cb7aa33aSEmmanuel Vadot          - const: qcom,sc7180-dsi-ctrl
73cb7aa33aSEmmanuel Vadot          - const: qcom,mdss-dsi-ctrl
748bab661aSEmmanuel Vadot
758bab661aSEmmanuel Vadot  "^phy@[0-9a-f]+$":
768bab661aSEmmanuel Vadot    type: object
7784943d6fSEmmanuel Vadot    additionalProperties: true
7884943d6fSEmmanuel Vadot
798bab661aSEmmanuel Vadot    properties:
808bab661aSEmmanuel Vadot      compatible:
818bab661aSEmmanuel Vadot        const: qcom,dsi-phy-10nm
828bab661aSEmmanuel Vadot
83cb7aa33aSEmmanuel Vadotrequired:
84cb7aa33aSEmmanuel Vadot  - compatible
85cb7aa33aSEmmanuel Vadot
868bab661aSEmmanuel VadotunevaluatedProperties: false
878bab661aSEmmanuel Vadot
888bab661aSEmmanuel Vadotexamples:
898bab661aSEmmanuel Vadot  - |
908bab661aSEmmanuel Vadot    #include <dt-bindings/clock/qcom,dispcc-sc7180.h>
918bab661aSEmmanuel Vadot    #include <dt-bindings/clock/qcom,gcc-sc7180.h>
928bab661aSEmmanuel Vadot    #include <dt-bindings/clock/qcom,rpmh.h>
938bab661aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
948bab661aSEmmanuel Vadot    #include <dt-bindings/interconnect/qcom,sdm845.h>
958bab661aSEmmanuel Vadot    #include <dt-bindings/power/qcom-rpmpd.h>
968bab661aSEmmanuel Vadot
978bab661aSEmmanuel Vadot    display-subsystem@ae00000 {
988bab661aSEmmanuel Vadot        #address-cells = <1>;
998bab661aSEmmanuel Vadot        #size-cells = <1>;
1008bab661aSEmmanuel Vadot        compatible = "qcom,sc7180-mdss";
1018bab661aSEmmanuel Vadot        reg = <0xae00000 0x1000>;
1028bab661aSEmmanuel Vadot        reg-names = "mdss";
1038bab661aSEmmanuel Vadot        power-domains = <&dispcc MDSS_GDSC>;
1048bab661aSEmmanuel Vadot        clocks = <&gcc GCC_DISP_AHB_CLK>,
1058bab661aSEmmanuel Vadot                 <&dispcc DISP_CC_MDSS_AHB_CLK>,
1068bab661aSEmmanuel Vadot                 <&dispcc DISP_CC_MDSS_MDP_CLK>;
1078bab661aSEmmanuel Vadot        clock-names = "iface", "ahb", "core";
1088bab661aSEmmanuel Vadot
1098bab661aSEmmanuel Vadot        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
1108bab661aSEmmanuel Vadot        interrupt-controller;
1118bab661aSEmmanuel Vadot        #interrupt-cells = <1>;
1128bab661aSEmmanuel Vadot
113*8d13bc63SEmmanuel Vadot        interconnects = <&mmss_noc MASTER_MDP0 &mc_virt SLAVE_EBI1>,
114*8d13bc63SEmmanuel Vadot                        <&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_DISPLAY_CFG>;
115*8d13bc63SEmmanuel Vadot        interconnect-names = "mdp0-mem",
116*8d13bc63SEmmanuel Vadot                             "cpu-cfg";
1178bab661aSEmmanuel Vadot
1188bab661aSEmmanuel Vadot        iommus = <&apps_smmu 0x800 0x2>;
1198bab661aSEmmanuel Vadot        ranges;
1208bab661aSEmmanuel Vadot
1218bab661aSEmmanuel Vadot        display-controller@ae01000 {
1228bab661aSEmmanuel Vadot            compatible = "qcom,sc7180-dpu";
1238bab661aSEmmanuel Vadot            reg = <0x0ae01000 0x8f000>,
1248bab661aSEmmanuel Vadot                  <0x0aeb0000 0x2008>;
1258bab661aSEmmanuel Vadot
1268bab661aSEmmanuel Vadot            reg-names = "mdp", "vbif";
1278bab661aSEmmanuel Vadot
1288bab661aSEmmanuel Vadot            clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
1298bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_AHB_CLK>,
1308bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_ROT_CLK>,
1318bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
1328bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_MDP_CLK>,
1338bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
1348bab661aSEmmanuel Vadot            clock-names = "bus", "iface", "rot", "lut", "core",
1358bab661aSEmmanuel Vadot                          "vsync";
1368bab661aSEmmanuel Vadot
1378bab661aSEmmanuel Vadot            interrupt-parent = <&mdss>;
1388bab661aSEmmanuel Vadot            interrupts = <0>;
1398bab661aSEmmanuel Vadot            power-domains = <&rpmhpd SC7180_CX>;
1408bab661aSEmmanuel Vadot            operating-points-v2 = <&mdp_opp_table>;
1418bab661aSEmmanuel Vadot
1428bab661aSEmmanuel Vadot            ports {
1438bab661aSEmmanuel Vadot                #address-cells = <1>;
1448bab661aSEmmanuel Vadot                #size-cells = <0>;
1458bab661aSEmmanuel Vadot
1468bab661aSEmmanuel Vadot                port@0 {
1478bab661aSEmmanuel Vadot                    reg = <0>;
1488bab661aSEmmanuel Vadot                    dpu_intf1_out: endpoint {
1498bab661aSEmmanuel Vadot                        remote-endpoint = <&dsi0_in>;
1508bab661aSEmmanuel Vadot                    };
1518bab661aSEmmanuel Vadot                };
1528bab661aSEmmanuel Vadot
1538bab661aSEmmanuel Vadot                port@2 {
1548bab661aSEmmanuel Vadot                    reg = <2>;
1558bab661aSEmmanuel Vadot                    dpu_intf0_out: endpoint {
1568bab661aSEmmanuel Vadot                        remote-endpoint = <&dp_in>;
1578bab661aSEmmanuel Vadot                    };
1588bab661aSEmmanuel Vadot                };
1598bab661aSEmmanuel Vadot            };
1608bab661aSEmmanuel Vadot        };
1618bab661aSEmmanuel Vadot
1628bab661aSEmmanuel Vadot        dsi@ae94000 {
163cb7aa33aSEmmanuel Vadot            compatible = "qcom,sc7180-dsi-ctrl", "qcom,mdss-dsi-ctrl";
1648bab661aSEmmanuel Vadot            reg = <0x0ae94000 0x400>;
1658bab661aSEmmanuel Vadot            reg-names = "dsi_ctrl";
1668bab661aSEmmanuel Vadot
1678bab661aSEmmanuel Vadot            interrupt-parent = <&mdss>;
1688bab661aSEmmanuel Vadot            interrupts = <4>;
1698bab661aSEmmanuel Vadot
1708bab661aSEmmanuel Vadot            clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
1718bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
1728bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
1738bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_ESC0_CLK>,
1748bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_AHB_CLK>,
1758bab661aSEmmanuel Vadot                     <&gcc GCC_DISP_HF_AXI_CLK>;
1768bab661aSEmmanuel Vadot            clock-names = "byte",
1778bab661aSEmmanuel Vadot                          "byte_intf",
1788bab661aSEmmanuel Vadot                          "pixel",
1798bab661aSEmmanuel Vadot                          "core",
1808bab661aSEmmanuel Vadot                          "iface",
1818bab661aSEmmanuel Vadot                          "bus";
1828bab661aSEmmanuel Vadot
1838bab661aSEmmanuel Vadot            assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
1848bab661aSEmmanuel Vadot            assigned-clock-parents = <&dsi_phy 0>, <&dsi_phy 1>;
1858bab661aSEmmanuel Vadot
1868bab661aSEmmanuel Vadot            operating-points-v2 = <&dsi_opp_table>;
1878bab661aSEmmanuel Vadot            power-domains = <&rpmhpd SC7180_CX>;
1888bab661aSEmmanuel Vadot
1898bab661aSEmmanuel Vadot            phys = <&dsi_phy>;
1908bab661aSEmmanuel Vadot            phy-names = "dsi";
1918bab661aSEmmanuel Vadot
1928bab661aSEmmanuel Vadot            #address-cells = <1>;
1938bab661aSEmmanuel Vadot            #size-cells = <0>;
1948bab661aSEmmanuel Vadot
1958bab661aSEmmanuel Vadot            ports {
1968bab661aSEmmanuel Vadot                #address-cells = <1>;
1978bab661aSEmmanuel Vadot                #size-cells = <0>;
1988bab661aSEmmanuel Vadot
1998bab661aSEmmanuel Vadot                port@0 {
2008bab661aSEmmanuel Vadot                    reg = <0>;
2018bab661aSEmmanuel Vadot                    dsi0_in: endpoint {
2028bab661aSEmmanuel Vadot                        remote-endpoint = <&dpu_intf1_out>;
2038bab661aSEmmanuel Vadot                    };
2048bab661aSEmmanuel Vadot                };
2058bab661aSEmmanuel Vadot
2068bab661aSEmmanuel Vadot                port@1 {
2078bab661aSEmmanuel Vadot                    reg = <1>;
2088bab661aSEmmanuel Vadot                    dsi0_out: endpoint {
2098bab661aSEmmanuel Vadot                    };
2108bab661aSEmmanuel Vadot                };
2118bab661aSEmmanuel Vadot            };
2128bab661aSEmmanuel Vadot
2138bab661aSEmmanuel Vadot            dsi_opp_table: opp-table {
2148bab661aSEmmanuel Vadot                compatible = "operating-points-v2";
2158bab661aSEmmanuel Vadot
2168bab661aSEmmanuel Vadot                opp-187500000 {
2178bab661aSEmmanuel Vadot                    opp-hz = /bits/ 64 <187500000>;
2188bab661aSEmmanuel Vadot                    required-opps = <&rpmhpd_opp_low_svs>;
2198bab661aSEmmanuel Vadot                };
2208bab661aSEmmanuel Vadot
2218bab661aSEmmanuel Vadot                opp-300000000 {
2228bab661aSEmmanuel Vadot                    opp-hz = /bits/ 64 <300000000>;
2238bab661aSEmmanuel Vadot                    required-opps = <&rpmhpd_opp_svs>;
2248bab661aSEmmanuel Vadot                };
2258bab661aSEmmanuel Vadot
2268bab661aSEmmanuel Vadot                opp-358000000 {
2278bab661aSEmmanuel Vadot                    opp-hz = /bits/ 64 <358000000>;
2288bab661aSEmmanuel Vadot                    required-opps = <&rpmhpd_opp_svs_l1>;
2298bab661aSEmmanuel Vadot                };
2308bab661aSEmmanuel Vadot            };
2318bab661aSEmmanuel Vadot        };
2328bab661aSEmmanuel Vadot
2338bab661aSEmmanuel Vadot        dsi_phy: phy@ae94400 {
2348bab661aSEmmanuel Vadot            compatible = "qcom,dsi-phy-10nm";
2358bab661aSEmmanuel Vadot            reg = <0x0ae94400 0x200>,
2368bab661aSEmmanuel Vadot                  <0x0ae94600 0x280>,
2378bab661aSEmmanuel Vadot                  <0x0ae94a00 0x1e0>;
2388bab661aSEmmanuel Vadot            reg-names = "dsi_phy",
2398bab661aSEmmanuel Vadot                    "dsi_phy_lane",
2408bab661aSEmmanuel Vadot                    "dsi_pll";
2418bab661aSEmmanuel Vadot
2428bab661aSEmmanuel Vadot            #clock-cells = <1>;
2438bab661aSEmmanuel Vadot            #phy-cells = <0>;
2448bab661aSEmmanuel Vadot
2458bab661aSEmmanuel Vadot            clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
2468bab661aSEmmanuel Vadot                 <&rpmhcc RPMH_CXO_CLK>;
2478bab661aSEmmanuel Vadot            clock-names = "iface", "ref";
2488bab661aSEmmanuel Vadot            vdds-supply = <&vreg_dsi_phy>;
2498bab661aSEmmanuel Vadot        };
2508bab661aSEmmanuel Vadot
2518bab661aSEmmanuel Vadot        displayport-controller@ae90000 {
2528bab661aSEmmanuel Vadot            compatible = "qcom,sc7180-dp";
2538bab661aSEmmanuel Vadot
2548bab661aSEmmanuel Vadot            reg = <0xae90000 0x200>,
2558bab661aSEmmanuel Vadot                  <0xae90200 0x200>,
2568bab661aSEmmanuel Vadot                  <0xae90400 0xc00>,
2578bab661aSEmmanuel Vadot                  <0xae91000 0x400>,
2588bab661aSEmmanuel Vadot                  <0xae91400 0x400>;
2598bab661aSEmmanuel Vadot
2608bab661aSEmmanuel Vadot            interrupt-parent = <&mdss>;
2618bab661aSEmmanuel Vadot            interrupts = <12>;
2628bab661aSEmmanuel Vadot
2638bab661aSEmmanuel Vadot            clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
2648bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_DP_AUX_CLK>,
2658bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_DP_LINK_CLK>,
2668bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_DP_LINK_INTF_CLK>,
2678bab661aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK>;
2688bab661aSEmmanuel Vadot            clock-names = "core_iface", "core_aux", "ctrl_link",
2698bab661aSEmmanuel Vadot                          "ctrl_link_iface", "stream_pixel";
2708bab661aSEmmanuel Vadot            assigned-clocks = <&dispcc DISP_CC_MDSS_DP_LINK_CLK_SRC>,
2718bab661aSEmmanuel Vadot                              <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK_SRC>;
2728bab661aSEmmanuel Vadot            assigned-clock-parents = <&dp_phy 0>, <&dp_phy 1>;
2738bab661aSEmmanuel Vadot            phys = <&dp_phy>;
2748bab661aSEmmanuel Vadot            phy-names = "dp";
2758bab661aSEmmanuel Vadot
2768bab661aSEmmanuel Vadot            operating-points-v2 = <&dp_opp_table>;
2778bab661aSEmmanuel Vadot            power-domains = <&rpmhpd SC7180_CX>;
2788bab661aSEmmanuel Vadot
2798bab661aSEmmanuel Vadot            #sound-dai-cells = <0>;
2808bab661aSEmmanuel Vadot
2818bab661aSEmmanuel Vadot            ports {
2828bab661aSEmmanuel Vadot                #address-cells = <1>;
2838bab661aSEmmanuel Vadot                #size-cells = <0>;
2848bab661aSEmmanuel Vadot                port@0 {
2858bab661aSEmmanuel Vadot                    reg = <0>;
2868bab661aSEmmanuel Vadot                    dp_in: endpoint {
2878bab661aSEmmanuel Vadot                        remote-endpoint = <&dpu_intf0_out>;
2888bab661aSEmmanuel Vadot                    };
2898bab661aSEmmanuel Vadot                };
2908bab661aSEmmanuel Vadot
2918bab661aSEmmanuel Vadot                port@1 {
2928bab661aSEmmanuel Vadot                    reg = <1>;
2938bab661aSEmmanuel Vadot                    dp_out: endpoint { };
2948bab661aSEmmanuel Vadot                };
2958bab661aSEmmanuel Vadot            };
2968bab661aSEmmanuel Vadot
2978bab661aSEmmanuel Vadot            dp_opp_table: opp-table {
2988bab661aSEmmanuel Vadot                compatible = "operating-points-v2";
2998bab661aSEmmanuel Vadot
3008bab661aSEmmanuel Vadot                opp-160000000 {
3018bab661aSEmmanuel Vadot                    opp-hz = /bits/ 64 <160000000>;
3028bab661aSEmmanuel Vadot                    required-opps = <&rpmhpd_opp_low_svs>;
3038bab661aSEmmanuel Vadot                };
3048bab661aSEmmanuel Vadot
3058bab661aSEmmanuel Vadot                opp-270000000 {
3068bab661aSEmmanuel Vadot                    opp-hz = /bits/ 64 <270000000>;
3078bab661aSEmmanuel Vadot                    required-opps = <&rpmhpd_opp_svs>;
3088bab661aSEmmanuel Vadot                };
3098bab661aSEmmanuel Vadot
3108bab661aSEmmanuel Vadot                opp-540000000 {
3118bab661aSEmmanuel Vadot                    opp-hz = /bits/ 64 <540000000>;
3128bab661aSEmmanuel Vadot                    required-opps = <&rpmhpd_opp_svs_l1>;
3138bab661aSEmmanuel Vadot                };
3148bab661aSEmmanuel Vadot
3158bab661aSEmmanuel Vadot                opp-810000000 {
3168bab661aSEmmanuel Vadot                    opp-hz = /bits/ 64 <810000000>;
3178bab661aSEmmanuel Vadot                    required-opps = <&rpmhpd_opp_nom>;
3188bab661aSEmmanuel Vadot                };
3198bab661aSEmmanuel Vadot            };
3208bab661aSEmmanuel Vadot        };
3218bab661aSEmmanuel Vadot    };
3228bab661aSEmmanuel Vadot...
323