xref: /linux/Documentation/devicetree/bindings/display/msm/qcom,mdss.yaml (revision b08494a8f7416e5f09907318c5460ad6f6e2a548)
1440b075bSKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2f7d46c5eSDmitry Baryshkov%YAML 1.2
3f7d46c5eSDmitry Baryshkov---
4f7d46c5eSDmitry Baryshkov$id: http://devicetree.org/schemas/display/msm/qcom,mdss.yaml#
5f7d46c5eSDmitry Baryshkov$schema: http://devicetree.org/meta-schemas/core.yaml#
6f7d46c5eSDmitry Baryshkov
7f7d46c5eSDmitry Baryshkovtitle: Qualcomm Mobile Display SubSystem (MDSS)
8f7d46c5eSDmitry Baryshkov
9f7d46c5eSDmitry Baryshkovmaintainers:
10f7d46c5eSDmitry Baryshkov  - Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
11f7d46c5eSDmitry Baryshkov  - Rob Clark <robdclark@gmail.com>
12f7d46c5eSDmitry Baryshkov
13f7d46c5eSDmitry Baryshkovdescription:
1447aab533SBjorn Helgaas  This is the bindings documentation for the Mobile Display Subsystem(MDSS) that
15f7d46c5eSDmitry Baryshkov  encapsulates sub-blocks like MDP5, DSI, HDMI, eDP, etc.
16f7d46c5eSDmitry Baryshkov
17f7d46c5eSDmitry Baryshkovproperties:
181413ef55SDmitry Baryshkov  $nodename:
191413ef55SDmitry Baryshkov    pattern: "^display-subsystem@[0-9a-f]+$"
201413ef55SDmitry Baryshkov
21f7d46c5eSDmitry Baryshkov  compatible:
22f7d46c5eSDmitry Baryshkov    enum:
23f7d46c5eSDmitry Baryshkov      - qcom,mdss
24f7d46c5eSDmitry Baryshkov
25f7d46c5eSDmitry Baryshkov  reg:
26f7d46c5eSDmitry Baryshkov    minItems: 2
27f7d46c5eSDmitry Baryshkov    maxItems: 3
28f7d46c5eSDmitry Baryshkov
29f7d46c5eSDmitry Baryshkov  reg-names:
30f7d46c5eSDmitry Baryshkov    minItems: 2
31f7d46c5eSDmitry Baryshkov    items:
32f7d46c5eSDmitry Baryshkov      - const: mdss_phys
33f7d46c5eSDmitry Baryshkov      - const: vbif_phys
34f7d46c5eSDmitry Baryshkov      - const: vbif_nrt_phys
35f7d46c5eSDmitry Baryshkov
36f7d46c5eSDmitry Baryshkov  interrupts:
37f7d46c5eSDmitry Baryshkov    maxItems: 1
38f7d46c5eSDmitry Baryshkov
39f7d46c5eSDmitry Baryshkov  interrupt-controller: true
40f7d46c5eSDmitry Baryshkov
41f7d46c5eSDmitry Baryshkov  "#interrupt-cells":
42f7d46c5eSDmitry Baryshkov    const: 1
43f7d46c5eSDmitry Baryshkov
44f7d46c5eSDmitry Baryshkov  power-domains:
45f7d46c5eSDmitry Baryshkov    maxItems: 1
46f7d46c5eSDmitry Baryshkov    description: |
47f7d46c5eSDmitry Baryshkov      The MDSS power domain provided by GCC
48f7d46c5eSDmitry Baryshkov
49f7d46c5eSDmitry Baryshkov  clocks:
502d2d525cSDmitry Baryshkov    oneOf:
512d2d525cSDmitry Baryshkov      - minItems: 3
52f7d46c5eSDmitry Baryshkov        items:
53f7d46c5eSDmitry Baryshkov          - description: Display abh clock
54f7d46c5eSDmitry Baryshkov          - description: Display axi clock
55f7d46c5eSDmitry Baryshkov          - description: Display vsync clock
562d2d525cSDmitry Baryshkov          - description: Display core clock
572d2d525cSDmitry Baryshkov      - minItems: 1
582d2d525cSDmitry Baryshkov        items:
592d2d525cSDmitry Baryshkov          - description: Display abh clock
602d2d525cSDmitry Baryshkov          - description: Display core clock
61f7d46c5eSDmitry Baryshkov
62f7d46c5eSDmitry Baryshkov  clock-names:
632d2d525cSDmitry Baryshkov    oneOf:
642d2d525cSDmitry Baryshkov      - minItems: 3
65f7d46c5eSDmitry Baryshkov        items:
66f7d46c5eSDmitry Baryshkov          - const: iface
67f7d46c5eSDmitry Baryshkov          - const: bus
68f7d46c5eSDmitry Baryshkov          - const: vsync
692d2d525cSDmitry Baryshkov          - const: core
702d2d525cSDmitry Baryshkov      - minItems: 1
712d2d525cSDmitry Baryshkov        items:
722d2d525cSDmitry Baryshkov          - const: iface
732d2d525cSDmitry Baryshkov          - const: core
74f7d46c5eSDmitry Baryshkov
75f7d46c5eSDmitry Baryshkov  "#address-cells":
76f7d46c5eSDmitry Baryshkov    const: 1
77f7d46c5eSDmitry Baryshkov
78f7d46c5eSDmitry Baryshkov  "#size-cells":
79f7d46c5eSDmitry Baryshkov    const: 1
80f7d46c5eSDmitry Baryshkov
81f7d46c5eSDmitry Baryshkov  ranges: true
82f7d46c5eSDmitry Baryshkov
83f7d46c5eSDmitry Baryshkov  resets:
84f7d46c5eSDmitry Baryshkov    items:
85f7d46c5eSDmitry Baryshkov      - description: MDSS_CORE reset
86f7d46c5eSDmitry Baryshkov
87*6694d178SLuca Weiss  interconnects:
88*6694d178SLuca Weiss    minItems: 1
89*6694d178SLuca Weiss    items:
90*6694d178SLuca Weiss      - description: Interconnect path from mdp0 (or a single mdp) port to the data bus
91*6694d178SLuca Weiss      - description: Interconnect path from CPU to the reg bus
92*6694d178SLuca Weiss
93*6694d178SLuca Weiss  interconnect-names:
94*6694d178SLuca Weiss    minItems: 1
95*6694d178SLuca Weiss    items:
96*6694d178SLuca Weiss      - const: mdp0-mem
97*6694d178SLuca Weiss      - const: cpu-cfg
98*6694d178SLuca Weiss
99f7d46c5eSDmitry Baryshkovrequired:
100f7d46c5eSDmitry Baryshkov  - compatible
101f7d46c5eSDmitry Baryshkov  - reg
102f7d46c5eSDmitry Baryshkov  - reg-names
103f7d46c5eSDmitry Baryshkov  - interrupts
104f7d46c5eSDmitry Baryshkov  - interrupt-controller
105f7d46c5eSDmitry Baryshkov  - "#interrupt-cells"
106f7d46c5eSDmitry Baryshkov  - power-domains
107f7d46c5eSDmitry Baryshkov  - clocks
108f7d46c5eSDmitry Baryshkov  - clock-names
109f7d46c5eSDmitry Baryshkov  - "#address-cells"
110f7d46c5eSDmitry Baryshkov  - "#size-cells"
111f7d46c5eSDmitry Baryshkov  - ranges
112f7d46c5eSDmitry Baryshkov
113f7d46c5eSDmitry BaryshkovpatternProperties:
114798cc8f0SDmitry Baryshkov  "^display-controller@[1-9a-f][0-9a-f]*$":
115f7d46c5eSDmitry Baryshkov    type: object
116e62fc182SRob Herring    additionalProperties: true
117f7d46c5eSDmitry Baryshkov    properties:
118f7d46c5eSDmitry Baryshkov      compatible:
1195c719967SDmitry Baryshkov        contains:
120f7d46c5eSDmitry Baryshkov          const: qcom,mdp5
121f7d46c5eSDmitry Baryshkov
122f7d46c5eSDmitry Baryshkov  "^dsi@[1-9a-f][0-9a-f]*$":
123f7d46c5eSDmitry Baryshkov    type: object
124e62fc182SRob Herring    additionalProperties: true
125f7d46c5eSDmitry Baryshkov    properties:
126f7d46c5eSDmitry Baryshkov      compatible:
1270c0f65c6SBryan O'Donoghue        contains:
128f7d46c5eSDmitry Baryshkov          const: qcom,mdss-dsi-ctrl
129f7d46c5eSDmitry Baryshkov
130f7d46c5eSDmitry Baryshkov  "^phy@[1-9a-f][0-9a-f]*$":
131f7d46c5eSDmitry Baryshkov    type: object
132e62fc182SRob Herring    additionalProperties: true
133f7d46c5eSDmitry Baryshkov    properties:
134f7d46c5eSDmitry Baryshkov      compatible:
135f7d46c5eSDmitry Baryshkov        enum:
136f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-14nm
137f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-14nm-660
138f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-14nm-8953
139f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-20nm
140d01eb342SLuca Weiss          - qcom,dsi-phy-28nm-8226
14160bdbaafSBarnabás Czémán          - qcom,dsi-phy-28nm-8937
142f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-28nm-hpm
1433b63880dSAdam Skladowski          - qcom,dsi-phy-28nm-hpm-fam-b
144f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-28nm-lp
145f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8084
146f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8660
147f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8960
148f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8974
149f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8996
150f7d46c5eSDmitry Baryshkov
151f7d46c5eSDmitry Baryshkov  "^hdmi-tx@[1-9a-f][0-9a-f]*$":
152f7d46c5eSDmitry Baryshkov    type: object
153e62fc182SRob Herring    additionalProperties: true
154f7d46c5eSDmitry Baryshkov    properties:
155f7d46c5eSDmitry Baryshkov      compatible:
156f7d46c5eSDmitry Baryshkov        enum:
157f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8084
158f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8660
159f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8960
160f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8974
161f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8994
162f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8996
163f7d46c5eSDmitry Baryshkov
164f7d46c5eSDmitry BaryshkovadditionalProperties: false
165f7d46c5eSDmitry Baryshkov
166f7d46c5eSDmitry Baryshkovexamples:
167f7d46c5eSDmitry Baryshkov  - |
168f7d46c5eSDmitry Baryshkov    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
169f7d46c5eSDmitry Baryshkov    #include <dt-bindings/interrupt-controller/arm-gic.h>
1701413ef55SDmitry Baryshkov    display-subsystem@1a00000 {
171f7d46c5eSDmitry Baryshkov        compatible = "qcom,mdss";
172f7d46c5eSDmitry Baryshkov        reg = <0x1a00000 0x1000>,
173f7d46c5eSDmitry Baryshkov              <0x1ac8000 0x3000>;
174f7d46c5eSDmitry Baryshkov        reg-names = "mdss_phys", "vbif_phys";
175f7d46c5eSDmitry Baryshkov
176f7d46c5eSDmitry Baryshkov        power-domains = <&gcc MDSS_GDSC>;
177f7d46c5eSDmitry Baryshkov
178f7d46c5eSDmitry Baryshkov        clocks = <&gcc GCC_MDSS_AHB_CLK>,
179f7d46c5eSDmitry Baryshkov                 <&gcc GCC_MDSS_AXI_CLK>,
180f7d46c5eSDmitry Baryshkov                 <&gcc GCC_MDSS_VSYNC_CLK>;
181f7d46c5eSDmitry Baryshkov        clock-names = "iface",
182f7d46c5eSDmitry Baryshkov                      "bus",
183f7d46c5eSDmitry Baryshkov                      "vsync";
184f7d46c5eSDmitry Baryshkov
185f7d46c5eSDmitry Baryshkov        interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
186f7d46c5eSDmitry Baryshkov
187f7d46c5eSDmitry Baryshkov        interrupt-controller;
188f7d46c5eSDmitry Baryshkov        #interrupt-cells = <1>;
189f7d46c5eSDmitry Baryshkov
190f7d46c5eSDmitry Baryshkov        #address-cells = <1>;
191f7d46c5eSDmitry Baryshkov        #size-cells = <1>;
192f7d46c5eSDmitry Baryshkov        ranges;
193f7d46c5eSDmitry Baryshkov
194798cc8f0SDmitry Baryshkov        display-controller@1a01000 {
195798cc8f0SDmitry Baryshkov            compatible = "qcom,msm8916-mdp5", "qcom,mdp5";
196f7d46c5eSDmitry Baryshkov            reg = <0x01a01000 0x89000>;
197f7d46c5eSDmitry Baryshkov            reg-names = "mdp_phys";
198f7d46c5eSDmitry Baryshkov
199f7d46c5eSDmitry Baryshkov            interrupt-parent = <&mdss>;
200f7d46c5eSDmitry Baryshkov            interrupts = <0>;
201f7d46c5eSDmitry Baryshkov
202f7d46c5eSDmitry Baryshkov            clocks = <&gcc GCC_MDSS_AHB_CLK>,
203f7d46c5eSDmitry Baryshkov                     <&gcc GCC_MDSS_AXI_CLK>,
204f7d46c5eSDmitry Baryshkov                     <&gcc GCC_MDSS_MDP_CLK>,
205f7d46c5eSDmitry Baryshkov                     <&gcc GCC_MDSS_VSYNC_CLK>;
206f7d46c5eSDmitry Baryshkov            clock-names = "iface",
207f7d46c5eSDmitry Baryshkov                      "bus",
208f7d46c5eSDmitry Baryshkov                      "core",
209f7d46c5eSDmitry Baryshkov                      "vsync";
210f7d46c5eSDmitry Baryshkov
211f7d46c5eSDmitry Baryshkov            iommus = <&apps_iommu 4>;
212f7d46c5eSDmitry Baryshkov
213f7d46c5eSDmitry Baryshkov            ports {
214f7d46c5eSDmitry Baryshkov                #address-cells = <1>;
215f7d46c5eSDmitry Baryshkov                #size-cells = <0>;
216f7d46c5eSDmitry Baryshkov
217f7d46c5eSDmitry Baryshkov                port@0 {
218f7d46c5eSDmitry Baryshkov                    reg = <0>;
219f7d46c5eSDmitry Baryshkov                    mdp5_intf1_out: endpoint {
220f7d46c5eSDmitry Baryshkov                        remote-endpoint = <&dsi0_in>;
221f7d46c5eSDmitry Baryshkov                    };
222f7d46c5eSDmitry Baryshkov                };
223f7d46c5eSDmitry Baryshkov            };
224f7d46c5eSDmitry Baryshkov        };
225f7d46c5eSDmitry Baryshkov    };
226f7d46c5eSDmitry Baryshkov...
227