1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (c) 2018, Craig Tatlor.
4 * Copyright (c) 2020, Alexey Minnekhanov <alexey.min@gmail.com>
5 * Copyright (c) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
6 * Copyright (c) 2020, Konrad Dybcio <konradybcio@gmail.com>
7 * Copyright (c) 2020, Martin Botka <martin.botka1@gmail.com>
8 */
9
10#include "sdm630.dtsi"
11
12&adreno_gpu {
13	compatible = "qcom,adreno-512.0", "qcom,adreno";
14	operating-points-v2 = <&gpu_sdm660_opp_table>;
15
16	gpu_sdm660_opp_table: opp-table {
17		compatible = "operating-points-v2";
18
19		/*
20		 * 775MHz is only available on the highest speed bin
21		 * Though it cannot be used for now due to interconnect
22		 * framework not supporting multiple frequencies
23		 * at the same opp-level
24
25		opp-750000000 {
26			opp-hz = /bits/ 64 <750000000>;
27			opp-level = <RPM_SMD_LEVEL_TURBO>;
28			opp-peak-kBps = <5412000>;
29			opp-supported-hw = <0xCHECKME>;
30		};
31
32		* These OPPs are correct, but we are lacking support for the
33		* GPU regulator. Hence, disable them for now to prevent the
34		* platform from hanging on high graphics loads.
35
36		opp-700000000 {
37			opp-hz = /bits/ 64 <700000000>;
38			opp-level = <RPM_SMD_LEVEL_TURBO>;
39			opp-peak-kBps = <5184000>;
40			opp-supported-hw = <0xFF>;
41		};
42
43		opp-647000000 {
44			opp-hz = /bits/ 64 <647000000>;
45			opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
46			opp-peak-kBps = <4068000>;
47			opp-supported-hw = <0xFF>;
48		};
49
50		opp-588000000 {
51			opp-hz = /bits/ 64 <588000000>;
52			opp-level = <RPM_SMD_LEVEL_NOM>;
53			opp-peak-kBps = <3072000>;
54			opp-supported-hw = <0xFF>;
55		};
56
57		opp-465000000 {
58			opp-hz = /bits/ 64 <465000000>;
59			opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
60			opp-peak-kBps = <2724000>;
61			opp-supported-hw = <0xFF>;
62		};
63
64		opp-370000000 {
65			opp-hz = /bits/ 64 <370000000>;
66			opp-level = <RPM_SMD_LEVEL_SVS>;
67			opp-peak-kBps = <2188000>;
68			opp-supported-hw = <0xFF>;
69		};
70		*/
71
72		opp-266000000 {
73			opp-hz = /bits/ 64 <266000000>;
74			opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
75			opp-peak-kBps = <1648000>;
76			opp-supported-hw = <0xFF>;
77		};
78
79		opp-160000000 {
80			opp-hz = /bits/ 64 <160000000>;
81			opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
82			opp-peak-kBps = <1200000>;
83			opp-supported-hw = <0xFF>;
84		};
85	};
86};
87
88&CPU0 {
89	compatible = "qcom,kryo260";
90	capacity-dmips-mhz = <1024>;
91	/delete-property/ operating-points-v2;
92};
93
94&CPU1 {
95	compatible = "qcom,kryo260";
96	capacity-dmips-mhz = <1024>;
97	/delete-property/ operating-points-v2;
98};
99
100&CPU2 {
101	compatible = "qcom,kryo260";
102	capacity-dmips-mhz = <1024>;
103	/delete-property/ operating-points-v2;
104};
105
106&CPU3 {
107	compatible = "qcom,kryo260";
108	capacity-dmips-mhz = <1024>;
109	/delete-property/ operating-points-v2;
110};
111
112&CPU4 {
113	compatible = "qcom,kryo260";
114	capacity-dmips-mhz = <640>;
115	/delete-property/ operating-points-v2;
116};
117
118&CPU5 {
119	compatible = "qcom,kryo260";
120	capacity-dmips-mhz = <640>;
121	/delete-property/ operating-points-v2;
122};
123
124&CPU6 {
125	compatible = "qcom,kryo260";
126	capacity-dmips-mhz = <640>;
127	/delete-property/ operating-points-v2;
128};
129
130&CPU7 {
131	compatible = "qcom,kryo260";
132	capacity-dmips-mhz = <640>;
133	/delete-property/ operating-points-v2;
134};
135
136&gcc {
137	compatible = "qcom,gcc-sdm660";
138};
139
140&gpucc {
141	compatible = "qcom,gpucc-sdm660";
142};
143
144&mdp {
145	ports {
146		port@1 {
147			reg = <1>;
148			mdp5_intf2_out: endpoint {
149				remote-endpoint = <&dsi1_in>;
150			};
151		};
152	};
153};
154
155&mdss {
156	dsi1: dsi@c996000 {
157		compatible = "qcom,mdss-dsi-ctrl";
158		reg = <0x0c996000 0x400>;
159		reg-names = "dsi_ctrl";
160
161		/* DSI1 shares the OPP table with DSI0 */
162		operating-points-v2 = <&dsi_opp_table>;
163		power-domains = <&rpmpd SDM660_VDDCX>;
164
165		interrupt-parent = <&mdss>;
166		interrupts = <5>;
167
168		assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
169					<&mmcc PCLK1_CLK_SRC>;
170		assigned-clock-parents = <&dsi1_phy 0>,
171						<&dsi1_phy 1>;
172
173		clocks = <&mmcc MDSS_MDP_CLK>,
174				<&mmcc MDSS_BYTE1_CLK>,
175				<&mmcc MDSS_BYTE1_INTF_CLK>,
176				<&mmcc MNOC_AHB_CLK>,
177				<&mmcc MDSS_AHB_CLK>,
178				<&mmcc MDSS_AXI_CLK>,
179				<&mmcc MISC_AHB_CLK>,
180				<&mmcc MDSS_PCLK1_CLK>,
181				<&mmcc MDSS_ESC1_CLK>;
182		clock-names = "mdp_core",
183					"byte",
184					"byte_intf",
185					"mnoc",
186					"iface",
187					"bus",
188					"core_mmss",
189					"pixel",
190					"core";
191
192		phys = <&dsi1_phy>;
193		phy-names = "dsi";
194
195		status = "disabled";
196
197		ports {
198			#address-cells = <1>;
199			#size-cells = <0>;
200
201			port@0 {
202				reg = <0>;
203				dsi1_in: endpoint {
204					remote-endpoint = <&mdp5_intf2_out>;
205				};
206			};
207
208			port@1 {
209				reg = <1>;
210				dsi1_out: endpoint {
211				};
212			};
213		};
214	};
215
216	dsi1_phy: dsi-phy@c996400 {
217		compatible = "qcom,dsi-phy-14nm-660";
218		reg = <0x0c996400 0x100>,
219				<0x0c996500 0x300>,
220				<0x0c996800 0x188>;
221		reg-names = "dsi_phy",
222				"dsi_phy_lane",
223				"dsi_pll";
224
225		#clock-cells = <1>;
226		#phy-cells = <0>;
227
228		clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_XO_CLK_SRC>;
229		clock-names = "iface", "ref";
230		status = "disabled";
231	};
232};
233
234&mmcc {
235	compatible = "qcom,mmcc-sdm660";
236	clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
237			<&sleep_clk>,
238			<&gcc GCC_MMSS_GPLL0_CLK>,
239			<&gcc GCC_MMSS_GPLL0_DIV_CLK>,
240			<&dsi0_phy 1>,
241			<&dsi0_phy 0>,
242			<&dsi1_phy 1>,
243			<&dsi1_phy 0>,
244			<0>,
245			<0>;
246};
247
248&tlmm {
249	compatible = "qcom,sdm660-pinctrl";
250};
251
252&tsens {
253	#qcom,sensors = <14>;
254};
255