1*aa1a8ff2SEmmanuel 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,mdss.yaml#
58bab661aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68bab661aSEmmanuel Vadot
78bab661aSEmmanuel Vadottitle: Qualcomm Mobile Display SubSystem (MDSS)
88bab661aSEmmanuel Vadot
98bab661aSEmmanuel Vadotmaintainers:
108bab661aSEmmanuel Vadot  - Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
118bab661aSEmmanuel Vadot  - Rob Clark <robdclark@gmail.com>
128bab661aSEmmanuel Vadot
138bab661aSEmmanuel Vadotdescription:
14*aa1a8ff2SEmmanuel Vadot  This is the bindings documentation for the Mobile Display Subsystem(MDSS) that
158bab661aSEmmanuel Vadot  encapsulates sub-blocks like MDP5, DSI, HDMI, eDP, etc.
168bab661aSEmmanuel Vadot
178bab661aSEmmanuel Vadotproperties:
18cb7aa33aSEmmanuel Vadot  $nodename:
19cb7aa33aSEmmanuel Vadot    pattern: "^display-subsystem@[0-9a-f]+$"
20cb7aa33aSEmmanuel Vadot
218bab661aSEmmanuel Vadot  compatible:
228bab661aSEmmanuel Vadot    enum:
238bab661aSEmmanuel Vadot      - qcom,mdss
248bab661aSEmmanuel Vadot
258bab661aSEmmanuel Vadot  reg:
268bab661aSEmmanuel Vadot    minItems: 2
278bab661aSEmmanuel Vadot    maxItems: 3
288bab661aSEmmanuel Vadot
298bab661aSEmmanuel Vadot  reg-names:
308bab661aSEmmanuel Vadot    minItems: 2
318bab661aSEmmanuel Vadot    items:
328bab661aSEmmanuel Vadot      - const: mdss_phys
338bab661aSEmmanuel Vadot      - const: vbif_phys
348bab661aSEmmanuel Vadot      - const: vbif_nrt_phys
358bab661aSEmmanuel Vadot
368bab661aSEmmanuel Vadot  interrupts:
378bab661aSEmmanuel Vadot    maxItems: 1
388bab661aSEmmanuel Vadot
398bab661aSEmmanuel Vadot  interrupt-controller: true
408bab661aSEmmanuel Vadot
418bab661aSEmmanuel Vadot  "#interrupt-cells":
428bab661aSEmmanuel Vadot    const: 1
438bab661aSEmmanuel Vadot
448bab661aSEmmanuel Vadot  power-domains:
458bab661aSEmmanuel Vadot    maxItems: 1
468bab661aSEmmanuel Vadot    description: |
478bab661aSEmmanuel Vadot      The MDSS power domain provided by GCC
488bab661aSEmmanuel Vadot
498bab661aSEmmanuel Vadot  clocks:
50cb7aa33aSEmmanuel Vadot    oneOf:
51cb7aa33aSEmmanuel Vadot      - minItems: 3
528bab661aSEmmanuel Vadot        items:
538bab661aSEmmanuel Vadot          - description: Display abh clock
548bab661aSEmmanuel Vadot          - description: Display axi clock
558bab661aSEmmanuel Vadot          - description: Display vsync clock
56cb7aa33aSEmmanuel Vadot          - description: Display core clock
57cb7aa33aSEmmanuel Vadot      - minItems: 1
58cb7aa33aSEmmanuel Vadot        items:
59cb7aa33aSEmmanuel Vadot          - description: Display abh clock
60cb7aa33aSEmmanuel Vadot          - description: Display core clock
618bab661aSEmmanuel Vadot
628bab661aSEmmanuel Vadot  clock-names:
63cb7aa33aSEmmanuel Vadot    oneOf:
64cb7aa33aSEmmanuel Vadot      - minItems: 3
658bab661aSEmmanuel Vadot        items:
668bab661aSEmmanuel Vadot          - const: iface
678bab661aSEmmanuel Vadot          - const: bus
688bab661aSEmmanuel Vadot          - const: vsync
69cb7aa33aSEmmanuel Vadot          - const: core
70cb7aa33aSEmmanuel Vadot      - minItems: 1
71cb7aa33aSEmmanuel Vadot        items:
72cb7aa33aSEmmanuel Vadot          - const: iface
73cb7aa33aSEmmanuel Vadot          - const: core
748bab661aSEmmanuel Vadot
758bab661aSEmmanuel Vadot  "#address-cells":
768bab661aSEmmanuel Vadot    const: 1
778bab661aSEmmanuel Vadot
788bab661aSEmmanuel Vadot  "#size-cells":
798bab661aSEmmanuel Vadot    const: 1
808bab661aSEmmanuel Vadot
818bab661aSEmmanuel Vadot  ranges: true
828bab661aSEmmanuel Vadot
838bab661aSEmmanuel Vadot  resets:
848bab661aSEmmanuel Vadot    items:
858bab661aSEmmanuel Vadot      - description: MDSS_CORE reset
868bab661aSEmmanuel Vadot
878bab661aSEmmanuel Vadotrequired:
888bab661aSEmmanuel Vadot  - compatible
898bab661aSEmmanuel Vadot  - reg
908bab661aSEmmanuel Vadot  - reg-names
918bab661aSEmmanuel Vadot  - interrupts
928bab661aSEmmanuel Vadot  - interrupt-controller
938bab661aSEmmanuel Vadot  - "#interrupt-cells"
948bab661aSEmmanuel Vadot  - power-domains
958bab661aSEmmanuel Vadot  - clocks
968bab661aSEmmanuel Vadot  - clock-names
978bab661aSEmmanuel Vadot  - "#address-cells"
988bab661aSEmmanuel Vadot  - "#size-cells"
998bab661aSEmmanuel Vadot  - ranges
1008bab661aSEmmanuel Vadot
1018bab661aSEmmanuel VadotpatternProperties:
102cb7aa33aSEmmanuel Vadot  "^display-controller@[1-9a-f][0-9a-f]*$":
1038bab661aSEmmanuel Vadot    type: object
104fac71e4eSEmmanuel Vadot    additionalProperties: true
1058bab661aSEmmanuel Vadot    properties:
1068bab661aSEmmanuel Vadot      compatible:
107cb7aa33aSEmmanuel Vadot        contains:
1088bab661aSEmmanuel Vadot          const: qcom,mdp5
1098bab661aSEmmanuel Vadot
1108bab661aSEmmanuel Vadot  "^dsi@[1-9a-f][0-9a-f]*$":
1118bab661aSEmmanuel Vadot    type: object
112fac71e4eSEmmanuel Vadot    additionalProperties: true
1138bab661aSEmmanuel Vadot    properties:
1148bab661aSEmmanuel Vadot      compatible:
115cb7aa33aSEmmanuel Vadot        contains:
1168bab661aSEmmanuel Vadot          const: qcom,mdss-dsi-ctrl
1178bab661aSEmmanuel Vadot
1188bab661aSEmmanuel Vadot  "^phy@[1-9a-f][0-9a-f]*$":
1198bab661aSEmmanuel Vadot    type: object
120fac71e4eSEmmanuel Vadot    additionalProperties: true
1218bab661aSEmmanuel Vadot    properties:
1228bab661aSEmmanuel Vadot      compatible:
1238bab661aSEmmanuel Vadot        enum:
1248bab661aSEmmanuel Vadot          - qcom,dsi-phy-14nm
1258bab661aSEmmanuel Vadot          - qcom,dsi-phy-14nm-660
1268bab661aSEmmanuel Vadot          - qcom,dsi-phy-14nm-8953
1278bab661aSEmmanuel Vadot          - qcom,dsi-phy-20nm
128f126890aSEmmanuel Vadot          - qcom,dsi-phy-28nm-8226
1298bab661aSEmmanuel Vadot          - qcom,dsi-phy-28nm-hpm
1308bab661aSEmmanuel Vadot          - qcom,dsi-phy-28nm-lp
1318bab661aSEmmanuel Vadot          - qcom,hdmi-phy-8084
1328bab661aSEmmanuel Vadot          - qcom,hdmi-phy-8660
1338bab661aSEmmanuel Vadot          - qcom,hdmi-phy-8960
1348bab661aSEmmanuel Vadot          - qcom,hdmi-phy-8974
1358bab661aSEmmanuel Vadot          - qcom,hdmi-phy-8996
1368bab661aSEmmanuel Vadot
1378bab661aSEmmanuel Vadot  "^hdmi-tx@[1-9a-f][0-9a-f]*$":
1388bab661aSEmmanuel Vadot    type: object
139fac71e4eSEmmanuel Vadot    additionalProperties: true
1408bab661aSEmmanuel Vadot    properties:
1418bab661aSEmmanuel Vadot      compatible:
1428bab661aSEmmanuel Vadot        enum:
1438bab661aSEmmanuel Vadot          - qcom,hdmi-tx-8084
1448bab661aSEmmanuel Vadot          - qcom,hdmi-tx-8660
1458bab661aSEmmanuel Vadot          - qcom,hdmi-tx-8960
1468bab661aSEmmanuel Vadot          - qcom,hdmi-tx-8974
1478bab661aSEmmanuel Vadot          - qcom,hdmi-tx-8994
1488bab661aSEmmanuel Vadot          - qcom,hdmi-tx-8996
1498bab661aSEmmanuel Vadot
1508bab661aSEmmanuel VadotadditionalProperties: false
1518bab661aSEmmanuel Vadot
1528bab661aSEmmanuel Vadotexamples:
1538bab661aSEmmanuel Vadot  - |
1548bab661aSEmmanuel Vadot    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
1558bab661aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
156cb7aa33aSEmmanuel Vadot    display-subsystem@1a00000 {
1578bab661aSEmmanuel Vadot        compatible = "qcom,mdss";
1588bab661aSEmmanuel Vadot        reg = <0x1a00000 0x1000>,
1598bab661aSEmmanuel Vadot              <0x1ac8000 0x3000>;
1608bab661aSEmmanuel Vadot        reg-names = "mdss_phys", "vbif_phys";
1618bab661aSEmmanuel Vadot
1628bab661aSEmmanuel Vadot        power-domains = <&gcc MDSS_GDSC>;
1638bab661aSEmmanuel Vadot
1648bab661aSEmmanuel Vadot        clocks = <&gcc GCC_MDSS_AHB_CLK>,
1658bab661aSEmmanuel Vadot                 <&gcc GCC_MDSS_AXI_CLK>,
1668bab661aSEmmanuel Vadot                 <&gcc GCC_MDSS_VSYNC_CLK>;
1678bab661aSEmmanuel Vadot        clock-names = "iface",
1688bab661aSEmmanuel Vadot                      "bus",
1698bab661aSEmmanuel Vadot                      "vsync";
1708bab661aSEmmanuel Vadot
1718bab661aSEmmanuel Vadot        interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
1728bab661aSEmmanuel Vadot
1738bab661aSEmmanuel Vadot        interrupt-controller;
1748bab661aSEmmanuel Vadot        #interrupt-cells = <1>;
1758bab661aSEmmanuel Vadot
1768bab661aSEmmanuel Vadot        #address-cells = <1>;
1778bab661aSEmmanuel Vadot        #size-cells = <1>;
1788bab661aSEmmanuel Vadot        ranges;
1798bab661aSEmmanuel Vadot
180cb7aa33aSEmmanuel Vadot        display-controller@1a01000 {
181cb7aa33aSEmmanuel Vadot            compatible = "qcom,msm8916-mdp5", "qcom,mdp5";
1828bab661aSEmmanuel Vadot            reg = <0x01a01000 0x89000>;
1838bab661aSEmmanuel Vadot            reg-names = "mdp_phys";
1848bab661aSEmmanuel Vadot
1858bab661aSEmmanuel Vadot            interrupt-parent = <&mdss>;
1868bab661aSEmmanuel Vadot            interrupts = <0>;
1878bab661aSEmmanuel Vadot
1888bab661aSEmmanuel Vadot            clocks = <&gcc GCC_MDSS_AHB_CLK>,
1898bab661aSEmmanuel Vadot                     <&gcc GCC_MDSS_AXI_CLK>,
1908bab661aSEmmanuel Vadot                     <&gcc GCC_MDSS_MDP_CLK>,
1918bab661aSEmmanuel Vadot                     <&gcc GCC_MDSS_VSYNC_CLK>;
1928bab661aSEmmanuel Vadot            clock-names = "iface",
1938bab661aSEmmanuel Vadot                      "bus",
1948bab661aSEmmanuel Vadot                      "core",
1958bab661aSEmmanuel Vadot                      "vsync";
1968bab661aSEmmanuel Vadot
1978bab661aSEmmanuel Vadot            iommus = <&apps_iommu 4>;
1988bab661aSEmmanuel Vadot
1998bab661aSEmmanuel Vadot            ports {
2008bab661aSEmmanuel Vadot                #address-cells = <1>;
2018bab661aSEmmanuel Vadot                #size-cells = <0>;
2028bab661aSEmmanuel Vadot
2038bab661aSEmmanuel Vadot                port@0 {
2048bab661aSEmmanuel Vadot                    reg = <0>;
2058bab661aSEmmanuel Vadot                    mdp5_intf1_out: endpoint {
2068bab661aSEmmanuel Vadot                        remote-endpoint = <&dsi0_in>;
2078bab661aSEmmanuel Vadot                    };
2088bab661aSEmmanuel Vadot                };
2098bab661aSEmmanuel Vadot            };
2108bab661aSEmmanuel Vadot        };
2118bab661aSEmmanuel Vadot    };
2128bab661aSEmmanuel Vadot...
213