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 IRQ_TYPE_LEVEL_HIGH>;
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		ports {
196			#address-cells = <1>;
197			#size-cells = <0>;
198
199			port@0 {
200				reg = <0>;
201				dsi1_in: endpoint {
202					remote-endpoint = <&mdp5_intf2_out>;
203				};
204			};
205
206			port@1 {
207				reg = <1>;
208				dsi1_out: endpoint {
209				};
210			};
211		};
212	};
213
214	dsi1_phy: dsi-phy@c996400 {
215		compatible = "qcom,dsi-phy-14nm-660";
216		reg = <0x0c996400 0x100>,
217				<0x0c996500 0x300>,
218				<0x0c996800 0x188>;
219		reg-names = "dsi_phy",
220				"dsi_phy_lane",
221				"dsi_pll";
222
223		#clock-cells = <1>;
224		#phy-cells = <0>;
225
226		clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_XO_CLK_SRC>;
227		clock-names = "iface", "ref";
228	};
229};
230
231&mmcc {
232	compatible = "qcom,mmcc-sdm660";
233	clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
234			<&sleep_clk>,
235			<&gcc GCC_MMSS_GPLL0_CLK>,
236			<&gcc GCC_MMSS_GPLL0_DIV_CLK>,
237			<&dsi0_phy 1>,
238			<&dsi0_phy 0>,
239			<&dsi1_phy 1>,
240			<&dsi1_phy 0>,
241			<0>,
242			<0>;
243};
244
245&tlmm {
246	compatible = "qcom,sdm660-pinctrl";
247};
248
249&tsens {
250	#qcom,sensors = <14>;
251};
252