1*440b075bSKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 24e78a58aSDmitry Baryshkov%YAML 1.2 34e78a58aSDmitry Baryshkov--- 44e78a58aSDmitry Baryshkov$id: http://devicetree.org/schemas/display/msm/qcom,sm8250-mdss.yaml# 54e78a58aSDmitry Baryshkov$schema: http://devicetree.org/meta-schemas/core.yaml# 64e78a58aSDmitry Baryshkov 74e78a58aSDmitry Baryshkovtitle: Qualcomm SM8250 Display MDSS 84e78a58aSDmitry Baryshkov 94e78a58aSDmitry Baryshkovmaintainers: 104e78a58aSDmitry Baryshkov - Dmitry Baryshkov <dmitry.baryshkov@linaro.org> 114e78a58aSDmitry Baryshkov 124e78a58aSDmitry Baryshkovdescription: 134e78a58aSDmitry Baryshkov Device tree bindings for MSM Mobile Display Subsystem(MDSS) that encapsulates 144e78a58aSDmitry Baryshkov sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree 154e78a58aSDmitry Baryshkov bindings of MDSS are mentioned for SM8250 target. 164e78a58aSDmitry Baryshkov 174e78a58aSDmitry Baryshkov$ref: /schemas/display/msm/mdss-common.yaml# 184e78a58aSDmitry Baryshkov 194e78a58aSDmitry Baryshkovproperties: 204e78a58aSDmitry Baryshkov compatible: 217ad65866SKrzysztof Kozlowski const: qcom,sm8250-mdss 224e78a58aSDmitry Baryshkov 234e78a58aSDmitry Baryshkov clocks: 244e78a58aSDmitry Baryshkov items: 254e78a58aSDmitry Baryshkov - description: Display AHB clock from gcc 264e78a58aSDmitry Baryshkov - description: Display hf axi clock 274e78a58aSDmitry Baryshkov - description: Display sf axi clock 284e78a58aSDmitry Baryshkov - description: Display core clock 294e78a58aSDmitry Baryshkov 304e78a58aSDmitry Baryshkov clock-names: 314e78a58aSDmitry Baryshkov items: 324e78a58aSDmitry Baryshkov - const: iface 334e78a58aSDmitry Baryshkov - const: bus 344e78a58aSDmitry Baryshkov - const: nrt_bus 354e78a58aSDmitry Baryshkov - const: core 364e78a58aSDmitry Baryshkov 374e78a58aSDmitry Baryshkov iommus: 384e78a58aSDmitry Baryshkov maxItems: 1 394e78a58aSDmitry Baryshkov 404e78a58aSDmitry Baryshkov interconnects: 414e78a58aSDmitry Baryshkov maxItems: 2 424e78a58aSDmitry Baryshkov 434e78a58aSDmitry Baryshkov interconnect-names: 444e78a58aSDmitry Baryshkov maxItems: 2 454e78a58aSDmitry Baryshkov 464e78a58aSDmitry BaryshkovpatternProperties: 474e78a58aSDmitry Baryshkov "^display-controller@[0-9a-f]+$": 484e78a58aSDmitry Baryshkov type: object 494e78a58aSDmitry Baryshkov properties: 504e78a58aSDmitry Baryshkov compatible: 514e78a58aSDmitry Baryshkov const: qcom,sm8250-dpu 524e78a58aSDmitry Baryshkov 534e78a58aSDmitry Baryshkov "^dsi@[0-9a-f]+$": 544e78a58aSDmitry Baryshkov type: object 554e78a58aSDmitry Baryshkov properties: 564e78a58aSDmitry Baryshkov compatible: 570c0f65c6SBryan O'Donoghue items: 580c0f65c6SBryan O'Donoghue - const: qcom,sm8250-dsi-ctrl 590c0f65c6SBryan O'Donoghue - const: qcom,mdss-dsi-ctrl 604e78a58aSDmitry Baryshkov 614e78a58aSDmitry Baryshkov "^phy@[0-9a-f]+$": 624e78a58aSDmitry Baryshkov type: object 634e78a58aSDmitry Baryshkov properties: 644e78a58aSDmitry Baryshkov compatible: 654e78a58aSDmitry Baryshkov const: qcom,dsi-phy-7nm 664e78a58aSDmitry Baryshkov 67e96150a6SDmitry Baryshkovrequired: 68e96150a6SDmitry Baryshkov - compatible 69e96150a6SDmitry Baryshkov 704e78a58aSDmitry BaryshkovunevaluatedProperties: false 714e78a58aSDmitry Baryshkov 724e78a58aSDmitry Baryshkovexamples: 734e78a58aSDmitry Baryshkov - | 744e78a58aSDmitry Baryshkov #include <dt-bindings/clock/qcom,dispcc-sm8250.h> 754e78a58aSDmitry Baryshkov #include <dt-bindings/clock/qcom,gcc-sm8250.h> 764e78a58aSDmitry Baryshkov #include <dt-bindings/clock/qcom,rpmh.h> 774e78a58aSDmitry Baryshkov #include <dt-bindings/interrupt-controller/arm-gic.h> 784e78a58aSDmitry Baryshkov #include <dt-bindings/interconnect/qcom,sm8250.h> 79014f3272SRohit Agarwal #include <dt-bindings/power/qcom,rpmhpd.h> 804e78a58aSDmitry Baryshkov 814e78a58aSDmitry Baryshkov display-subsystem@ae00000 { 824e78a58aSDmitry Baryshkov compatible = "qcom,sm8250-mdss"; 834e78a58aSDmitry Baryshkov reg = <0x0ae00000 0x1000>; 844e78a58aSDmitry Baryshkov reg-names = "mdss"; 854e78a58aSDmitry Baryshkov 864e78a58aSDmitry Baryshkov interconnects = <&mmss_noc MASTER_MDP_PORT0 &mc_virt SLAVE_EBI_CH0>, 874e78a58aSDmitry Baryshkov <&mmss_noc MASTER_MDP_PORT1 &mc_virt SLAVE_EBI_CH0>; 884e78a58aSDmitry Baryshkov interconnect-names = "mdp0-mem", "mdp1-mem"; 894e78a58aSDmitry Baryshkov 904e78a58aSDmitry Baryshkov power-domains = <&dispcc MDSS_GDSC>; 914e78a58aSDmitry Baryshkov 924e78a58aSDmitry Baryshkov clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 934e78a58aSDmitry Baryshkov <&gcc GCC_DISP_HF_AXI_CLK>, 944e78a58aSDmitry Baryshkov <&gcc GCC_DISP_SF_AXI_CLK>, 954e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_MDP_CLK>; 964e78a58aSDmitry Baryshkov clock-names = "iface", "bus", "nrt_bus", "core"; 974e78a58aSDmitry Baryshkov 984e78a58aSDmitry Baryshkov interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 994e78a58aSDmitry Baryshkov interrupt-controller; 1004e78a58aSDmitry Baryshkov #interrupt-cells = <1>; 1014e78a58aSDmitry Baryshkov 1024e78a58aSDmitry Baryshkov iommus = <&apps_smmu 0x820 0x402>; 1034e78a58aSDmitry Baryshkov 1044e78a58aSDmitry Baryshkov #address-cells = <1>; 1054e78a58aSDmitry Baryshkov #size-cells = <1>; 1064e78a58aSDmitry Baryshkov ranges; 1074e78a58aSDmitry Baryshkov 1084e78a58aSDmitry Baryshkov display-controller@ae01000 { 1094e78a58aSDmitry Baryshkov compatible = "qcom,sm8250-dpu"; 1104e78a58aSDmitry Baryshkov reg = <0x0ae01000 0x8f000>, 1114e78a58aSDmitry Baryshkov <0x0aeb0000 0x2008>; 1124e78a58aSDmitry Baryshkov reg-names = "mdp", "vbif"; 1134e78a58aSDmitry Baryshkov 1144e78a58aSDmitry Baryshkov clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 1154e78a58aSDmitry Baryshkov <&gcc GCC_DISP_HF_AXI_CLK>, 1164e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_MDP_CLK>, 1174e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_VSYNC_CLK>; 1184e78a58aSDmitry Baryshkov clock-names = "iface", "bus", "core", "vsync"; 1194e78a58aSDmitry Baryshkov 1204e78a58aSDmitry Baryshkov assigned-clocks = <&dispcc DISP_CC_MDSS_VSYNC_CLK>; 1214e78a58aSDmitry Baryshkov assigned-clock-rates = <19200000>; 1224e78a58aSDmitry Baryshkov 1234e78a58aSDmitry Baryshkov operating-points-v2 = <&mdp_opp_table>; 124014f3272SRohit Agarwal power-domains = <&rpmhpd RPMHPD_MMCX>; 1254e78a58aSDmitry Baryshkov 1264e78a58aSDmitry Baryshkov interrupt-parent = <&mdss>; 1274e78a58aSDmitry Baryshkov interrupts = <0>; 1284e78a58aSDmitry Baryshkov 1294e78a58aSDmitry Baryshkov ports { 1304e78a58aSDmitry Baryshkov #address-cells = <1>; 1314e78a58aSDmitry Baryshkov #size-cells = <0>; 1324e78a58aSDmitry Baryshkov 1334e78a58aSDmitry Baryshkov port@0 { 1344e78a58aSDmitry Baryshkov reg = <0>; 1354e78a58aSDmitry Baryshkov dpu_intf1_out: endpoint { 1364e78a58aSDmitry Baryshkov remote-endpoint = <&dsi0_in>; 1374e78a58aSDmitry Baryshkov }; 1384e78a58aSDmitry Baryshkov }; 1394e78a58aSDmitry Baryshkov 1404e78a58aSDmitry Baryshkov port@1 { 1414e78a58aSDmitry Baryshkov reg = <1>; 1424e78a58aSDmitry Baryshkov dpu_intf2_out: endpoint { 1434e78a58aSDmitry Baryshkov remote-endpoint = <&dsi1_in>; 1444e78a58aSDmitry Baryshkov }; 1454e78a58aSDmitry Baryshkov }; 1464e78a58aSDmitry Baryshkov }; 1474e78a58aSDmitry Baryshkov 1484e78a58aSDmitry Baryshkov mdp_opp_table: opp-table { 1494e78a58aSDmitry Baryshkov compatible = "operating-points-v2"; 1504e78a58aSDmitry Baryshkov 1514e78a58aSDmitry Baryshkov opp-200000000 { 1524e78a58aSDmitry Baryshkov opp-hz = /bits/ 64 <200000000>; 1534e78a58aSDmitry Baryshkov required-opps = <&rpmhpd_opp_low_svs>; 1544e78a58aSDmitry Baryshkov }; 1554e78a58aSDmitry Baryshkov 1564e78a58aSDmitry Baryshkov opp-300000000 { 1574e78a58aSDmitry Baryshkov opp-hz = /bits/ 64 <300000000>; 1584e78a58aSDmitry Baryshkov required-opps = <&rpmhpd_opp_svs>; 1594e78a58aSDmitry Baryshkov }; 1604e78a58aSDmitry Baryshkov 1614e78a58aSDmitry Baryshkov opp-345000000 { 1624e78a58aSDmitry Baryshkov opp-hz = /bits/ 64 <345000000>; 1634e78a58aSDmitry Baryshkov required-opps = <&rpmhpd_opp_svs_l1>; 1644e78a58aSDmitry Baryshkov }; 1654e78a58aSDmitry Baryshkov 1664e78a58aSDmitry Baryshkov opp-460000000 { 1674e78a58aSDmitry Baryshkov opp-hz = /bits/ 64 <460000000>; 1684e78a58aSDmitry Baryshkov required-opps = <&rpmhpd_opp_nom>; 1694e78a58aSDmitry Baryshkov }; 1704e78a58aSDmitry Baryshkov }; 1714e78a58aSDmitry Baryshkov }; 1724e78a58aSDmitry Baryshkov 1734e78a58aSDmitry Baryshkov dsi@ae94000 { 1740c0f65c6SBryan O'Donoghue compatible = "qcom,sm8250-dsi-ctrl", "qcom,mdss-dsi-ctrl"; 1754e78a58aSDmitry Baryshkov reg = <0x0ae94000 0x400>; 1764e78a58aSDmitry Baryshkov reg-names = "dsi_ctrl"; 1774e78a58aSDmitry Baryshkov 1784e78a58aSDmitry Baryshkov interrupt-parent = <&mdss>; 1794e78a58aSDmitry Baryshkov interrupts = <4>; 1804e78a58aSDmitry Baryshkov 1814e78a58aSDmitry Baryshkov clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>, 1824e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>, 1834e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_PCLK0_CLK>, 1844e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_ESC0_CLK>, 1854e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_AHB_CLK>, 1864e78a58aSDmitry Baryshkov <&gcc GCC_DISP_HF_AXI_CLK>; 1874e78a58aSDmitry Baryshkov clock-names = "byte", 1884e78a58aSDmitry Baryshkov "byte_intf", 1894e78a58aSDmitry Baryshkov "pixel", 1904e78a58aSDmitry Baryshkov "core", 1914e78a58aSDmitry Baryshkov "iface", 1924e78a58aSDmitry Baryshkov "bus"; 1934e78a58aSDmitry Baryshkov 1944e78a58aSDmitry Baryshkov assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, 1954e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>; 1964e78a58aSDmitry Baryshkov assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>; 1974e78a58aSDmitry Baryshkov 1984e78a58aSDmitry Baryshkov operating-points-v2 = <&dsi_opp_table>; 199014f3272SRohit Agarwal power-domains = <&rpmhpd RPMHPD_MMCX>; 2004e78a58aSDmitry Baryshkov 2014e78a58aSDmitry Baryshkov phys = <&dsi0_phy>; 2024e78a58aSDmitry Baryshkov phy-names = "dsi"; 2034e78a58aSDmitry Baryshkov 2044e78a58aSDmitry Baryshkov #address-cells = <1>; 2054e78a58aSDmitry Baryshkov #size-cells = <0>; 2064e78a58aSDmitry Baryshkov 2074e78a58aSDmitry Baryshkov ports { 2084e78a58aSDmitry Baryshkov #address-cells = <1>; 2094e78a58aSDmitry Baryshkov #size-cells = <0>; 2104e78a58aSDmitry Baryshkov 2114e78a58aSDmitry Baryshkov port@0 { 2124e78a58aSDmitry Baryshkov reg = <0>; 2134e78a58aSDmitry Baryshkov dsi0_in: endpoint { 2144e78a58aSDmitry Baryshkov remote-endpoint = <&dpu_intf1_out>; 2154e78a58aSDmitry Baryshkov }; 2164e78a58aSDmitry Baryshkov }; 2174e78a58aSDmitry Baryshkov 2184e78a58aSDmitry Baryshkov port@1 { 2194e78a58aSDmitry Baryshkov reg = <1>; 2204e78a58aSDmitry Baryshkov dsi0_out: endpoint { 2214e78a58aSDmitry Baryshkov }; 2224e78a58aSDmitry Baryshkov }; 2234e78a58aSDmitry Baryshkov }; 2244e78a58aSDmitry Baryshkov 2254e78a58aSDmitry Baryshkov dsi_opp_table: opp-table { 2264e78a58aSDmitry Baryshkov compatible = "operating-points-v2"; 2274e78a58aSDmitry Baryshkov 2284e78a58aSDmitry Baryshkov opp-187500000 { 2294e78a58aSDmitry Baryshkov opp-hz = /bits/ 64 <187500000>; 2304e78a58aSDmitry Baryshkov required-opps = <&rpmhpd_opp_low_svs>; 2314e78a58aSDmitry Baryshkov }; 2324e78a58aSDmitry Baryshkov 2334e78a58aSDmitry Baryshkov opp-300000000 { 2344e78a58aSDmitry Baryshkov opp-hz = /bits/ 64 <300000000>; 2354e78a58aSDmitry Baryshkov required-opps = <&rpmhpd_opp_svs>; 2364e78a58aSDmitry Baryshkov }; 2374e78a58aSDmitry Baryshkov 2384e78a58aSDmitry Baryshkov opp-358000000 { 2394e78a58aSDmitry Baryshkov opp-hz = /bits/ 64 <358000000>; 2404e78a58aSDmitry Baryshkov required-opps = <&rpmhpd_opp_svs_l1>; 2414e78a58aSDmitry Baryshkov }; 2424e78a58aSDmitry Baryshkov }; 2434e78a58aSDmitry Baryshkov }; 2444e78a58aSDmitry Baryshkov 2454e78a58aSDmitry Baryshkov dsi0_phy: phy@ae94400 { 2464e78a58aSDmitry Baryshkov compatible = "qcom,dsi-phy-7nm"; 2474e78a58aSDmitry Baryshkov reg = <0x0ae94400 0x200>, 2484e78a58aSDmitry Baryshkov <0x0ae94600 0x280>, 2494e78a58aSDmitry Baryshkov <0x0ae94900 0x260>; 2504e78a58aSDmitry Baryshkov reg-names = "dsi_phy", 2514e78a58aSDmitry Baryshkov "dsi_phy_lane", 2524e78a58aSDmitry Baryshkov "dsi_pll"; 2534e78a58aSDmitry Baryshkov 2544e78a58aSDmitry Baryshkov #clock-cells = <1>; 2554e78a58aSDmitry Baryshkov #phy-cells = <0>; 2564e78a58aSDmitry Baryshkov 2574e78a58aSDmitry Baryshkov clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 2584e78a58aSDmitry Baryshkov <&rpmhcc RPMH_CXO_CLK>; 2594e78a58aSDmitry Baryshkov clock-names = "iface", "ref"; 2604e78a58aSDmitry Baryshkov vdds-supply = <&vreg_dsi_phy>; 2614e78a58aSDmitry Baryshkov }; 2624e78a58aSDmitry Baryshkov 2634e78a58aSDmitry Baryshkov dsi@ae96000 { 2640c0f65c6SBryan O'Donoghue compatible = "qcom,sm8250-dsi-ctrl", "qcom,mdss-dsi-ctrl"; 2654e78a58aSDmitry Baryshkov reg = <0x0ae96000 0x400>; 2664e78a58aSDmitry Baryshkov reg-names = "dsi_ctrl"; 2674e78a58aSDmitry Baryshkov 2684e78a58aSDmitry Baryshkov interrupt-parent = <&mdss>; 2694e78a58aSDmitry Baryshkov interrupts = <5>; 2704e78a58aSDmitry Baryshkov 2714e78a58aSDmitry Baryshkov clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK>, 2724e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_BYTE1_INTF_CLK>, 2734e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_PCLK1_CLK>, 2744e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_ESC1_CLK>, 2754e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_AHB_CLK>, 2764e78a58aSDmitry Baryshkov <&gcc GCC_DISP_HF_AXI_CLK>; 2774e78a58aSDmitry Baryshkov clock-names = "byte", 2784e78a58aSDmitry Baryshkov "byte_intf", 2794e78a58aSDmitry Baryshkov "pixel", 2804e78a58aSDmitry Baryshkov "core", 2814e78a58aSDmitry Baryshkov "iface", 2824e78a58aSDmitry Baryshkov "bus"; 2834e78a58aSDmitry Baryshkov 2844e78a58aSDmitry Baryshkov assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, 2854e78a58aSDmitry Baryshkov <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>; 2864e78a58aSDmitry Baryshkov assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>; 2874e78a58aSDmitry Baryshkov 2884e78a58aSDmitry Baryshkov operating-points-v2 = <&dsi_opp_table>; 289014f3272SRohit Agarwal power-domains = <&rpmhpd RPMHPD_MMCX>; 2904e78a58aSDmitry Baryshkov 2914e78a58aSDmitry Baryshkov phys = <&dsi1_phy>; 2924e78a58aSDmitry Baryshkov phy-names = "dsi"; 2934e78a58aSDmitry Baryshkov 2944e78a58aSDmitry Baryshkov #address-cells = <1>; 2954e78a58aSDmitry Baryshkov #size-cells = <0>; 2964e78a58aSDmitry Baryshkov 2974e78a58aSDmitry Baryshkov ports { 2984e78a58aSDmitry Baryshkov #address-cells = <1>; 2994e78a58aSDmitry Baryshkov #size-cells = <0>; 3004e78a58aSDmitry Baryshkov 3014e78a58aSDmitry Baryshkov port@0 { 3024e78a58aSDmitry Baryshkov reg = <0>; 3034e78a58aSDmitry Baryshkov dsi1_in: endpoint { 3044e78a58aSDmitry Baryshkov remote-endpoint = <&dpu_intf2_out>; 3054e78a58aSDmitry Baryshkov }; 3064e78a58aSDmitry Baryshkov }; 3074e78a58aSDmitry Baryshkov 3084e78a58aSDmitry Baryshkov port@1 { 3094e78a58aSDmitry Baryshkov reg = <1>; 3104e78a58aSDmitry Baryshkov dsi1_out: endpoint { 3114e78a58aSDmitry Baryshkov }; 3124e78a58aSDmitry Baryshkov }; 3134e78a58aSDmitry Baryshkov }; 3144e78a58aSDmitry Baryshkov }; 3154e78a58aSDmitry Baryshkov 3164e78a58aSDmitry Baryshkov dsi1_phy: phy@ae96400 { 3174e78a58aSDmitry Baryshkov compatible = "qcom,dsi-phy-7nm"; 3184e78a58aSDmitry Baryshkov reg = <0x0ae96400 0x200>, 3194e78a58aSDmitry Baryshkov <0x0ae96600 0x280>, 3204e78a58aSDmitry Baryshkov <0x0ae96900 0x260>; 3214e78a58aSDmitry Baryshkov reg-names = "dsi_phy", 3224e78a58aSDmitry Baryshkov "dsi_phy_lane", 3234e78a58aSDmitry Baryshkov "dsi_pll"; 3244e78a58aSDmitry Baryshkov 3254e78a58aSDmitry Baryshkov #clock-cells = <1>; 3264e78a58aSDmitry Baryshkov #phy-cells = <0>; 3274e78a58aSDmitry Baryshkov 3284e78a58aSDmitry Baryshkov clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 3294e78a58aSDmitry Baryshkov <&rpmhcc RPMH_CXO_CLK>; 3304e78a58aSDmitry Baryshkov clock-names = "iface", "ref"; 3314e78a58aSDmitry Baryshkov vdds-supply = <&vreg_dsi_phy>; 3324e78a58aSDmitry Baryshkov }; 3334e78a58aSDmitry Baryshkov }; 3344e78a58aSDmitry Baryshkov... 335