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	compatible = "qcom,sdm660-mdp5", "qcom,mdp5";
146
147	ports {
148		port@1 {
149			reg = <1>;
150			mdp5_intf2_out: endpoint {
151				remote-endpoint = <&dsi1_in>;
152			};
153		};
154	};
155};
156
157&mdss {
158	dsi1: dsi@c996000 {
159		compatible = "qcom,sdm660-dsi-ctrl",
160			     "qcom,mdss-dsi-ctrl";
161		reg = <0x0c996000 0x400>;
162		reg-names = "dsi_ctrl";
163
164		/* DSI1 shares the OPP table with DSI0 */
165		operating-points-v2 = <&dsi_opp_table>;
166		power-domains = <&rpmpd SDM660_VDDCX>;
167
168		interrupt-parent = <&mdss>;
169		interrupts = <5>;
170
171		assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
172					<&mmcc PCLK1_CLK_SRC>;
173		assigned-clock-parents = <&dsi1_phy 0>,
174						<&dsi1_phy 1>;
175
176		clocks = <&mmcc MDSS_MDP_CLK>,
177				<&mmcc MDSS_BYTE1_CLK>,
178				<&mmcc MDSS_BYTE1_INTF_CLK>,
179				<&mmcc MNOC_AHB_CLK>,
180				<&mmcc MDSS_AHB_CLK>,
181				<&mmcc MDSS_AXI_CLK>,
182				<&mmcc MISC_AHB_CLK>,
183				<&mmcc MDSS_PCLK1_CLK>,
184				<&mmcc MDSS_ESC1_CLK>;
185		clock-names = "mdp_core",
186					"byte",
187					"byte_intf",
188					"mnoc",
189					"iface",
190					"bus",
191					"core_mmss",
192					"pixel",
193					"core";
194
195		phys = <&dsi1_phy>;
196
197		status = "disabled";
198
199		ports {
200			#address-cells = <1>;
201			#size-cells = <0>;
202
203			port@0 {
204				reg = <0>;
205				dsi1_in: endpoint {
206					remote-endpoint = <&mdp5_intf2_out>;
207				};
208			};
209
210			port@1 {
211				reg = <1>;
212				dsi1_out: endpoint {
213				};
214			};
215		};
216	};
217
218	dsi1_phy: phy@c996400 {
219		compatible = "qcom,dsi-phy-14nm-660";
220		reg = <0x0c996400 0x100>,
221				<0x0c996500 0x300>,
222				<0x0c996800 0x188>;
223		reg-names = "dsi_phy",
224				"dsi_phy_lane",
225				"dsi_pll";
226
227		#clock-cells = <1>;
228		#phy-cells = <0>;
229
230		clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_XO_CLK_SRC>;
231		clock-names = "iface", "ref";
232		status = "disabled";
233	};
234};
235
236&mmcc {
237	compatible = "qcom,mmcc-sdm660";
238	clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
239			<&sleep_clk>,
240			<&gcc GCC_MMSS_GPLL0_CLK>,
241			<&gcc GCC_MMSS_GPLL0_DIV_CLK>,
242			<&dsi0_phy 1>,
243			<&dsi0_phy 0>,
244			<&dsi1_phy 1>,
245			<&dsi1_phy 0>,
246			<0>,
247			<0>;
248};
249
250&tlmm {
251	compatible = "qcom,sdm660-pinctrl";
252};
253
254&tsens {
255	#qcom,sensors = <14>;
256};
257