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/dsi-controller-main.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm Display DSI controller 8 9maintainers: 10 - Krishna Manikandan <quic_mkrishn@quicinc.com> 11 12properties: 13 compatible: 14 oneOf: 15 - items: 16 - enum: 17 - qcom,apq8064-dsi-ctrl 18 - qcom,msm8916-dsi-ctrl 19 - qcom,msm8953-dsi-ctrl 20 - qcom,msm8974-dsi-ctrl 21 - qcom,msm8996-dsi-ctrl 22 - qcom,msm8998-dsi-ctrl 23 - qcom,qcm2290-dsi-ctrl 24 - qcom,sc7180-dsi-ctrl 25 - qcom,sc7280-dsi-ctrl 26 - qcom,sdm660-dsi-ctrl 27 - qcom,sdm845-dsi-ctrl 28 - qcom,sm6115-dsi-ctrl 29 - qcom,sm8150-dsi-ctrl 30 - qcom,sm8250-dsi-ctrl 31 - qcom,sm8350-dsi-ctrl 32 - qcom,sm8450-dsi-ctrl 33 - qcom,sm8550-dsi-ctrl 34 - const: qcom,mdss-dsi-ctrl 35 - enum: 36 - qcom,dsi-ctrl-6g-qcm2290 37 - qcom,mdss-dsi-ctrl # This should always come with an SoC-specific compatible 38 deprecated: true 39 40 reg: 41 maxItems: 1 42 43 reg-names: 44 const: dsi_ctrl 45 46 interrupts: 47 maxItems: 1 48 49 clocks: 50 description: | 51 Several clocks are used, depending on the variant. Typical ones are:: 52 - bus:: Display AHB clock. 53 - byte:: Display byte clock. 54 - byte_intf:: Display byte interface clock. 55 - core:: Display core clock. 56 - core_mss:: Core MultiMedia SubSystem clock. 57 - iface:: Display AXI clock. 58 - mdp_core:: MDP Core clock. 59 - mnoc:: MNOC clock 60 - pixel:: Display pixel clock. 61 minItems: 3 62 maxItems: 9 63 64 clock-names: 65 minItems: 3 66 maxItems: 9 67 68 phys: 69 maxItems: 1 70 71 phy-names: 72 deprecated: true 73 const: dsi 74 75 syscon-sfpb: 76 description: A phandle to mmss_sfpb syscon node (only for DSIv2). 77 $ref: /schemas/types.yaml#/definitions/phandle 78 79 qcom,dual-dsi-mode: 80 type: boolean 81 description: | 82 Indicates if the DSI controller is driving a panel which needs 83 2 DSI links. 84 85 assigned-clocks: 86 minItems: 2 87 maxItems: 4 88 description: | 89 Parents of "byte" and "pixel" for the given platform. 90 For DSIv2 platforms this should contain "byte", "esc", "src" and 91 "pixel_src" clocks. 92 93 assigned-clock-parents: 94 minItems: 2 95 maxItems: 4 96 description: | 97 The Byte clock and Pixel clock PLL outputs provided by a DSI PHY block. 98 99 power-domains: 100 maxItems: 1 101 102 operating-points-v2: true 103 104 opp-table: 105 type: object 106 107 ports: 108 $ref: /schemas/graph.yaml#/properties/ports 109 description: | 110 Contains DSI controller input and output ports as children, each 111 containing one endpoint subnode. 112 113 properties: 114 port@0: 115 $ref: /schemas/graph.yaml#/$defs/port-base 116 unevaluatedProperties: false 117 description: | 118 Input endpoints of the controller. 119 properties: 120 endpoint: 121 $ref: /schemas/media/video-interfaces.yaml# 122 unevaluatedProperties: false 123 properties: 124 data-lanes: 125 maxItems: 4 126 minItems: 1 127 items: 128 enum: [ 0, 1, 2, 3 ] 129 130 port@1: 131 $ref: /schemas/graph.yaml#/$defs/port-base 132 unevaluatedProperties: false 133 description: | 134 Output endpoints of the controller. 135 properties: 136 endpoint: 137 $ref: /schemas/media/video-interfaces.yaml# 138 unevaluatedProperties: false 139 properties: 140 data-lanes: 141 maxItems: 4 142 minItems: 1 143 items: 144 enum: [ 0, 1, 2, 3 ] 145 146 required: 147 - port@0 148 - port@1 149 150 avdd-supply: 151 description: 152 Phandle to vdd regulator device node 153 154 vcca-supply: 155 description: 156 Phandle to vdd regulator device node 157 158 vdd-supply: 159 description: 160 VDD regulator 161 162 vddio-supply: 163 description: 164 VDD-IO regulator 165 166 vdda-supply: 167 description: 168 VDDA regulator 169 170required: 171 - compatible 172 - reg 173 - reg-names 174 - interrupts 175 - clocks 176 - clock-names 177 - phys 178 - assigned-clocks 179 - assigned-clock-parents 180 - ports 181 182allOf: 183 - $ref: ../dsi-controller.yaml# 184 - if: 185 properties: 186 compatible: 187 contains: 188 enum: 189 - qcom,apq8064-dsi-ctrl 190 then: 191 properties: 192 clocks: 193 maxItems: 7 194 clock-names: 195 items: 196 - const: iface 197 - const: bus 198 - const: core_mmss 199 - const: src 200 - const: byte 201 - const: pixel 202 - const: core 203 204 - if: 205 properties: 206 compatible: 207 contains: 208 enum: 209 - qcom,msm8916-dsi-ctrl 210 then: 211 properties: 212 clocks: 213 maxItems: 6 214 clock-names: 215 items: 216 - const: mdp_core 217 - const: iface 218 - const: bus 219 - const: byte 220 - const: pixel 221 - const: core 222 223 - if: 224 properties: 225 compatible: 226 contains: 227 enum: 228 - qcom,msm8953-dsi-ctrl 229 then: 230 properties: 231 clocks: 232 maxItems: 6 233 clock-names: 234 items: 235 - const: mdp_core 236 - const: iface 237 - const: bus 238 - const: byte 239 - const: pixel 240 - const: core 241 242 - if: 243 properties: 244 compatible: 245 contains: 246 enum: 247 - qcom,msm8974-dsi-ctrl 248 then: 249 properties: 250 clocks: 251 maxItems: 7 252 clock-names: 253 items: 254 - const: mdp_core 255 - const: iface 256 - const: bus 257 - const: byte 258 - const: pixel 259 - const: core 260 - const: core_mmss 261 262 - if: 263 properties: 264 compatible: 265 contains: 266 enum: 267 - qcom,msm8996-dsi-ctrl 268 then: 269 properties: 270 clocks: 271 maxItems: 7 272 clock-names: 273 items: 274 - const: mdp_core 275 - const: byte 276 - const: iface 277 - const: bus 278 - const: core_mmss 279 - const: pixel 280 - const: core 281 282 - if: 283 properties: 284 compatible: 285 contains: 286 enum: 287 - qcom,msm8998-dsi-ctrl 288 then: 289 properties: 290 clocks: 291 maxItems: 6 292 clock-names: 293 items: 294 - const: byte 295 - const: byte_intf 296 - const: pixel 297 - const: core 298 - const: iface 299 - const: bus 300 301 - if: 302 properties: 303 compatible: 304 contains: 305 enum: 306 - qcom,sc7180-dsi-ctrl 307 - qcom,sc7280-dsi-ctrl 308 - qcom,sm8150-dsi-ctrl 309 - qcom,sm8250-dsi-ctrl 310 - qcom,sm8350-dsi-ctrl 311 - qcom,sm8450-dsi-ctrl 312 - qcom,sm8550-dsi-ctrl 313 then: 314 properties: 315 clocks: 316 maxItems: 6 317 clock-names: 318 items: 319 - const: byte 320 - const: byte_intf 321 - const: pixel 322 - const: core 323 - const: iface 324 - const: bus 325 326 - if: 327 properties: 328 compatible: 329 contains: 330 enum: 331 - qcom,sdm660-dsi-ctrl 332 then: 333 properties: 334 clocks: 335 maxItems: 9 336 clock-names: 337 items: 338 - const: mdp_core 339 - const: byte 340 - const: byte_intf 341 - const: mnoc 342 - const: iface 343 - const: bus 344 - const: core_mmss 345 - const: pixel 346 - const: core 347 348 - if: 349 properties: 350 compatible: 351 contains: 352 enum: 353 - qcom,sdm845-dsi-ctrl 354 - qcom,sm6115-dsi-ctrl 355 then: 356 properties: 357 clocks: 358 maxItems: 6 359 clock-names: 360 items: 361 - const: byte 362 - const: byte_intf 363 - const: pixel 364 - const: core 365 - const: iface 366 - const: bus 367 368unevaluatedProperties: false 369 370examples: 371 - | 372 #include <dt-bindings/interrupt-controller/arm-gic.h> 373 #include <dt-bindings/clock/qcom,dispcc-sdm845.h> 374 #include <dt-bindings/clock/qcom,gcc-sdm845.h> 375 #include <dt-bindings/power/qcom-rpmpd.h> 376 377 dsi@ae94000 { 378 compatible = "qcom,sc7180-dsi-ctrl", "qcom,mdss-dsi-ctrl"; 379 reg = <0x0ae94000 0x400>; 380 reg-names = "dsi_ctrl"; 381 382 #address-cells = <1>; 383 #size-cells = <0>; 384 385 interrupt-parent = <&mdss>; 386 interrupts = <4>; 387 388 clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>, 389 <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>, 390 <&dispcc DISP_CC_MDSS_PCLK0_CLK>, 391 <&dispcc DISP_CC_MDSS_ESC0_CLK>, 392 <&dispcc DISP_CC_MDSS_AHB_CLK>, 393 <&dispcc DISP_CC_MDSS_AXI_CLK>; 394 clock-names = "byte", 395 "byte_intf", 396 "pixel", 397 "core", 398 "iface", 399 "bus"; 400 401 phys = <&dsi0_phy>; 402 phy-names = "dsi"; 403 404 assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>; 405 assigned-clock-parents = <&dsi_phy 0>, <&dsi_phy 1>; 406 407 power-domains = <&rpmhpd SC7180_CX>; 408 operating-points-v2 = <&dsi_opp_table>; 409 410 ports { 411 #address-cells = <1>; 412 #size-cells = <0>; 413 414 port@0 { 415 reg = <0>; 416 dsi0_in: endpoint { 417 remote-endpoint = <&dpu_intf1_out>; 418 }; 419 }; 420 421 port@1 { 422 reg = <1>; 423 dsi0_out: endpoint { 424 remote-endpoint = <&sn65dsi86_in>; 425 data-lanes = <0 1 2 3>; 426 }; 427 }; 428 }; 429 }; 430... 431