xref: /linux/arch/arm64/boot/dts/qcom/msm8976-longcheer-l9360.dts (revision db4a3f0fbedb0398f77b9047e8b8bb2b49f355bb)
1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2025, André Apitzsch <git@apitzsch.eu>
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/leds/common.h>
9
10#include "msm8976.dtsi"
11#include "pm8004.dtsi"
12#include "pm8950.dtsi"
13
14/ {
15	model = "BQ Aquaris X5 Plus (Longcheer L9360)";
16	compatible = "longcheer,l9360", "qcom,msm8976";
17	chassis-type = "handset";
18
19	aliases {
20		mmc0 = &sdhc_1; /* SDC1 eMMC slot */
21		mmc1 = &sdhc_2; /* SDC2 SD card slot */
22	};
23
24	chosen {
25		#address-cells = <2>;
26		#size-cells = <2>;
27		ranges;
28
29		framebuffer0: framebuffer@83200000 {
30			compatible = "simple-framebuffer";
31			reg = <0x0 0x83200000 0x0 (1080 * 1920 * 3)>;
32			width = <1080>;
33			height = <1920>;
34			stride = <(1080 * 3)>;
35			format = "r8g8b8";
36
37			power-domains = <&gcc MDSS_GDSC>;
38
39			clocks = <&gcc GCC_MDSS_AHB_CLK>,
40				 <&gcc GCC_MDSS_AXI_CLK>,
41				 <&gcc GCC_MDSS_VSYNC_CLK>,
42				 <&gcc GCC_MDSS_MDP_CLK>,
43				 <&gcc GCC_MDSS_BYTE0_CLK>,
44				 <&gcc GCC_MDSS_PCLK0_CLK>,
45				 <&gcc GCC_MDSS_ESC0_CLK>;
46		};
47	};
48
49	gpio-keys {
50		compatible = "gpio-keys";
51
52		pinctrl-0 = <&hall_sensor_default>, <&volume_up_default>;
53		pinctrl-names = "default";
54
55		event-hall-sensor {
56			label = "Hall Effect Sensor";
57			gpios = <&tlmm 107 GPIO_ACTIVE_HIGH>;
58			linux,input-type = <EV_SW>;
59			linux,code = <SW_LID>;
60			linux,can-disable;
61			wakeup-source;
62		};
63
64		key-volume-up {
65			label = "Volume Up";
66			gpios = <&tlmm 113 GPIO_ACTIVE_LOW>;
67			linux,code = <KEY_VOLUMEUP>;
68		};
69	};
70
71	leds {
72		compatible = "gpio-leds";
73
74		led-0 {
75			gpios = <&tlmm 101 GPIO_ACTIVE_HIGH>;
76			color = <LED_COLOR_ID_WHITE>;
77			default-state = "off";
78			function = LED_FUNCTION_KBD_BACKLIGHT;
79
80			pinctrl-0 = <&button_backlight_default>;
81			pinctrl-names = "default";
82		};
83	};
84
85	reg_ts_vdd: regulator-vdd-ts {
86		compatible = "regulator-fixed";
87		regulator-name = "regulator-vdd-ts";
88
89		gpio = <&tlmm 33 GPIO_ACTIVE_HIGH>;
90		enable-active-high;
91	};
92
93	reserved-memory {
94		framebuffer@83000000 {
95			reg = <0x0 0x83000000 0x0 0x2800000>;
96			no-map;
97		};
98	};
99
100	vph_pwr: regulator-vph-pwr {
101		compatible = "regulator-fixed";
102		regulator-name = "vph-pwr";
103		regulator-always-on;
104		regulator-boot-on;
105	};
106};
107
108&blsp1_i2c2 {
109	status = "okay";
110
111	led-controller@30 {
112		compatible = "kinetic,ktd2026";
113		reg = <0x30>;
114		#address-cells = <1>;
115		#size-cells = <0>;
116
117		multi-led {
118			color = <LED_COLOR_ID_RGB>;
119			function = LED_FUNCTION_STATUS;
120
121			#address-cells = <1>;
122			#size-cells = <0>;
123
124			led@0 {
125				reg = <0>;
126				color = <LED_COLOR_ID_RED>;
127			};
128
129			led@1 {
130				reg = <1>;
131				color = <LED_COLOR_ID_GREEN>;
132			};
133
134			led@2 {
135				reg = <2>;
136				color = <LED_COLOR_ID_BLUE>;
137			};
138		};
139	};
140};
141
142&blsp1_i2c4 {
143	status = "okay";
144
145	nfc@28 {
146		compatible = "nxp,pn547", "nxp,nxp-nci-i2c";
147		reg = <0x28>;
148
149		interrupts-extended = <&tlmm 140 IRQ_TYPE_EDGE_RISING>;
150
151		enable-gpios = <&tlmm 122 GPIO_ACTIVE_HIGH>;
152		firmware-gpios = <&tlmm 109 GPIO_ACTIVE_HIGH>;
153
154		pinctrl-0 = <&nfc_default>;
155		pinctrl-1 = <&nfc_sleep>;
156		pinctrl-names = "default", "sleep";
157	};
158};
159
160&blsp2_i2c2 {
161	status = "okay";
162
163	touchscreen@20 {
164		reg = <0x20>;
165		compatible = "syna,rmi4-i2c";
166
167		interrupts-extended = <&tlmm 65 IRQ_TYPE_EDGE_FALLING>;
168
169		pinctrl-0 = <&ts_int_default>, <&ts_reset_default>;
170		pinctrl-1 = <&ts_int_sleep>, <&ts_reset_sleep>;
171		pinctrl-names = "default", "sleep";
172
173		vdd-supply = <&pm8950_l6>;
174		vio-supply = <&reg_ts_vdd>;
175
176		reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
177
178		syna,reset-delay-ms = <200>;
179		syna,startup-delay-ms = <200>;
180
181		#address-cells = <1>;
182		#size-cells = <0>;
183
184		rmi4-f01@1 {
185			reg = <0x1>;
186			syna,nosleep-mode = <1>;
187		};
188
189		rmi4-f12@12 {
190			reg = <0x12>;
191			syna,sensor-type = <1>;
192		};
193
194		rmi4-f1a@1a {
195			reg = <0x1a>;
196			/* Keys listed from right to left */
197			linux,keycodes = <KEY_APPSELECT KEY_HOMEPAGE KEY_BACK>;
198		};
199	};
200};
201
202&blsp2_uart2 {
203	status = "okay";
204};
205
206&gcc {
207	vdd_gfx-supply = <&pm8004_s5>;
208};
209
210&pm8004_spmi_regulators {
211	vdd_s2-supply = <&vph_pwr>;
212	vdd_s5-supply = <&vph_pwr>;
213
214	/* Cluster 1 supply */
215	pm8004_s2: s2 {
216		/* regulator-min-microvolt = <500000>; */
217		/* Set .95V to prevent unstabilities until CPR for this SoC is done */
218		regulator-min-microvolt = <950000>;
219		regulator-max-microvolt = <1165000>;
220		regulator-name = "vdd_apc1";
221		/* Set always on until the CPU PLL is done */
222		regulator-always-on;
223		regulator-boot-on;
224	};
225
226	pm8004_s5: s5 {
227		regulator-min-microvolt = <950000>;
228		regulator-max-microvolt = <1165000>;
229		regulator-enable-ramp-delay = <500>;
230		regulator-name = "vdd_gfx";
231		/* Hack this on until the gpu driver is ready for it */
232		regulator-always-on;
233	};
234};
235
236&pm8950_resin {
237	linux,code = <KEY_VOLUMEDOWN>;
238	status = "okay";
239};
240
241&pm8950_spmi_regulators {
242	vdd_s5-supply = <&vph_pwr>;
243
244	/* Cluster 0 supply */
245	pm8950_spmi_s5: s5 {
246		/* Set .95V to prevent unstabilities until CPR for this SoC is done */
247		/* regulator-min-microvolt = <500000>; */
248		regulator-min-microvolt = <950000>;
249		regulator-max-microvolt = <1165000>;
250		regulator-name = "vdd_apc0";
251		/* Set always on until the CPU PLL is done */
252		regulator-always-on;
253		regulator-boot-on;
254	};
255};
256
257&rpm_requests {
258	pm8950_regulators: regulators {
259		compatible = "qcom,rpm-pm8950-regulators";
260
261		vdd_s1-supply = <&vph_pwr>;
262		vdd_s2-supply = <&vph_pwr>;
263		vdd_s3-supply = <&vph_pwr>;
264		vdd_s4-supply = <&vph_pwr>;
265		vdd_s6-supply = <&vph_pwr>;
266		vdd_l1_l19-supply = <&pm8950_s3>;
267		vdd_l2_l23-supply = <&pm8950_s3>;
268		vdd_l3-supply = <&pm8950_s3>;
269		vdd_l5_l6_l7_l16-supply = <&pm8950_s4>;
270		vdd_l8_l11_l12_l17_l22-supply = <&vph_pwr>;
271
272		pm8950_s1: s1 {
273			regulator-min-microvolt = <1000000>;
274			regulator-max-microvolt = <1162500>;
275		};
276
277		pm8950_s3: s3 {
278			regulator-min-microvolt = <1325000>;
279			regulator-max-microvolt = <1325000>;
280		};
281
282		pm8950_s4: s4 {
283			regulator-min-microvolt = <2050000>;
284			regulator-max-microvolt = <2050000>;
285		};
286
287		pm8950_l1: l1 {
288			regulator-min-microvolt = <1200000>;
289			regulator-max-microvolt = <1200000>;
290		};
291
292		pm8950_l2: l2 {
293			regulator-min-microvolt = <1200000>;
294			regulator-max-microvolt = <1200000>;
295		};
296
297		pm8950_l3: l3 {
298			regulator-min-microvolt = <1000000>;
299			regulator-max-microvolt = <1100000>;
300		};
301
302		pm8950_l5: l5 {
303			regulator-min-microvolt = <1800000>;
304			regulator-max-microvolt = <1800000>;
305		};
306
307		pm8950_l6: l6 {
308			regulator-min-microvolt = <1800000>;
309			regulator-max-microvolt = <1800000>;
310		};
311
312		pm8950_l7: l7 {
313			regulator-min-microvolt = <1800000>;
314			regulator-max-microvolt = <1800000>;
315		};
316
317		pm8950_l8: l8 {
318			regulator-min-microvolt = <2900000>;
319			regulator-max-microvolt = <2900000>;
320		};
321
322		pm8950_l9: l9 {
323			regulator-min-microvolt = <3000000>;
324			regulator-max-microvolt = <3300000>;
325		};
326
327		pm8950_l10: l10 {
328			regulator-min-microvolt = <2800000>;
329			regulator-max-microvolt = <2800000>;
330		};
331
332		pm8950_l11: l11 {
333			regulator-min-microvolt = <2950000>;
334			regulator-max-microvolt = <2950000>;
335		};
336
337		pm8950_l12: l12 {
338			regulator-min-microvolt = <1800000>;
339			regulator-max-microvolt = <2950000>;
340		};
341
342		pm8950_l13: l13 {
343			regulator-min-microvolt = <3075000>;
344			regulator-max-microvolt = <3075000>;
345		};
346
347		pm8950_l14: l14 {
348			regulator-min-microvolt = <1800000>;
349			regulator-max-microvolt = <3300000>;
350		};
351
352		pm8950_l15: l15 {
353			regulator-min-microvolt = <1800000>;
354			regulator-max-microvolt = <3300000>;
355		};
356
357		pm8950_l16: l16 {
358			regulator-min-microvolt = <1800000>;
359			regulator-max-microvolt = <1800000>;
360		};
361
362		pm8950_l17: l17 {
363			regulator-min-microvolt = <2850000>;
364			regulator-max-microvolt = <2850000>;
365		};
366
367		pm8950_l19: l19 {
368			regulator-min-microvolt = <1200000>;
369			regulator-max-microvolt = <1350000>;
370		};
371
372		pm8950_l22: l22 {
373			regulator-min-microvolt = <2800000>;
374			regulator-max-microvolt = <2800000>;
375		};
376
377		pm8950_l23: l23 {
378			regulator-min-microvolt = <1200000>;
379			regulator-max-microvolt = <1200000>;
380		};
381	};
382};
383
384&sdhc_1 {
385	bus-width = <8>;
386	non-removable;
387	vmmc-supply = <&pm8950_l8>;
388	vqmmc-supply = <&pm8950_l5>;
389	status = "okay";
390};
391
392&sdhc_2 {
393	bus-width = <4>;
394	cd-gpios = <&tlmm 100 GPIO_ACTIVE_LOW>;
395	vmmc-supply = <&pm8950_l11>;
396	vqmmc-supply = <&pm8950_l12>;
397
398	pinctrl-0 = <&sdc2_default>, <&sdc2_cd_default>;
399	pinctrl-1 = <&sdc2_sleep>, <&sdc2_cd_sleep>;
400	pinctrl-names = "default", "sleep";
401
402	status = "okay";
403};
404
405&tlmm {
406	gpio-reserved-ranges = <0 4>;
407
408	button_backlight_default: button-backlight-default-state {
409		pins = "gpio101";
410		function = "gpio";
411		drive-strength = <2>;
412		bias-disable;
413	};
414
415	hall_sensor_default: hall-sensor-default-state {
416		pins = "gpio107";
417		function = "gpio";
418		drive-strength = <6>;
419		bias-pull-up;
420	};
421
422	nfc_default: nfc-default-state {
423		pins = "gpio122", "gpio140";
424		function = "gpio";
425		drive-strength = <6>;
426		bias-pull-up;
427	};
428
429	nfc_sleep: nfc-sleep-state {
430		int-pins {
431			pins = "gpio140";
432			function = "gpio";
433			drive-strength = <6>;
434			bias-pull-up;
435		};
436		ven-pins {
437			pins = "gpio122";
438			function = "gpio";
439			drive-strength = <6>;
440			bias-disable;
441		};
442	};
443
444	sdc2_cd_default: sdc2-cd-default-state {
445		pins = "gpio100";
446		function = "gpio";
447		drive-strength = <2>;
448		bias-pull-up;
449	};
450
451	sdc2_cd_sleep: sdc2-cd-sleep-state {
452		pins = "gpio100";
453		function = "gpio";
454		drive-strength = <2>;
455		bias-disable;
456	};
457
458	ts_int_default: ts-int-state {
459		pins = "gpio65";
460		function = "gpio";
461		drive-strength = <2>;
462		bias-pull-down;
463	};
464
465	ts_int_sleep: ts-int-state {
466		pins = "gpio65";
467		function = "gpio";
468		drive-strength = <2>;
469		bias-pull-up;
470	};
471
472	ts_reset_default: ts-reset-state {
473		pins = "gpio64";
474		function = "gpio";
475		drive-strength = <8>;
476		bias-pull-up;
477	};
478
479	ts_reset_sleep: ts-sleep-state {
480		pins = "gpio64";
481		function = "gpio";
482		drive-strength = <2>;
483		bias-pull-down;
484	};
485
486	volume_up_default: volume-up-default-state {
487		pins = "gpio113";
488		function = "gpio";
489		drive-strength = <2>;
490		bias-pull-up;
491	};
492};
493
494&xo_board {
495	clock-frequency = <19200000>;
496};
497