1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/display/msm/qcom,milos-mdss.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm Milos Display MDSS 8 9maintainers: 10 - Luca Weiss <luca.weiss@fairphone.com> 11 12description: 13 Milos MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like 14 DPU display controller, DSI and DP interfaces etc. 15 16$ref: /schemas/display/msm/mdss-common.yaml# 17 18properties: 19 compatible: 20 const: qcom,milos-mdss 21 22 clocks: 23 items: 24 - description: Display AHB 25 - description: Display hf AXI 26 - description: Display core 27 28 iommus: 29 maxItems: 1 30 31 interconnects: 32 items: 33 - description: Interconnect path from mdp0 port to the data bus 34 - description: Interconnect path from CPU to the reg bus 35 36 interconnect-names: 37 items: 38 - const: mdp0-mem 39 - const: cpu-cfg 40 41patternProperties: 42 "^display-controller@[0-9a-f]+$": 43 type: object 44 additionalProperties: true 45 properties: 46 compatible: 47 const: qcom,milos-dpu 48 49 "^displayport-controller@[0-9a-f]+$": 50 type: object 51 additionalProperties: true 52 properties: 53 compatible: 54 const: qcom,milos-dp 55 56 "^dsi@[0-9a-f]+$": 57 type: object 58 additionalProperties: true 59 properties: 60 compatible: 61 contains: 62 const: qcom,milos-dsi-ctrl 63 64 "^phy@[0-9a-f]+$": 65 type: object 66 additionalProperties: true 67 properties: 68 compatible: 69 const: qcom,milos-dsi-phy-4nm 70 71required: 72 - compatible 73 74unevaluatedProperties: false 75 76examples: 77 - | 78 #include <dt-bindings/clock/qcom,dsi-phy-28nm.h> 79 #include <dt-bindings/clock/qcom,milos-dispcc.h> 80 #include <dt-bindings/clock/qcom,milos-gcc.h> 81 #include <dt-bindings/clock/qcom,rpmh.h> 82 #include <dt-bindings/interconnect/qcom,icc.h> 83 #include <dt-bindings/interconnect/qcom,milos-rpmh.h> 84 #include <dt-bindings/interrupt-controller/arm-gic.h> 85 #include <dt-bindings/power/qcom,rpmhpd.h> 86 87 display-subsystem@ae00000 { 88 compatible = "qcom,milos-mdss"; 89 reg = <0x0ae00000 0x1000>; 90 reg-names = "mdss"; 91 92 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH 0>; 93 94 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 95 <&gcc GCC_DISP_HF_AXI_CLK>, 96 <&dispcc DISP_CC_MDSS_MDP_CLK>; 97 98 resets = <&dispcc DISP_CC_MDSS_CORE_BCR>; 99 100 interconnects = <&mmss_noc MASTER_MDP QCOM_ICC_TAG_ALWAYS 101 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, 102 <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY 103 &cnoc_main SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>; 104 interconnect-names = "mdp0-mem", 105 "cpu-cfg"; 106 107 power-domains = <&dispcc DISP_CC_MDSS_CORE_GDSC>; 108 109 iommus = <&apps_smmu 0x1c00 0x2>; 110 111 interrupt-controller; 112 #interrupt-cells = <1>; 113 114 #address-cells = <1>; 115 #size-cells = <1>; 116 ranges; 117 118 display-controller@ae01000 { 119 compatible = "qcom,milos-dpu"; 120 reg = <0x0ae01000 0x8f000>, 121 <0x0aeb0000 0x3000>; 122 reg-names = "mdp", 123 "vbif"; 124 125 interrupts-extended = <&mdss 0>; 126 127 clocks = <&gcc GCC_DISP_HF_AXI_CLK>, 128 <&dispcc DISP_CC_MDSS_AHB_CLK>, 129 <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>, 130 <&dispcc DISP_CC_MDSS_MDP_CLK>, 131 <&dispcc DISP_CC_MDSS_VSYNC_CLK>; 132 clock-names = "nrt_bus", 133 "iface", 134 "lut", 135 "core", 136 "vsync"; 137 138 assigned-clocks = <&dispcc DISP_CC_MDSS_VSYNC_CLK>; 139 assigned-clock-rates = <19200000>; 140 141 operating-points-v2 = <&mdp_opp_table>; 142 143 power-domains = <&rpmhpd RPMHPD_CX>; 144 145 ports { 146 #address-cells = <1>; 147 #size-cells = <0>; 148 149 port@0 { 150 reg = <0>; 151 152 dpu_intf1_out: endpoint { 153 remote-endpoint = <&mdss_dsi0_in>; 154 }; 155 }; 156 }; 157 158 mdp_opp_table: opp-table { 159 compatible = "operating-points-v2"; 160 161 opp-200000000 { 162 opp-hz = /bits/ 64 <200000000>; 163 required-opps = <&rpmhpd_opp_low_svs>; 164 }; 165 166 opp-342000000 { 167 opp-hz = /bits/ 64 <342000000>; 168 required-opps = <&rpmhpd_opp_svs>; 169 }; 170 171 opp-402000000 { 172 opp-hz = /bits/ 64 <402000000>; 173 required-opps = <&rpmhpd_opp_svs_l1>; 174 }; 175 176 opp-535000000 { 177 opp-hz = /bits/ 64 <535000000>; 178 required-opps = <&rpmhpd_opp_nom>; 179 }; 180 181 opp-600000000 { 182 opp-hz = /bits/ 64 <600000000>; 183 required-opps = <&rpmhpd_opp_nom_l1>; 184 }; 185 186 opp-630000000 { 187 opp-hz = /bits/ 64 <630000000>; 188 required-opps = <&rpmhpd_opp_turbo>; 189 }; 190 }; 191 }; 192 193 dsi@ae94000 { 194 compatible = "qcom,milos-dsi-ctrl", "qcom,mdss-dsi-ctrl"; 195 reg = <0x0ae94000 0x1000>; 196 reg-names = "dsi_ctrl"; 197 198 interrupts-extended = <&mdss 4>; 199 200 clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>, 201 <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>, 202 <&dispcc DISP_CC_MDSS_PCLK0_CLK>, 203 <&dispcc DISP_CC_MDSS_ESC0_CLK>, 204 <&dispcc DISP_CC_MDSS_AHB_CLK>, 205 <&gcc GCC_DISP_HF_AXI_CLK>; 206 clock-names = "byte", 207 "byte_intf", 208 "pixel", 209 "core", 210 "iface", 211 "bus"; 212 213 assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, 214 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>; 215 assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>, 216 <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>; 217 218 operating-points-v2 = <&mdss_dsi_opp_table>; 219 220 power-domains = <&rpmhpd RPMHPD_CX>; 221 222 phys = <&mdss_dsi0_phy>; 223 phy-names = "dsi"; 224 225 #address-cells = <1>; 226 #size-cells = <0>; 227 228 ports { 229 #address-cells = <1>; 230 #size-cells = <0>; 231 232 port@0 { 233 reg = <0>; 234 235 mdss_dsi0_in: endpoint { 236 remote-endpoint = <&dpu_intf1_out>; 237 }; 238 }; 239 240 port@1 { 241 reg = <1>; 242 243 mdss_dsi0_out: endpoint { 244 }; 245 }; 246 }; 247 248 mdss_dsi_opp_table: opp-table { 249 compatible = "operating-points-v2"; 250 251 opp-187500000 { 252 opp-hz = /bits/ 64 <187500000>; 253 required-opps = <&rpmhpd_opp_low_svs>; 254 }; 255 256 opp-300000000 { 257 opp-hz = /bits/ 64 <300000000>; 258 required-opps = <&rpmhpd_opp_svs>; 259 }; 260 261 opp-358000000 { 262 opp-hz = /bits/ 64 <358000000>; 263 required-opps = <&rpmhpd_opp_svs_l1>; 264 }; 265 }; 266 }; 267 268 mdss_dsi0_phy: phy@ae95000 { 269 compatible = "qcom,milos-dsi-phy-4nm"; 270 reg = <0x0ae95000 0x200>, 271 <0x0ae95200 0x300>, 272 <0x0ae95500 0x400>; 273 reg-names = "dsi_phy", 274 "dsi_phy_lane", 275 "dsi_pll"; 276 277 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 278 <&rpmhcc RPMH_CXO_CLK>; 279 clock-names = "iface", 280 "ref"; 281 282 #clock-cells = <1>; 283 #phy-cells = <0>; 284 }; 285 }; 286... 287