xref: /linux/arch/arm64/boot/dts/exynos/exynos7870-a2corelte.dts (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Samsung Galaxy A2 Core (a2corelte) device tree source
4 *
5 * Copyright (c) 2018 Samsung Electronics Co., Ltd.
6 * Copyright (c) 2025 Kaustabh Chakraborty <kauschluss@disroot.org>
7 */
8
9/dts-v1/;
10#include "exynos7870.dtsi"
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/input/input.h>
13#include <dt-bindings/interrupt-controller/irq.h>
14
15/ {
16	model = "Samsung Galaxy A2 Core";
17	compatible = "samsung,a2corelte", "samsung,exynos7870";
18	chassis-type = "handset";
19
20	aliases {
21		mmc0 = &mmc0;
22		mmc1 = &mmc1;
23		mmc2 = &mmc2;
24		serial0 = &serial0;
25		serial1 = &serial1;
26		serial2 = &serial2;
27	};
28
29	chosen {
30		#address-cells = <2>;
31		#size-cells = <1>;
32		ranges;
33
34		stdout-path = &serial2;
35
36		framebuffer@67000000 {
37			compatible = "simple-framebuffer";
38			reg = <0x0 0x67000000 (540 * 960 * 4)>;
39			width = <540>;
40			height = <960>;
41			stride = <(540 * 4)>;
42			format = "a8r8g8b8";
43		};
44	};
45
46	gpio-keys {
47		compatible = "gpio-keys";
48		label = "GPIO Keys";
49
50		pinctrl-names = "default";
51		pinctrl-0 = <&key_power &key_voldown &key_volup>;
52
53		key-power {
54			label = "Power Key";
55			gpios = <&gpa0 0 GPIO_ACTIVE_LOW>;
56			linux,code = <KEY_POWER>;
57		};
58
59		key-voldown {
60			label = "Volume Down Key";
61			gpios = <&gpa2 1 GPIO_ACTIVE_LOW>;
62			linux,code = <KEY_VOLUMEDOWN>;
63		};
64
65		key-volup {
66			label = "Volume Up Key";
67			gpios = <&gpa2 0 GPIO_ACTIVE_LOW>;
68			linux,code = <KEY_VOLUMEUP>;
69		};
70	};
71
72	memory@40000000 {
73		device_type = "memory";
74		reg = <0x0 0x40000000 0x3f200000>;
75	};
76
77	pwrseq_mmc1: pwrseq-mmc1 {
78		compatible = "mmc-pwrseq-simple";
79		reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>;
80	};
81
82	/* mmc2: vmmc */
83	vdd_fixed_mmc2: regulator-fixed-mmc2 {
84		compatible = "regulator-fixed";
85		regulator-name = "vdd_fixed_mmc2";
86		regulator-max-microvolt = <2800000>;
87		regulator-min-microvolt = <2800000>;
88		gpio = <&gpc0 0 GPIO_ACTIVE_HIGH>;
89		enable-active-high;
90	};
91
92	vdd_fixed_proxled: regulator-fixed-proxled {
93		compatible = "regulator-fixed";
94		regulator-name = "vdd_fixed_proxled";
95		regulator-boot-on;
96		regulator-always-on;
97		gpio = <&gpd4 3 GPIO_ACTIVE_HIGH>;
98		enable-active-high;
99	};
100
101	reserved-memory {
102		#address-cells = <2>;
103		#size-cells = <1>;
104		ranges;
105
106		ramoops@46800000 {
107			compatible = "ramoops";
108			reg = <0x0 0x46800000 0x8000>;
109			console-size = <0x4000>;
110			pmsg-size = <0x4000>;
111		};
112
113		framebuffer@67000000 {
114			reg = <0x0 0x67000000 (540 * 960 * 4)>;
115			no-map;
116		};
117	};
118
119	vibrator {
120		compatible = "regulator-haptic";
121		haptic-supply = <&vdd_ldo32>;
122		min-microvolt = <3300000>;
123		max-microvolt = <3300000>;
124	};
125};
126
127&gpu {
128	status = "okay";
129};
130
131&hsi2c0 {
132	#address-cells = <1>;
133	#size-cells = <0>;
134
135	status = "okay";
136
137	pmic@66 {
138		compatible = "samsung,s2mpu05-pmic";
139		reg = <0x66>;
140		interrupt-parent = <&gpa0>;
141		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
142
143		pinctrl-names = "default";
144		pinctrl-0 = <&pmic_irq>;
145
146		regulators {
147			vdd_buck1: buck1 {
148				regulator-name = "vdd_buck1";
149				regulator-min-microvolt = <500000>;
150				regulator-max-microvolt = <1300000>;
151				regulator-ramp-delay = <12000>;
152				regulator-boot-on;
153				regulator-always-on;
154			};
155
156			vdd_buck2: buck2 {
157				regulator-name = "vdd_buck2";
158				regulator-min-microvolt = <500000>;
159				regulator-max-microvolt = <1300000>;
160				regulator-ramp-delay = <12000>;
161				regulator-boot-on;
162				regulator-always-on;
163			};
164
165			vdd_buck3: buck3 {
166				regulator-name = "vdd_buck3";
167				regulator-min-microvolt = <500000>;
168				regulator-max-microvolt = <1300000>;
169				regulator-ramp-delay = <12000>;
170				regulator-boot-on;
171				regulator-always-on;
172			};
173
174			vdd_buck4: buck4 {
175				regulator-name = "vdd_buck4";
176				regulator-min-microvolt = <1200000>;
177				regulator-max-microvolt = <1500000>;
178				regulator-ramp-delay = <12000>;
179				regulator-boot-on;
180				regulator-always-on;
181			};
182
183			vdd_buck5: buck5 {
184				regulator-name = "vdd_buck5";
185				regulator-min-microvolt = <1800000>;
186				regulator-max-microvolt = <2100000>;
187				regulator-ramp-delay = <12000>;
188				regulator-boot-on;
189				regulator-always-on;
190			};
191
192			vdd_ldo1: ldo1 {
193				regulator-name = "vdd_ldo1";
194				regulator-min-microvolt = <650000>;
195				regulator-max-microvolt = <1350000>;
196				regulator-ramp-delay = <12000>;
197				regulator-boot-on;
198				regulator-always-on;
199			};
200
201			/* mmc2: vqmmc */
202			vdd_ldo2: ldo2 {
203				regulator-name = "vdd_ldo2";
204				regulator-min-microvolt = <1800000>;
205				regulator-max-microvolt = <2800000>;
206				regulator-ramp-delay = <12000>;
207			};
208
209			vdd_ldo3: ldo3 {
210				regulator-name = "vdd_ldo3";
211				regulator-min-microvolt = <800000>;
212				regulator-max-microvolt = <2375000>;
213				regulator-ramp-delay = <12000>;
214				regulator-boot-on;
215				regulator-always-on;
216			};
217
218			vdd_ldo4: ldo4 {
219				regulator-name = "vdd_ldo4";
220				regulator-min-microvolt = <800000>;
221				regulator-max-microvolt = <1350000>;
222				regulator-ramp-delay = <12000>;
223				regulator-boot-on;
224				regulator-always-on;
225			};
226
227			vdd_ldo5: ldo5 {
228				regulator-name = "vdd_ldo5";
229				regulator-min-microvolt = <800000>;
230				regulator-max-microvolt = <1350000>;
231				regulator-ramp-delay = <12000>;
232				regulator-boot-on;
233				regulator-always-on;
234			};
235
236			vdd_ldo6: ldo6 {
237				regulator-name = "vdd_ldo6";
238				regulator-min-microvolt = <800000>;
239				regulator-max-microvolt = <1350000>;
240				regulator-ramp-delay = <12000>;
241				regulator-boot-on;
242				regulator-always-on;
243			};
244
245			vdd_ldo7: ldo7 {
246				regulator-name = "vdd_ldo7";
247				regulator-min-microvolt = <800000>;
248				regulator-max-microvolt = <2375000>;
249				regulator-ramp-delay = <12000>;
250				regulator-boot-on;
251				regulator-always-on;
252			};
253
254			/* usbdrd: vdd33 */
255			vdd_ldo8: ldo8 {
256				regulator-name = "vdd_ldo8";
257				regulator-min-microvolt = <1800000>;
258				regulator-max-microvolt = <3375000>;
259				regulator-ramp-delay = <12000>;
260			};
261
262			vdd_ldo9: ldo9 {
263				regulator-name = "vdd_ldo9";
264				regulator-min-microvolt = <650000>;
265				regulator-max-microvolt = <1350000>;
266				regulator-ramp-delay = <12000>;
267				regulator-boot-on;
268				regulator-always-on;
269			};
270
271			vdd_ldo10: ldo10 {
272				regulator-name = "vdd_ldo10";
273				regulator-min-microvolt = <650000>;
274				regulator-max-microvolt = <1350000>;
275				regulator-ramp-delay = <12000>;
276				regulator-boot-on;
277				regulator-always-on;
278			};
279
280			vdd_ldo25: ldo25 {
281				regulator-name = "vdd_ldo25";
282				regulator-min-microvolt = <800000>;
283				regulator-max-microvolt = <2375000>;
284				regulator-ramp-delay = <12000>;
285				regulator-boot-on;
286				regulator-always-on;
287			};
288
289			/* mmc0: vmmc */
290			vdd_ldo26: ldo26 {
291				regulator-name = "vdd_ldo26";
292				regulator-min-microvolt = <1800000>;
293				regulator-max-microvolt = <3375000>;
294				regulator-ramp-delay = <12000>;
295			};
296
297			/* mmc0: vqmmc */
298			vdd_ldo27: ldo27 {
299				regulator-name = "vdd_ldo27";
300				regulator-min-microvolt = <800000>;
301				regulator-max-microvolt = <2375000>;
302				regulator-ramp-delay = <12000>;
303			};
304
305			vdd_ldo29: ldo29 {
306				regulator-name = "vdd_ldo29";
307				regulator-min-microvolt = <3300000>;
308				regulator-max-microvolt = <3300000>;
309				regulator-boot-on;
310				regulator-always-on;
311			};
312
313			vdd_ldo30: ldo30 {
314				regulator-name = "vdd_ldo30";
315				regulator-min-microvolt = <1800000>;
316				regulator-max-microvolt = <1800000>;
317				regulator-boot-on;
318				regulator-always-on;
319			};
320
321			vdd_ldo31: ldo31 {
322				regulator-name = "vdd_ldo31";
323				regulator-min-microvolt = <2800000>;
324				regulator-max-microvolt = <2800000>;
325				regulator-ramp-delay = <12000>;
326				regulator-boot-on;
327				regulator-always-on;
328			};
329
330			/* vibrator: haptic */
331			vdd_ldo32: ldo32 {
332				regulator-name = "vdd_ldo32";
333				regulator-min-microvolt = <3300000>;
334				regulator-max-microvolt = <3300000>;
335				regulator-ramp-delay = <12000>;
336			};
337
338			vdd_ldo33: ldo33 {
339				regulator-name = "vdd_ldo33";
340				regulator-min-microvolt = <1800000>;
341				regulator-max-microvolt = <1800000>;
342				regulator-ramp-delay = <12000>;
343				regulator-boot-on;
344				regulator-always-on;
345			};
346
347			vdd_ldo34: ldo34 {
348				regulator-name = "vdd_ldo34";
349				regulator-min-microvolt = <1800000>;
350				regulator-max-microvolt = <1800000>;
351				regulator-ramp-delay = <12000>;
352				regulator-boot-on;
353				regulator-always-on;
354			};
355
356			/* touchscreen: vdd */
357			vdd_ldo35: ldo35 {
358				regulator-name = "vdd_ldo35";
359				regulator-min-microvolt = <2800000>;
360				regulator-max-microvolt = <2800000>;
361				regulator-ramp-delay = <12000>;
362			};
363		};
364	};
365};
366
367&i2c5 {
368	#address-cells = <1>;
369	#size-cells = <0>;
370
371	samsung,i2c-sda-delay = <100>;
372	samsung,i2c-max-bus-freq = <400000>;
373
374	status = "okay";
375
376	accelerometer@1d {
377		compatible = "st,lis2ds12";
378		reg = <0x1d>;
379		interrupt-parent = <&gpa2>;
380		interrupts = <3 IRQ_TYPE_EDGE_RISING>;
381
382		pinctrl-names = "default";
383		pinctrl-0 = <&accel_irq>;
384
385		st,drdy-int-pin = <1>;
386	};
387
388	proximity@48 {
389		compatible = "sensortek,stk3013", "sensortek,stk3310";
390		reg = <0x48>;
391		interrupt-parent = <&gpa0>;
392		interrupts = <5 IRQ_TYPE_EDGE_BOTH>;
393
394		pinctrl-names = "default";
395		pinctrl-0 = <&proxm_irq>;
396
397		proximity-near-level = <25>;
398	};
399};
400
401&i2c6 {
402	#address-cells = <1>;
403	#size-cells = <0>;
404
405	samsung,i2c-sda-delay = <100>;
406	samsung,i2c-max-bus-freq = <400000>;
407
408	status = "okay";
409
410	touchscreen@4b {
411		compatible = "syna,rmi4-i2c";
412		reg = <0x4b>;
413		interrupt-parent = <&gpa0>;
414		interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
415		#address-cells = <1>;
416		#size-cells = <0>;
417
418		pinctrl-names = "default";
419		pinctrl-0 = <&touch_irq>;
420
421		vdd-supply = <&vdd_ldo35>;
422
423		syna,reset-delay-ms = <200>;
424		syna,startup-delay-ms = <200>;
425
426		rmi4-f01@1 {
427			reg = <0x01>;
428			syna,nosleep-mode = <1>;
429		};
430
431		rmi4-f12@12 {
432			reg = <0x12>;
433			syna,sensor-type = <1>;
434			syna,rezero-wait-ms = <200>;
435			syna,clip-x-high = <539>;
436			syna,clip-y-high = <959>;
437			touchscreen-x-mm = <62>;
438			touchscreen-y-mm = <110>;
439		};
440	};
441};
442
443&mmc0 {
444	pinctrl-names = "default";
445	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_rdqs &sd0_bus1 &sd0_bus4 &sd0_bus8>;
446
447	vmmc-supply = <&vdd_ldo26>;
448	vqmmc-supply = <&vdd_ldo27>;
449
450	fifo-depth = <64>;
451	samsung,dw-mshc-ciu-div = <3>;
452	samsung,dw-mshc-sdr-timing = <0 4>;
453	samsung,dw-mshc-ddr-timing = <2 4>;
454	non-removable;
455
456	status = "okay";
457};
458
459&mmc1 {
460	#address-cells = <1>;
461	#size-cells = <0>;
462
463	pinctrl-names = "default";
464	pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus1 &sd1_bus4>;
465
466	mmc-pwrseq = <&pwrseq_mmc1>;
467
468	bus-width = <4>;
469	fifo-depth = <64>;
470	samsung,dw-mshc-ciu-div = <3>;
471	samsung,dw-mshc-sdr-timing = <0 3>;
472	samsung,dw-mshc-ddr-timing = <1 2>;
473	non-removable;
474	cap-sd-highspeed;
475	cap-sdio-irq;
476
477	status = "okay";
478
479	wifi@1 {
480		compatible = "brcm,bcm43430a1-fmac", "brcm,bcm4329-fmac";
481		reg = <0x1>;
482		interrupt-names = "host-wake";
483		interrupt-parent = <&gpa2>;
484		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
485
486		reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>;
487	};
488};
489
490&mmc2 {
491	pinctrl-names = "default";
492	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4 &dwmmc2_irq>;
493
494	vmmc-supply = <&vdd_fixed_mmc2>;
495	vqmmc-supply = <&vdd_ldo2>;
496
497	bus-width = <4>;
498	card-detect-delay = <200>;
499	fifo-depth = <64>;
500	samsung,dw-mshc-ciu-div = <3>;
501	samsung,dw-mshc-sdr-timing = <0 3>;
502	samsung,dw-mshc-ddr-timing = <1 2>;
503	sd-uhs-sdr50;
504	sd-uhs-sdr104;
505	broken-cd;
506	disable-wp;
507
508	status = "okay";
509};
510
511&oscclk {
512	clock-frequency = <26000000>;
513};
514
515&pinctrl_alive {
516	accel_irq: accel-irq-pins {
517		samsung,pins = "gpa2-3";
518		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
519		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
520		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
521	};
522
523	dwmmc2_irq: dwmmc2-irq-pins {
524		samsung,pins = "gpa0-1";
525		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
526		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
527		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
528	};
529
530	fuel_irq: fuel-irq-pins {
531		samsung,pins = "gpa0-3";
532		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
533		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
534		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
535	};
536
537	key_power: key-power-pins {
538		samsung,pins = "gpa0-0";
539		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
540		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
541		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
542	};
543
544	key_voldown: key-voldown-pins {
545		samsung,pins = "gpa2-1";
546		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
547		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
548		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
549	};
550
551	key_volup: key-volup-pins {
552		samsung,pins = "gpa2-0";
553		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
554		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
555		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
556	};
557
558	pmic_irq: pmic-irq-pins {
559		samsung,pins = "gpa0-2";
560		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
561		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
562	};
563
564	proxm_irq: proxm-irq-pins {
565		samsung,pins = "gpa0-5";
566		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
567		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
568		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
569	};
570
571	touch_irq: touch-irq-pins {
572		samsung,pins = "gpa0-6";
573		samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
574		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
575		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
576	};
577
578	wlan_hostwake: wlan-hostwake-pins {
579		samsung,pins = "gpa2-2";
580		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
581		samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
582	};
583};
584
585&pinctrl_top {
586	bt_enable: bt-enable-pins {
587		samsung,pins = "gpd4-0";
588		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
589		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
590		samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
591		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
592	};
593
594	wlan_enable: wlan-enable-pins {
595		samsung,pins = "gpd3-6";
596		samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
597		samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
598		samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
599		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
600		samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
601		samsung,pin-val = <0>;
602	};
603};
604
605&serial1 {
606	status = "okay";
607
608	bluetooth {
609		compatible = "brcm,bcm43430a1-bt";
610
611		pinctrl-names = "default";
612		pinctrl-0 = <&bt_btwake &bt_hostwake &bt_enable>;
613
614		device-wakeup-gpios = <&gpa1 2 GPIO_ACTIVE_HIGH>;
615		host-wakeup-gpios = <&gpa1 6 GPIO_ACTIVE_HIGH>;
616		shutdown-gpios = <&gpd4 0 GPIO_ACTIVE_HIGH>;
617
618		max-speed = <3000000>;
619	};
620};
621
622&serial2 {
623	status = "okay";
624};
625
626&usbdrd {
627	vdd33-supply = <&vdd_ldo8>;
628
629	status = "okay";
630};
631