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,sm8250-mdss.yaml# 58bab661aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 68bab661aSEmmanuel Vadot 78bab661aSEmmanuel Vadottitle: Qualcomm SM8250 Display MDSS 88bab661aSEmmanuel Vadot 98bab661aSEmmanuel Vadotmaintainers: 108bab661aSEmmanuel Vadot - Dmitry Baryshkov <dmitry.baryshkov@linaro.org> 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 SM8250 target. 168bab661aSEmmanuel Vadot 178bab661aSEmmanuel Vadot$ref: /schemas/display/msm/mdss-common.yaml# 188bab661aSEmmanuel Vadot 198bab661aSEmmanuel Vadotproperties: 208bab661aSEmmanuel Vadot compatible: 21cb7aa33aSEmmanuel Vadot const: qcom,sm8250-mdss 228bab661aSEmmanuel Vadot 238bab661aSEmmanuel Vadot clocks: 248bab661aSEmmanuel Vadot items: 258bab661aSEmmanuel Vadot - description: Display AHB clock from gcc 268bab661aSEmmanuel Vadot - description: Display hf axi clock 278bab661aSEmmanuel Vadot - description: Display sf axi clock 288bab661aSEmmanuel Vadot - description: Display core clock 298bab661aSEmmanuel Vadot 308bab661aSEmmanuel Vadot clock-names: 318bab661aSEmmanuel Vadot items: 328bab661aSEmmanuel Vadot - const: iface 338bab661aSEmmanuel Vadot - const: bus 348bab661aSEmmanuel Vadot - const: nrt_bus 358bab661aSEmmanuel Vadot - const: core 368bab661aSEmmanuel Vadot 378bab661aSEmmanuel Vadot iommus: 388bab661aSEmmanuel Vadot maxItems: 1 398bab661aSEmmanuel Vadot 408bab661aSEmmanuel Vadot interconnects: 418bab661aSEmmanuel Vadot maxItems: 2 428bab661aSEmmanuel Vadot 438bab661aSEmmanuel Vadot interconnect-names: 448bab661aSEmmanuel Vadot maxItems: 2 458bab661aSEmmanuel Vadot 468bab661aSEmmanuel VadotpatternProperties: 478bab661aSEmmanuel Vadot "^display-controller@[0-9a-f]+$": 488bab661aSEmmanuel Vadot type: object 4984943d6fSEmmanuel Vadot additionalProperties: true 5084943d6fSEmmanuel Vadot 518bab661aSEmmanuel Vadot properties: 528bab661aSEmmanuel Vadot compatible: 538bab661aSEmmanuel Vadot const: qcom,sm8250-dpu 548bab661aSEmmanuel Vadot 55*8d13bc63SEmmanuel Vadot "^displayport-controller@[0-9a-f]+$": 56*8d13bc63SEmmanuel Vadot type: object 57*8d13bc63SEmmanuel Vadot additionalProperties: true 58*8d13bc63SEmmanuel Vadot 59*8d13bc63SEmmanuel Vadot properties: 60*8d13bc63SEmmanuel Vadot compatible: 61*8d13bc63SEmmanuel Vadot items: 62*8d13bc63SEmmanuel Vadot - const: qcom,sm8250-dp 63*8d13bc63SEmmanuel Vadot - const: qcom,sm8350-dp 64*8d13bc63SEmmanuel 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,sm8250-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-7nm 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-sm8250.h> 918bab661aSEmmanuel Vadot #include <dt-bindings/clock/qcom,gcc-sm8250.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,sm8250.h> 95aa1a8ff2SEmmanuel Vadot #include <dt-bindings/power/qcom,rpmhpd.h> 968bab661aSEmmanuel Vadot 978bab661aSEmmanuel Vadot display-subsystem@ae00000 { 988bab661aSEmmanuel Vadot compatible = "qcom,sm8250-mdss"; 998bab661aSEmmanuel Vadot reg = <0x0ae00000 0x1000>; 1008bab661aSEmmanuel Vadot reg-names = "mdss"; 1018bab661aSEmmanuel Vadot 1028bab661aSEmmanuel Vadot interconnects = <&mmss_noc MASTER_MDP_PORT0 &mc_virt SLAVE_EBI_CH0>, 1038bab661aSEmmanuel Vadot <&mmss_noc MASTER_MDP_PORT1 &mc_virt SLAVE_EBI_CH0>; 1048bab661aSEmmanuel Vadot interconnect-names = "mdp0-mem", "mdp1-mem"; 1058bab661aSEmmanuel Vadot 1068bab661aSEmmanuel Vadot power-domains = <&dispcc MDSS_GDSC>; 1078bab661aSEmmanuel Vadot 1088bab661aSEmmanuel Vadot clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 1098bab661aSEmmanuel Vadot <&gcc GCC_DISP_HF_AXI_CLK>, 1108bab661aSEmmanuel Vadot <&gcc GCC_DISP_SF_AXI_CLK>, 1118bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_MDP_CLK>; 1128bab661aSEmmanuel Vadot clock-names = "iface", "bus", "nrt_bus", "core"; 1138bab661aSEmmanuel Vadot 1148bab661aSEmmanuel Vadot interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 1158bab661aSEmmanuel Vadot interrupt-controller; 1168bab661aSEmmanuel Vadot #interrupt-cells = <1>; 1178bab661aSEmmanuel Vadot 1188bab661aSEmmanuel Vadot iommus = <&apps_smmu 0x820 0x402>; 1198bab661aSEmmanuel Vadot 1208bab661aSEmmanuel Vadot #address-cells = <1>; 1218bab661aSEmmanuel Vadot #size-cells = <1>; 1228bab661aSEmmanuel Vadot ranges; 1238bab661aSEmmanuel Vadot 1248bab661aSEmmanuel Vadot display-controller@ae01000 { 1258bab661aSEmmanuel Vadot compatible = "qcom,sm8250-dpu"; 1268bab661aSEmmanuel Vadot reg = <0x0ae01000 0x8f000>, 1278bab661aSEmmanuel Vadot <0x0aeb0000 0x2008>; 1288bab661aSEmmanuel Vadot reg-names = "mdp", "vbif"; 1298bab661aSEmmanuel Vadot 1308bab661aSEmmanuel Vadot clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 1318bab661aSEmmanuel Vadot <&gcc GCC_DISP_HF_AXI_CLK>, 1328bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_MDP_CLK>, 1338bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_VSYNC_CLK>; 1348bab661aSEmmanuel Vadot clock-names = "iface", "bus", "core", "vsync"; 1358bab661aSEmmanuel Vadot 1368bab661aSEmmanuel Vadot assigned-clocks = <&dispcc DISP_CC_MDSS_VSYNC_CLK>; 1378bab661aSEmmanuel Vadot assigned-clock-rates = <19200000>; 1388bab661aSEmmanuel Vadot 1398bab661aSEmmanuel Vadot operating-points-v2 = <&mdp_opp_table>; 140aa1a8ff2SEmmanuel Vadot power-domains = <&rpmhpd RPMHPD_MMCX>; 1418bab661aSEmmanuel Vadot 1428bab661aSEmmanuel Vadot interrupt-parent = <&mdss>; 1438bab661aSEmmanuel Vadot interrupts = <0>; 1448bab661aSEmmanuel Vadot 1458bab661aSEmmanuel Vadot ports { 1468bab661aSEmmanuel Vadot #address-cells = <1>; 1478bab661aSEmmanuel Vadot #size-cells = <0>; 1488bab661aSEmmanuel Vadot 1498bab661aSEmmanuel Vadot port@0 { 1508bab661aSEmmanuel Vadot reg = <0>; 1518bab661aSEmmanuel Vadot dpu_intf1_out: endpoint { 1528bab661aSEmmanuel Vadot remote-endpoint = <&dsi0_in>; 1538bab661aSEmmanuel Vadot }; 1548bab661aSEmmanuel Vadot }; 1558bab661aSEmmanuel Vadot 1568bab661aSEmmanuel Vadot port@1 { 1578bab661aSEmmanuel Vadot reg = <1>; 1588bab661aSEmmanuel Vadot dpu_intf2_out: endpoint { 1598bab661aSEmmanuel Vadot remote-endpoint = <&dsi1_in>; 1608bab661aSEmmanuel Vadot }; 1618bab661aSEmmanuel Vadot }; 1628bab661aSEmmanuel Vadot }; 1638bab661aSEmmanuel Vadot 1648bab661aSEmmanuel Vadot mdp_opp_table: opp-table { 1658bab661aSEmmanuel Vadot compatible = "operating-points-v2"; 1668bab661aSEmmanuel Vadot 1678bab661aSEmmanuel Vadot opp-200000000 { 1688bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <200000000>; 1698bab661aSEmmanuel Vadot required-opps = <&rpmhpd_opp_low_svs>; 1708bab661aSEmmanuel Vadot }; 1718bab661aSEmmanuel Vadot 1728bab661aSEmmanuel Vadot opp-300000000 { 1738bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <300000000>; 1748bab661aSEmmanuel Vadot required-opps = <&rpmhpd_opp_svs>; 1758bab661aSEmmanuel Vadot }; 1768bab661aSEmmanuel Vadot 1778bab661aSEmmanuel Vadot opp-345000000 { 1788bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <345000000>; 1798bab661aSEmmanuel Vadot required-opps = <&rpmhpd_opp_svs_l1>; 1808bab661aSEmmanuel Vadot }; 1818bab661aSEmmanuel Vadot 1828bab661aSEmmanuel Vadot opp-460000000 { 1838bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <460000000>; 1848bab661aSEmmanuel Vadot required-opps = <&rpmhpd_opp_nom>; 1858bab661aSEmmanuel Vadot }; 1868bab661aSEmmanuel Vadot }; 1878bab661aSEmmanuel Vadot }; 1888bab661aSEmmanuel Vadot 1898bab661aSEmmanuel Vadot dsi@ae94000 { 190cb7aa33aSEmmanuel Vadot compatible = "qcom,sm8250-dsi-ctrl", "qcom,mdss-dsi-ctrl"; 1918bab661aSEmmanuel Vadot reg = <0x0ae94000 0x400>; 1928bab661aSEmmanuel Vadot reg-names = "dsi_ctrl"; 1938bab661aSEmmanuel Vadot 1948bab661aSEmmanuel Vadot interrupt-parent = <&mdss>; 1958bab661aSEmmanuel Vadot interrupts = <4>; 1968bab661aSEmmanuel Vadot 1978bab661aSEmmanuel Vadot clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>, 1988bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>, 1998bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_PCLK0_CLK>, 2008bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_ESC0_CLK>, 2018bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_AHB_CLK>, 2028bab661aSEmmanuel Vadot <&gcc GCC_DISP_HF_AXI_CLK>; 2038bab661aSEmmanuel Vadot clock-names = "byte", 2048bab661aSEmmanuel Vadot "byte_intf", 2058bab661aSEmmanuel Vadot "pixel", 2068bab661aSEmmanuel Vadot "core", 2078bab661aSEmmanuel Vadot "iface", 2088bab661aSEmmanuel Vadot "bus"; 2098bab661aSEmmanuel Vadot 2108bab661aSEmmanuel Vadot assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, 2118bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>; 2128bab661aSEmmanuel Vadot assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>; 2138bab661aSEmmanuel Vadot 2148bab661aSEmmanuel Vadot operating-points-v2 = <&dsi_opp_table>; 215aa1a8ff2SEmmanuel Vadot power-domains = <&rpmhpd RPMHPD_MMCX>; 2168bab661aSEmmanuel Vadot 2178bab661aSEmmanuel Vadot phys = <&dsi0_phy>; 2188bab661aSEmmanuel Vadot phy-names = "dsi"; 2198bab661aSEmmanuel Vadot 2208bab661aSEmmanuel Vadot #address-cells = <1>; 2218bab661aSEmmanuel Vadot #size-cells = <0>; 2228bab661aSEmmanuel Vadot 2238bab661aSEmmanuel Vadot ports { 2248bab661aSEmmanuel Vadot #address-cells = <1>; 2258bab661aSEmmanuel Vadot #size-cells = <0>; 2268bab661aSEmmanuel Vadot 2278bab661aSEmmanuel Vadot port@0 { 2288bab661aSEmmanuel Vadot reg = <0>; 2298bab661aSEmmanuel Vadot dsi0_in: endpoint { 2308bab661aSEmmanuel Vadot remote-endpoint = <&dpu_intf1_out>; 2318bab661aSEmmanuel Vadot }; 2328bab661aSEmmanuel Vadot }; 2338bab661aSEmmanuel Vadot 2348bab661aSEmmanuel Vadot port@1 { 2358bab661aSEmmanuel Vadot reg = <1>; 2368bab661aSEmmanuel Vadot dsi0_out: endpoint { 2378bab661aSEmmanuel Vadot }; 2388bab661aSEmmanuel Vadot }; 2398bab661aSEmmanuel Vadot }; 2408bab661aSEmmanuel Vadot 2418bab661aSEmmanuel Vadot dsi_opp_table: opp-table { 2428bab661aSEmmanuel Vadot compatible = "operating-points-v2"; 2438bab661aSEmmanuel Vadot 2448bab661aSEmmanuel Vadot opp-187500000 { 2458bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <187500000>; 2468bab661aSEmmanuel Vadot required-opps = <&rpmhpd_opp_low_svs>; 2478bab661aSEmmanuel Vadot }; 2488bab661aSEmmanuel Vadot 2498bab661aSEmmanuel Vadot opp-300000000 { 2508bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <300000000>; 2518bab661aSEmmanuel Vadot required-opps = <&rpmhpd_opp_svs>; 2528bab661aSEmmanuel Vadot }; 2538bab661aSEmmanuel Vadot 2548bab661aSEmmanuel Vadot opp-358000000 { 2558bab661aSEmmanuel Vadot opp-hz = /bits/ 64 <358000000>; 2568bab661aSEmmanuel Vadot required-opps = <&rpmhpd_opp_svs_l1>; 2578bab661aSEmmanuel Vadot }; 2588bab661aSEmmanuel Vadot }; 2598bab661aSEmmanuel Vadot }; 2608bab661aSEmmanuel Vadot 2618bab661aSEmmanuel Vadot dsi0_phy: phy@ae94400 { 2628bab661aSEmmanuel Vadot compatible = "qcom,dsi-phy-7nm"; 2638bab661aSEmmanuel Vadot reg = <0x0ae94400 0x200>, 2648bab661aSEmmanuel Vadot <0x0ae94600 0x280>, 2658bab661aSEmmanuel Vadot <0x0ae94900 0x260>; 2668bab661aSEmmanuel Vadot reg-names = "dsi_phy", 2678bab661aSEmmanuel Vadot "dsi_phy_lane", 2688bab661aSEmmanuel Vadot "dsi_pll"; 2698bab661aSEmmanuel Vadot 2708bab661aSEmmanuel Vadot #clock-cells = <1>; 2718bab661aSEmmanuel Vadot #phy-cells = <0>; 2728bab661aSEmmanuel Vadot 2738bab661aSEmmanuel Vadot clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 2748bab661aSEmmanuel Vadot <&rpmhcc RPMH_CXO_CLK>; 2758bab661aSEmmanuel Vadot clock-names = "iface", "ref"; 2768bab661aSEmmanuel Vadot vdds-supply = <&vreg_dsi_phy>; 2778bab661aSEmmanuel Vadot }; 2788bab661aSEmmanuel Vadot 2798bab661aSEmmanuel Vadot dsi@ae96000 { 280cb7aa33aSEmmanuel Vadot compatible = "qcom,sm8250-dsi-ctrl", "qcom,mdss-dsi-ctrl"; 2818bab661aSEmmanuel Vadot reg = <0x0ae96000 0x400>; 2828bab661aSEmmanuel Vadot reg-names = "dsi_ctrl"; 2838bab661aSEmmanuel Vadot 2848bab661aSEmmanuel Vadot interrupt-parent = <&mdss>; 2858bab661aSEmmanuel Vadot interrupts = <5>; 2868bab661aSEmmanuel Vadot 2878bab661aSEmmanuel Vadot clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK>, 2888bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_BYTE1_INTF_CLK>, 2898bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_PCLK1_CLK>, 2908bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_ESC1_CLK>, 2918bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_AHB_CLK>, 2928bab661aSEmmanuel Vadot <&gcc GCC_DISP_HF_AXI_CLK>; 2938bab661aSEmmanuel Vadot clock-names = "byte", 2948bab661aSEmmanuel Vadot "byte_intf", 2958bab661aSEmmanuel Vadot "pixel", 2968bab661aSEmmanuel Vadot "core", 2978bab661aSEmmanuel Vadot "iface", 2988bab661aSEmmanuel Vadot "bus"; 2998bab661aSEmmanuel Vadot 3008bab661aSEmmanuel Vadot assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, 3018bab661aSEmmanuel Vadot <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>; 3028bab661aSEmmanuel Vadot assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>; 3038bab661aSEmmanuel Vadot 3048bab661aSEmmanuel Vadot operating-points-v2 = <&dsi_opp_table>; 305aa1a8ff2SEmmanuel Vadot power-domains = <&rpmhpd RPMHPD_MMCX>; 3068bab661aSEmmanuel Vadot 3078bab661aSEmmanuel Vadot phys = <&dsi1_phy>; 3088bab661aSEmmanuel Vadot phy-names = "dsi"; 3098bab661aSEmmanuel Vadot 3108bab661aSEmmanuel Vadot #address-cells = <1>; 3118bab661aSEmmanuel Vadot #size-cells = <0>; 3128bab661aSEmmanuel Vadot 3138bab661aSEmmanuel Vadot ports { 3148bab661aSEmmanuel Vadot #address-cells = <1>; 3158bab661aSEmmanuel Vadot #size-cells = <0>; 3168bab661aSEmmanuel Vadot 3178bab661aSEmmanuel Vadot port@0 { 3188bab661aSEmmanuel Vadot reg = <0>; 3198bab661aSEmmanuel Vadot dsi1_in: endpoint { 3208bab661aSEmmanuel Vadot remote-endpoint = <&dpu_intf2_out>; 3218bab661aSEmmanuel Vadot }; 3228bab661aSEmmanuel Vadot }; 3238bab661aSEmmanuel Vadot 3248bab661aSEmmanuel Vadot port@1 { 3258bab661aSEmmanuel Vadot reg = <1>; 3268bab661aSEmmanuel Vadot dsi1_out: endpoint { 3278bab661aSEmmanuel Vadot }; 3288bab661aSEmmanuel Vadot }; 3298bab661aSEmmanuel Vadot }; 3308bab661aSEmmanuel Vadot }; 3318bab661aSEmmanuel Vadot 3328bab661aSEmmanuel Vadot dsi1_phy: phy@ae96400 { 3338bab661aSEmmanuel Vadot compatible = "qcom,dsi-phy-7nm"; 3348bab661aSEmmanuel Vadot reg = <0x0ae96400 0x200>, 3358bab661aSEmmanuel Vadot <0x0ae96600 0x280>, 3368bab661aSEmmanuel Vadot <0x0ae96900 0x260>; 3378bab661aSEmmanuel Vadot reg-names = "dsi_phy", 3388bab661aSEmmanuel Vadot "dsi_phy_lane", 3398bab661aSEmmanuel Vadot "dsi_pll"; 3408bab661aSEmmanuel Vadot 3418bab661aSEmmanuel Vadot #clock-cells = <1>; 3428bab661aSEmmanuel Vadot #phy-cells = <0>; 3438bab661aSEmmanuel Vadot 3448bab661aSEmmanuel Vadot clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 3458bab661aSEmmanuel Vadot <&rpmhcc RPMH_CXO_CLK>; 3468bab661aSEmmanuel Vadot clock-names = "iface", "ref"; 3478bab661aSEmmanuel Vadot vdds-supply = <&vreg_dsi_phy>; 3488bab661aSEmmanuel Vadot }; 3498bab661aSEmmanuel Vadot }; 3508bab661aSEmmanuel Vadot... 351