xref: /linux/Documentation/devicetree/bindings/display/msm/qcom,mdss.yaml (revision 798cc8f093e580e12f0d7c3f5e3a19cbd79f99aa)
1f7d46c5eSDmitry Baryshkov# 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:
14f7d46c5eSDmitry Baryshkov  This is the bindings documentation for the Mobile Display Subsytem(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
87f7d46c5eSDmitry Baryshkovrequired:
88f7d46c5eSDmitry Baryshkov  - compatible
89f7d46c5eSDmitry Baryshkov  - reg
90f7d46c5eSDmitry Baryshkov  - reg-names
91f7d46c5eSDmitry Baryshkov  - interrupts
92f7d46c5eSDmitry Baryshkov  - interrupt-controller
93f7d46c5eSDmitry Baryshkov  - "#interrupt-cells"
94f7d46c5eSDmitry Baryshkov  - power-domains
95f7d46c5eSDmitry Baryshkov  - clocks
96f7d46c5eSDmitry Baryshkov  - clock-names
97f7d46c5eSDmitry Baryshkov  - "#address-cells"
98f7d46c5eSDmitry Baryshkov  - "#size-cells"
99f7d46c5eSDmitry Baryshkov  - ranges
100f7d46c5eSDmitry Baryshkov
101f7d46c5eSDmitry BaryshkovpatternProperties:
102*798cc8f0SDmitry Baryshkov  "^display-controller@[1-9a-f][0-9a-f]*$":
103f7d46c5eSDmitry Baryshkov    type: object
104f7d46c5eSDmitry Baryshkov    properties:
105f7d46c5eSDmitry Baryshkov      compatible:
1065c719967SDmitry Baryshkov        contains:
107f7d46c5eSDmitry Baryshkov          const: qcom,mdp5
108f7d46c5eSDmitry Baryshkov
109f7d46c5eSDmitry Baryshkov  "^dsi@[1-9a-f][0-9a-f]*$":
110f7d46c5eSDmitry Baryshkov    type: object
111f7d46c5eSDmitry Baryshkov    properties:
112f7d46c5eSDmitry Baryshkov      compatible:
113f7d46c5eSDmitry Baryshkov        const: qcom,mdss-dsi-ctrl
114f7d46c5eSDmitry Baryshkov
115f7d46c5eSDmitry Baryshkov  "^phy@[1-9a-f][0-9a-f]*$":
116f7d46c5eSDmitry Baryshkov    type: object
117f7d46c5eSDmitry Baryshkov    properties:
118f7d46c5eSDmitry Baryshkov      compatible:
119f7d46c5eSDmitry Baryshkov        enum:
120f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-14nm
121f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-14nm-660
122f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-14nm-8953
123f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-20nm
124f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-28nm-hpm
125f7d46c5eSDmitry Baryshkov          - qcom,dsi-phy-28nm-lp
126f7d46c5eSDmitry Baryshkov
127f7d46c5eSDmitry Baryshkov  "^hdmi-phy@[1-9a-f][0-9a-f]*$":
128f7d46c5eSDmitry Baryshkov    type: object
129f7d46c5eSDmitry Baryshkov    properties:
130f7d46c5eSDmitry Baryshkov      compatible:
131f7d46c5eSDmitry Baryshkov        enum:
132f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8084
133f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8660
134f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8960
135f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8974
136f7d46c5eSDmitry Baryshkov          - qcom,hdmi-phy-8996
137f7d46c5eSDmitry Baryshkov
138f7d46c5eSDmitry Baryshkov  "^hdmi-tx@[1-9a-f][0-9a-f]*$":
139f7d46c5eSDmitry Baryshkov    type: object
140f7d46c5eSDmitry Baryshkov    properties:
141f7d46c5eSDmitry Baryshkov      compatible:
142f7d46c5eSDmitry Baryshkov        enum:
143f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8084
144f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8660
145f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8960
146f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8974
147f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8994
148f7d46c5eSDmitry Baryshkov          - qcom,hdmi-tx-8996
149f7d46c5eSDmitry Baryshkov
150f7d46c5eSDmitry BaryshkovadditionalProperties: false
151f7d46c5eSDmitry Baryshkov
152f7d46c5eSDmitry Baryshkovexamples:
153f7d46c5eSDmitry Baryshkov  - |
154f7d46c5eSDmitry Baryshkov    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
155f7d46c5eSDmitry Baryshkov    #include <dt-bindings/interrupt-controller/arm-gic.h>
1561413ef55SDmitry Baryshkov    display-subsystem@1a00000 {
157f7d46c5eSDmitry Baryshkov        compatible = "qcom,mdss";
158f7d46c5eSDmitry Baryshkov        reg = <0x1a00000 0x1000>,
159f7d46c5eSDmitry Baryshkov              <0x1ac8000 0x3000>;
160f7d46c5eSDmitry Baryshkov        reg-names = "mdss_phys", "vbif_phys";
161f7d46c5eSDmitry Baryshkov
162f7d46c5eSDmitry Baryshkov        power-domains = <&gcc MDSS_GDSC>;
163f7d46c5eSDmitry Baryshkov
164f7d46c5eSDmitry Baryshkov        clocks = <&gcc GCC_MDSS_AHB_CLK>,
165f7d46c5eSDmitry Baryshkov                 <&gcc GCC_MDSS_AXI_CLK>,
166f7d46c5eSDmitry Baryshkov                 <&gcc GCC_MDSS_VSYNC_CLK>;
167f7d46c5eSDmitry Baryshkov        clock-names = "iface",
168f7d46c5eSDmitry Baryshkov                      "bus",
169f7d46c5eSDmitry Baryshkov                      "vsync";
170f7d46c5eSDmitry Baryshkov
171f7d46c5eSDmitry Baryshkov        interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
172f7d46c5eSDmitry Baryshkov
173f7d46c5eSDmitry Baryshkov        interrupt-controller;
174f7d46c5eSDmitry Baryshkov        #interrupt-cells = <1>;
175f7d46c5eSDmitry Baryshkov
176f7d46c5eSDmitry Baryshkov        #address-cells = <1>;
177f7d46c5eSDmitry Baryshkov        #size-cells = <1>;
178f7d46c5eSDmitry Baryshkov        ranges;
179f7d46c5eSDmitry Baryshkov
180*798cc8f0SDmitry Baryshkov        display-controller@1a01000 {
181*798cc8f0SDmitry Baryshkov            compatible = "qcom,msm8916-mdp5", "qcom,mdp5";
182f7d46c5eSDmitry Baryshkov            reg = <0x01a01000 0x89000>;
183f7d46c5eSDmitry Baryshkov            reg-names = "mdp_phys";
184f7d46c5eSDmitry Baryshkov
185f7d46c5eSDmitry Baryshkov            interrupt-parent = <&mdss>;
186f7d46c5eSDmitry Baryshkov            interrupts = <0>;
187f7d46c5eSDmitry Baryshkov
188f7d46c5eSDmitry Baryshkov            clocks = <&gcc GCC_MDSS_AHB_CLK>,
189f7d46c5eSDmitry Baryshkov                     <&gcc GCC_MDSS_AXI_CLK>,
190f7d46c5eSDmitry Baryshkov                     <&gcc GCC_MDSS_MDP_CLK>,
191f7d46c5eSDmitry Baryshkov                     <&gcc GCC_MDSS_VSYNC_CLK>;
192f7d46c5eSDmitry Baryshkov            clock-names = "iface",
193f7d46c5eSDmitry Baryshkov                      "bus",
194f7d46c5eSDmitry Baryshkov                      "core",
195f7d46c5eSDmitry Baryshkov                      "vsync";
196f7d46c5eSDmitry Baryshkov
197f7d46c5eSDmitry Baryshkov            iommus = <&apps_iommu 4>;
198f7d46c5eSDmitry Baryshkov
199f7d46c5eSDmitry Baryshkov            ports {
200f7d46c5eSDmitry Baryshkov                #address-cells = <1>;
201f7d46c5eSDmitry Baryshkov                #size-cells = <0>;
202f7d46c5eSDmitry Baryshkov
203f7d46c5eSDmitry Baryshkov                port@0 {
204f7d46c5eSDmitry Baryshkov                    reg = <0>;
205f7d46c5eSDmitry Baryshkov                    mdp5_intf1_out: endpoint {
206f7d46c5eSDmitry Baryshkov                        remote-endpoint = <&dsi0_in>;
207f7d46c5eSDmitry Baryshkov                    };
208f7d46c5eSDmitry Baryshkov                };
209f7d46c5eSDmitry Baryshkov            };
210f7d46c5eSDmitry Baryshkov        };
211f7d46c5eSDmitry Baryshkov    };
212f7d46c5eSDmitry Baryshkov...
213