xref: /freebsd/sys/contrib/device-tree/Bindings/display/msm/qcom,sm6150-mdss.yaml (revision 2846c90520eb4cc74e24d586a0ea0f4a0006bc73)
1*2846c905SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*2846c905SEmmanuel Vadot%YAML 1.2
3*2846c905SEmmanuel Vadot---
4*2846c905SEmmanuel Vadot$id: http://devicetree.org/schemas/display/msm/qcom,sm6150-mdss.yaml#
5*2846c905SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*2846c905SEmmanuel Vadot
7*2846c905SEmmanuel Vadottitle: Qualcomm SM6150 Display MDSS
8*2846c905SEmmanuel Vadot
9*2846c905SEmmanuel Vadotmaintainers:
10*2846c905SEmmanuel Vadot  - Abhinav Kumar <quic_abhinavk@quicinc.com>
11*2846c905SEmmanuel Vadot  - Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
12*2846c905SEmmanuel Vadot
13*2846c905SEmmanuel Vadotdescription:
14*2846c905SEmmanuel Vadot  Device tree bindings for MSM Mobile Display Subsystem(MDSS) that encapsulates
15*2846c905SEmmanuel Vadot  sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree
16*2846c905SEmmanuel Vadot  bindings of MDSS are mentioned for SM6150 target.
17*2846c905SEmmanuel Vadot
18*2846c905SEmmanuel Vadot$ref: /schemas/display/msm/mdss-common.yaml#
19*2846c905SEmmanuel Vadot
20*2846c905SEmmanuel Vadotproperties:
21*2846c905SEmmanuel Vadot  compatible:
22*2846c905SEmmanuel Vadot    items:
23*2846c905SEmmanuel Vadot      - const: qcom,sm6150-mdss
24*2846c905SEmmanuel Vadot
25*2846c905SEmmanuel Vadot  clocks:
26*2846c905SEmmanuel Vadot    items:
27*2846c905SEmmanuel Vadot      - description: Display AHB clock from gcc
28*2846c905SEmmanuel Vadot      - description: Display hf axi clock
29*2846c905SEmmanuel Vadot      - description: Display core clock
30*2846c905SEmmanuel Vadot
31*2846c905SEmmanuel Vadot  clock-names:
32*2846c905SEmmanuel Vadot    items:
33*2846c905SEmmanuel Vadot      - const: iface
34*2846c905SEmmanuel Vadot      - const: bus
35*2846c905SEmmanuel Vadot      - const: core
36*2846c905SEmmanuel Vadot
37*2846c905SEmmanuel Vadot  iommus:
38*2846c905SEmmanuel Vadot    maxItems: 1
39*2846c905SEmmanuel Vadot
40*2846c905SEmmanuel Vadot  interconnects:
41*2846c905SEmmanuel Vadot    maxItems: 2
42*2846c905SEmmanuel Vadot
43*2846c905SEmmanuel Vadot  interconnect-names:
44*2846c905SEmmanuel Vadot    maxItems: 2
45*2846c905SEmmanuel Vadot
46*2846c905SEmmanuel VadotpatternProperties:
47*2846c905SEmmanuel Vadot  "^display-controller@[0-9a-f]+$":
48*2846c905SEmmanuel Vadot    type: object
49*2846c905SEmmanuel Vadot    additionalProperties: true
50*2846c905SEmmanuel Vadot    properties:
51*2846c905SEmmanuel Vadot      compatible:
52*2846c905SEmmanuel Vadot        const: qcom,sm6150-dpu
53*2846c905SEmmanuel Vadot
54*2846c905SEmmanuel Vadot  "^dsi@[0-9a-f]+$":
55*2846c905SEmmanuel Vadot    type: object
56*2846c905SEmmanuel Vadot    additionalProperties: true
57*2846c905SEmmanuel Vadot    properties:
58*2846c905SEmmanuel Vadot      compatible:
59*2846c905SEmmanuel Vadot        items:
60*2846c905SEmmanuel Vadot          - const: qcom,sm6150-dsi-ctrl
61*2846c905SEmmanuel Vadot          - const: qcom,mdss-dsi-ctrl
62*2846c905SEmmanuel Vadot
63*2846c905SEmmanuel Vadot  "^phy@[0-9a-f]+$":
64*2846c905SEmmanuel Vadot    type: object
65*2846c905SEmmanuel Vadot    additionalProperties: true
66*2846c905SEmmanuel Vadot    properties:
67*2846c905SEmmanuel Vadot      compatible:
68*2846c905SEmmanuel Vadot        const: qcom,sm6150-dsi-phy-14nm
69*2846c905SEmmanuel Vadot
70*2846c905SEmmanuel VadotunevaluatedProperties: false
71*2846c905SEmmanuel Vadot
72*2846c905SEmmanuel Vadotexamples:
73*2846c905SEmmanuel Vadot  - |
74*2846c905SEmmanuel Vadot    #include <dt-bindings/clock/qcom,rpmh.h>
75*2846c905SEmmanuel Vadot    #include <dt-bindings/interconnect/qcom,icc.h>
76*2846c905SEmmanuel Vadot    #include <dt-bindings/interconnect/qcom,qcs615-rpmh.h>
77*2846c905SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
78*2846c905SEmmanuel Vadot    #include <dt-bindings/power/qcom,rpmhpd.h>
79*2846c905SEmmanuel Vadot
80*2846c905SEmmanuel Vadot    display-subsystem@ae00000 {
81*2846c905SEmmanuel Vadot        #address-cells = <1>;
82*2846c905SEmmanuel Vadot        #size-cells = <1>;
83*2846c905SEmmanuel Vadot        compatible = "qcom,sm6150-mdss";
84*2846c905SEmmanuel Vadot        reg = <0x0ae00000 0x1000>;
85*2846c905SEmmanuel Vadot        reg-names = "mdss";
86*2846c905SEmmanuel Vadot
87*2846c905SEmmanuel Vadot        interconnects = <&mmss_noc MASTER_MDP0 QCOM_ICC_TAG_ALWAYS
88*2846c905SEmmanuel Vadot                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
89*2846c905SEmmanuel Vadot                        <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
90*2846c905SEmmanuel Vadot                         &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
91*2846c905SEmmanuel Vadot        interconnect-names = "mdp0-mem", "cpu-cfg";
92*2846c905SEmmanuel Vadot
93*2846c905SEmmanuel Vadot        power-domains = <&dispcc_mdss_gdsc>;
94*2846c905SEmmanuel Vadot
95*2846c905SEmmanuel Vadot        clocks = <&dispcc_mdss_ahb_clk>,
96*2846c905SEmmanuel Vadot                 <&gcc_disp_hf_axi_clk>,
97*2846c905SEmmanuel Vadot                 <&dispcc_mdss_mdp_clk>;
98*2846c905SEmmanuel Vadot
99*2846c905SEmmanuel Vadot        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
100*2846c905SEmmanuel Vadot        interrupt-controller;
101*2846c905SEmmanuel Vadot        #interrupt-cells = <1>;
102*2846c905SEmmanuel Vadot
103*2846c905SEmmanuel Vadot        iommus = <&apps_smmu 0x800 0x0>;
104*2846c905SEmmanuel Vadot
105*2846c905SEmmanuel Vadot        ranges;
106*2846c905SEmmanuel Vadot
107*2846c905SEmmanuel Vadot        display-controller@ae01000 {
108*2846c905SEmmanuel Vadot            compatible = "qcom,sm6150-dpu";
109*2846c905SEmmanuel Vadot            reg = <0x0ae01000 0x8f000>,
110*2846c905SEmmanuel Vadot                  <0x0aeb0000 0x2008>;
111*2846c905SEmmanuel Vadot            reg-names = "mdp", "vbif";
112*2846c905SEmmanuel Vadot
113*2846c905SEmmanuel Vadot            clocks = <&dispcc_mdss_ahb_clk>,
114*2846c905SEmmanuel Vadot                     <&gcc_disp_hf_axi_clk>,
115*2846c905SEmmanuel Vadot                     <&dispcc_mdss_mdp_clk>,
116*2846c905SEmmanuel Vadot                     <&dispcc_mdss_vsync_clk>;
117*2846c905SEmmanuel Vadot            clock-names = "iface", "bus", "core", "vsync";
118*2846c905SEmmanuel Vadot
119*2846c905SEmmanuel Vadot            assigned-clocks = <&dispcc_mdss_vsync_clk>;
120*2846c905SEmmanuel Vadot            assigned-clock-rates = <19200000>;
121*2846c905SEmmanuel Vadot
122*2846c905SEmmanuel Vadot            operating-points-v2 = <&mdp_opp_table>;
123*2846c905SEmmanuel Vadot            power-domains = <&rpmhpd RPMHPD_CX>;
124*2846c905SEmmanuel Vadot
125*2846c905SEmmanuel Vadot            interrupt-parent = <&mdss>;
126*2846c905SEmmanuel Vadot            interrupts = <0>;
127*2846c905SEmmanuel Vadot
128*2846c905SEmmanuel Vadot            ports {
129*2846c905SEmmanuel Vadot                #address-cells = <1>;
130*2846c905SEmmanuel Vadot                #size-cells = <0>;
131*2846c905SEmmanuel Vadot
132*2846c905SEmmanuel Vadot                port@0 {
133*2846c905SEmmanuel Vadot                  reg = <0>;
134*2846c905SEmmanuel Vadot                  dpu_intf0_out: endpoint {
135*2846c905SEmmanuel Vadot                  };
136*2846c905SEmmanuel Vadot                };
137*2846c905SEmmanuel Vadot
138*2846c905SEmmanuel Vadot                port@1 {
139*2846c905SEmmanuel Vadot                  reg = <1>;
140*2846c905SEmmanuel Vadot                  dpu_intf1_out: endpoint {
141*2846c905SEmmanuel Vadot                      remote-endpoint = <&mdss_dsi0_in>;
142*2846c905SEmmanuel Vadot                  };
143*2846c905SEmmanuel Vadot                };
144*2846c905SEmmanuel Vadot            };
145*2846c905SEmmanuel Vadot
146*2846c905SEmmanuel Vadot            mdp_opp_table: opp-table {
147*2846c905SEmmanuel Vadot                compatible = "operating-points-v2";
148*2846c905SEmmanuel Vadot
149*2846c905SEmmanuel Vadot                opp-19200000 {
150*2846c905SEmmanuel Vadot                  opp-hz = /bits/ 64 <19200000>;
151*2846c905SEmmanuel Vadot                  required-opps = <&rpmhpd_opp_low_svs>;
152*2846c905SEmmanuel Vadot                };
153*2846c905SEmmanuel Vadot
154*2846c905SEmmanuel Vadot                opp-25600000 {
155*2846c905SEmmanuel Vadot                  opp-hz = /bits/ 64 <25600000>;
156*2846c905SEmmanuel Vadot                  required-opps = <&rpmhpd_opp_svs>;
157*2846c905SEmmanuel Vadot                };
158*2846c905SEmmanuel Vadot
159*2846c905SEmmanuel Vadot                opp-307200000 {
160*2846c905SEmmanuel Vadot                  opp-hz = /bits/ 64 <307200000>;
161*2846c905SEmmanuel Vadot                  required-opps = <&rpmhpd_opp_nom>;
162*2846c905SEmmanuel Vadot                };
163*2846c905SEmmanuel Vadot            };
164*2846c905SEmmanuel Vadot        };
165*2846c905SEmmanuel Vadot
166*2846c905SEmmanuel Vadot        dsi@ae94000 {
167*2846c905SEmmanuel Vadot            compatible = "qcom,sm6150-dsi-ctrl",
168*2846c905SEmmanuel Vadot                         "qcom,mdss-dsi-ctrl";
169*2846c905SEmmanuel Vadot            reg = <0x0ae94000 0x400>;
170*2846c905SEmmanuel Vadot            reg-names = "dsi_ctrl";
171*2846c905SEmmanuel Vadot
172*2846c905SEmmanuel Vadot            interrupt-parent = <&mdss>;
173*2846c905SEmmanuel Vadot            interrupts = <4>;
174*2846c905SEmmanuel Vadot
175*2846c905SEmmanuel Vadot            clocks = <&dispcc_mdss_byte0_clk>,
176*2846c905SEmmanuel Vadot                     <&dispcc_mdss_byte0_intf_clk>,
177*2846c905SEmmanuel Vadot                     <&dispcc_mdss_pclk0_clk>,
178*2846c905SEmmanuel Vadot                     <&dispcc_mdss_esc0_clk>,
179*2846c905SEmmanuel Vadot                     <&dispcc_mdss_ahb_clk>,
180*2846c905SEmmanuel Vadot                     <&gcc_disp_hf_axi_clk>;
181*2846c905SEmmanuel Vadot            clock-names = "byte",
182*2846c905SEmmanuel Vadot                          "byte_intf",
183*2846c905SEmmanuel Vadot                          "pixel",
184*2846c905SEmmanuel Vadot                          "core",
185*2846c905SEmmanuel Vadot                          "iface",
186*2846c905SEmmanuel Vadot                          "bus";
187*2846c905SEmmanuel Vadot
188*2846c905SEmmanuel Vadot            assigned-clocks = <&dispcc_mdss_byte0_clk_src>,
189*2846c905SEmmanuel Vadot                              <&dispcc_mdss_pclk0_clk_src>;
190*2846c905SEmmanuel Vadot            assigned-clock-parents = <&mdss_dsi0_phy 0>,
191*2846c905SEmmanuel Vadot                                     <&mdss_dsi0_phy 1>;
192*2846c905SEmmanuel Vadot
193*2846c905SEmmanuel Vadot            operating-points-v2 = <&dsi0_opp_table>;
194*2846c905SEmmanuel Vadot
195*2846c905SEmmanuel Vadot            phys = <&mdss_dsi0_phy>;
196*2846c905SEmmanuel Vadot
197*2846c905SEmmanuel Vadot            #address-cells = <1>;
198*2846c905SEmmanuel Vadot            #size-cells = <0>;
199*2846c905SEmmanuel Vadot
200*2846c905SEmmanuel Vadot            ports {
201*2846c905SEmmanuel Vadot                #address-cells = <1>;
202*2846c905SEmmanuel Vadot                #size-cells = <0>;
203*2846c905SEmmanuel Vadot
204*2846c905SEmmanuel Vadot                port@0 {
205*2846c905SEmmanuel Vadot                    reg = <0>;
206*2846c905SEmmanuel Vadot                    mdss_dsi0_in: endpoint {
207*2846c905SEmmanuel Vadot                        remote-endpoint = <&dpu_intf1_out>;
208*2846c905SEmmanuel Vadot                    };
209*2846c905SEmmanuel Vadot                };
210*2846c905SEmmanuel Vadot
211*2846c905SEmmanuel Vadot                port@1 {
212*2846c905SEmmanuel Vadot                    reg = <1>;
213*2846c905SEmmanuel Vadot                    mdss_dsi0_out: endpoint {
214*2846c905SEmmanuel Vadot                    };
215*2846c905SEmmanuel Vadot                };
216*2846c905SEmmanuel Vadot            };
217*2846c905SEmmanuel Vadot
218*2846c905SEmmanuel Vadot            dsi0_opp_table: opp-table {
219*2846c905SEmmanuel Vadot                compatible = "operating-points-v2";
220*2846c905SEmmanuel Vadot
221*2846c905SEmmanuel Vadot                opp-164000000 {
222*2846c905SEmmanuel Vadot                    opp-hz = /bits/ 64 <164000000>;
223*2846c905SEmmanuel Vadot                    required-opps = <&rpmhpd_opp_low_svs>;
224*2846c905SEmmanuel Vadot                };
225*2846c905SEmmanuel Vadot            };
226*2846c905SEmmanuel Vadot        };
227*2846c905SEmmanuel Vadot
228*2846c905SEmmanuel Vadot        mdss_dsi0_phy: phy@ae94400 {
229*2846c905SEmmanuel Vadot            compatible = "qcom,sm6150-dsi-phy-14nm";
230*2846c905SEmmanuel Vadot            reg = <0x0ae94400 0x100>,
231*2846c905SEmmanuel Vadot                  <0x0ae94500 0x300>,
232*2846c905SEmmanuel Vadot                  <0x0ae94800 0x188>;
233*2846c905SEmmanuel Vadot            reg-names = "dsi_phy",
234*2846c905SEmmanuel Vadot                        "dsi_phy_lane",
235*2846c905SEmmanuel Vadot                        "dsi_pll";
236*2846c905SEmmanuel Vadot
237*2846c905SEmmanuel Vadot            #clock-cells = <1>;
238*2846c905SEmmanuel Vadot            #phy-cells = <0>;
239*2846c905SEmmanuel Vadot
240*2846c905SEmmanuel Vadot            clocks = <&dispcc_mdss_ahb_clk>,
241*2846c905SEmmanuel Vadot                     <&rpmhcc RPMH_CXO_CLK>;
242*2846c905SEmmanuel Vadot            clock-names = "iface", "ref";
243*2846c905SEmmanuel Vadot        };
244*2846c905SEmmanuel Vadot    };
245*2846c905SEmmanuel Vadot...
246