xref: /linux/arch/arm64/boot/dts/marvell/mmp/pxa1908-samsung-coreprimevelte.dts (revision 0cac5ce06e524755b3dac1e0a060b05992076d93)
1// SPDX-License-Identifier: GPL-2.0-only
2#include "pxa1908.dtsi"
3#include <dt-bindings/gpio/gpio.h>
4#include <dt-bindings/input/linux-event-codes.h>
5
6/ {
7	model = "Samsung Galaxy Core Prime VE LTE";
8	compatible = "samsung,coreprimevelte", "marvell,pxa1908";
9
10	aliases {
11		mmc0 = &sdh2; /* eMMC */
12		mmc1 = &sdh0; /* SD card */
13		mmc2 = &sdh1; /* SDIO */
14		serial0 = &uart0;
15	};
16
17	chosen {
18		#address-cells = <2>;
19		#size-cells = <2>;
20		ranges;
21
22		stdout-path = "serial0:115200n8";
23
24		fb0: framebuffer@17177000 {
25			compatible = "simple-framebuffer";
26			reg = <0 0x17177000 0 (480 * 800 * 4)>;
27			power-domains = <&apmu PXA1908_POWER_DOMAIN_DSI>;
28			width = <480>;
29			height = <800>;
30			stride = <(480 * 4)>;
31			format = "a8r8g8b8";
32		};
33	};
34
35	memory@0 {
36		device_type = "memory";
37		reg = <0 0 0 0x40000000>;
38	};
39
40	reserved-memory {
41		/*
42		 * Reserved by the vendor bootloader as a "secure region".
43		 *
44		 * TODO: See if the responsible stage of the bootloader can be
45		 * replaced
46		 */
47		secure-region@0 {
48			reg = <0 0 0 0x1000000>;
49		};
50
51		framebuffer@17000000 {
52			reg = <0 0x17000000 0 0x1800000>;
53			no-map;
54		};
55	};
56
57	i2c-muic {
58		compatible = "i2c-gpio";
59		sda-gpios = <&gpio 30 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
60		scl-gpios = <&gpio 29 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
61		i2c-gpio,delay-us = <3>;
62		i2c-gpio,timeout-ms = <100>;
63		#address-cells = <1>;
64		#size-cells = <0>;
65		pinctrl-names = "default";
66		pinctrl-0 = <&i2c_muic_pins>;
67
68		muic: extcon@14 {
69			compatible = "siliconmitus,sm5504-muic";
70			reg = <0x14>;
71			interrupt-parent = <&gpio>;
72			interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
73
74			usb_con: connector {
75				compatible = "usb-b-connector";
76				label = "micro-USB";
77				type = "micro";
78			};
79		};
80	};
81
82	gpio-keys {
83		compatible = "gpio-keys";
84		pinctrl-names = "default";
85		pinctrl-0 = <&gpio_keys_pins>;
86		autorepeat;
87
88		key-home {
89			label = "Home";
90			linux,code = <KEY_HOME>;
91			gpios = <&gpio 50 GPIO_ACTIVE_LOW>;
92		};
93
94		key-volup {
95			label = "Volume Up";
96			linux,code = <KEY_VOLUMEUP>;
97			gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
98		};
99
100		key-voldown {
101			label = "Volume Down";
102			linux,code = <KEY_VOLUMEDOWN>;
103			gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
104		};
105	};
106
107	backlight {
108		compatible = "kinetic,ktd2801";
109		ctrl-gpios = <&gpio 97 GPIO_ACTIVE_HIGH>;
110		max-brightness = <210>;
111	};
112
113	vibrator {
114		compatible = "pwm-vibrator";
115		pwm-names = "enable";
116		pwms = <&pwm3 100000>;
117		enable-gpios = <&gpio 20 GPIO_ACTIVE_HIGH>;
118		pinctrl-names = "default";
119		pinctrl-0 = <&vibrator_pin>;
120	};
121};
122
123&smmu {
124	status = "okay";
125};
126
127&pmx {
128	pinctrl-single,gpio-range = <&range 55 55 0>,
129				    <&range 110 32 0>,
130				    <&range 52 1 0>;
131
132	pinctrl-names = "default";
133	pinctrl-0 = <&board_pins_0 &board_pins_1 &board_pins_2>;
134
135	board_pins_0: board-pins-0 {
136		pinctrl-single,pins = <
137			0x160 0
138			0x164 0
139			0x168 0
140			0x16c 0
141		>;
142		pinctrl-single,drive-strength = <0x1000 0x1800>;
143		pinctrl-single,bias-pullup = <0x8000 0x8000 0 0xc000>;
144		pinctrl-single,bias-pulldown = <0x8000 0x8000 0 0xa000>;
145		pinctrl-single,input-schmitt = <0 0x30>;
146		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
147		pinctrl-single,low-power-mode = <0x288 0x388>;
148	};
149
150	board_pins_1: board-pins-1 {
151		pinctrl-single,pins = <
152			0x44 1
153			0x48 1
154			0x20 1
155			0x18 1
156			0x14 1
157			0x10 1
158			0xc 1
159			0x8 1
160			0x68 1
161			0x58 0
162			0x54 0
163			0x7c 0
164			0x6c 0
165			0x70 0
166			0x4c 1
167			0x50 1
168			0xac 0
169			0x90 0
170			0x8c 0
171			0x88 0
172			0x84 0
173			0xc8 0
174			0x128 0
175			0x190 0
176			0x194 0
177			0x1a0 0
178			0x114 0
179			0x118 0
180			0x1d8 0
181			0x1e4 0
182			0xe8 0
183			0x100 0
184			0x204 0
185			0x210 0
186			0x218 0
187		>;
188		pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
189		pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xc000>;
190		pinctrl-single,low-power-mode = <0x288 0x388>;
191	};
192
193	board_pins_2: board-pins-2 {
194		pinctrl-single,pins = <
195			0x260 0
196			0x264 0
197			0x268 0
198			0x26c 0
199			0x270 0
200			0x274 0
201			0x78 0
202			0x74 0
203			0xb0 1
204		>;
205		pinctrl-single,drive-strength = <0x1000 0x1800>;
206		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
207		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
208		pinctrl-single,input-schmitt = <0 0x30>;
209		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
210		pinctrl-single,low-power-mode = <0 0x388>;
211	};
212
213	uart0_pins: uart0-pins {
214		pinctrl-single,pins = <
215			0x198 6
216			0x19c 6
217		>;
218		pinctrl-single,drive-strength = <0x1000 0x1800>;
219		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
220		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
221		pinctrl-single,input-schmitt = <0 0x30>;
222		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
223		pinctrl-single,low-power-mode = <0 0x388>;
224	};
225
226	gpio_keys_pins: gpio-keys-pins {
227		pinctrl-single,pins = <
228			0x11c 0
229			0x120 0
230			0x1a4 0
231		>;
232		pinctrl-single,drive-strength = <0x1000 0x1800>;
233		pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
234		pinctrl-single,bias-pulldown = <0x8000 0xa0000 0x8000 0xa000>;
235		pinctrl-single,input-schmitt = <0 0x30>;
236		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
237		pinctrl-single,low-power-mode = <0 0x388>;
238	};
239
240	i2c_muic_pins: i2c-muic-pins {
241		pinctrl-single,pins = <
242			0x154 0
243			0x150 0
244		>;
245		pinctrl-single,drive-strength = <0x1000 0x1800>;
246		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
247		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
248		pinctrl-single,input-schmitt = <0 0x30>;
249		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
250		pinctrl-single,low-power-mode = <0x288 0x388>;
251	};
252
253	sdh0_pins_0: sdh0-pins-0 {
254		pinctrl-single,pins = <
255			0x108 0
256		>;
257		pinctrl-single,drive-strength = <0x1000 0x1800>;
258		pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
259		pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
260		pinctrl-single,input-schmitt = <0 0x30>;
261		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
262		pinctrl-single,low-power-mode = <0 0x388>;
263	};
264
265	sdh0_pins_1: sdh0-pins-1 {
266		pinctrl-single,pins = <
267			0x94 0
268			0x98 0
269			0x9c 0
270			0xa0 0
271			0xa4 0
272		>;
273		pinctrl-single,drive-strength = <0x800 0x1800>;
274		pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
275		pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
276		pinctrl-single,input-schmitt = <0 0x30>;
277		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
278		pinctrl-single,low-power-mode = <0 0x388>;
279	};
280
281	sdh0_pins_2: sdh0-pins-2 {
282		pinctrl-single,pins = <
283			0xa8 0
284		>;
285		pinctrl-single,drive-strength = <0x1000 0x1800>;
286		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
287		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
288		pinctrl-single,input-schmitt = <0 0x30>;
289		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
290		pinctrl-single,low-power-mode = <0x208 0x388>;
291	};
292
293	sdh1_pins_0: sdh1-pins-0 {
294		pinctrl-single,pins = <
295			0x170 1
296			0x174 1
297			0x178 1
298			0x17c 1
299			0x180 1
300		>;
301		pinctrl-single,drive-strength = <0x1000 0x1800>;
302		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
303		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
304		pinctrl-single,input-schmitt = <0 0x30>;
305		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
306		pinctrl-single,low-power-mode = <0 0x388>;
307	};
308
309	sdh1_pins_1: sdh1-pins-1 {
310		pinctrl-single,pins = <0x184 1>;
311		pinctrl-single,drive-strength = <0 0x1800>;
312		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
313		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
314		pinctrl-single,input-schmitt = <0 0x30>;
315		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
316		pinctrl-single,low-power-mode = <0x208 0x388>;
317	};
318
319	sdh1_pins_2: sdh1-pins-2 {
320		pinctrl-single,pins = <0xec 0>;
321		pinctrl-single,drive-strength = <0x1000 0x1800>;
322		pinctrl-single,bias-pullup = <0x8000 0x8000 0 0xc000>;
323		pinctrl-single,bias-pulldown = <0x8000 0x8000 0 0xa000>;
324		pinctrl-single,input-schmitt = <0 0x30>;
325		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
326		pinctrl-single,low-power-mode = <0 0x388>;
327	};
328
329	sdh1_fast_pins_0: sdh1-fast-pins-0 {
330		pinctrl-single,pins = <
331			0x170 1
332			0x174 1
333			0x178 1
334			0x17c 1
335			0x180 1
336		>;
337		pinctrl-single,drive-strength = <0x1800 0x1800>;
338		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
339		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
340		pinctrl-single,input-schmitt = <0 0x30>;
341		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
342		pinctrl-single,low-power-mode = <0 0x388>;
343	};
344
345	sdh1_fast_pins_1: sdh1-fast-pins-1 {
346		pinctrl-single,pins = <0x184 1>;
347		pinctrl-single,drive-strength = <0x1800 0x1800>;
348		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
349		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
350		pinctrl-single,input-schmitt = <0 0x30>;
351		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
352		pinctrl-single,low-power-mode = <0x208 0x388>;
353	};
354
355	sdh2_pins_0: sdh2-pins-0 {
356		pinctrl-single,pins = <
357			0x24 1
358			0x28 1
359			0x2c 1
360			0x30 1
361			0x34 1
362			0x38 1
363			0x3c 1
364			0x40 1
365		>;
366		pinctrl-single,drive-strength = <0x1000 0x1800>;
367		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
368		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
369		pinctrl-single,input-schmitt = <0 0x30>;
370		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
371		pinctrl-single,low-power-mode = <0 0x388>;
372	};
373
374	sdh2_pins_1: sdh2-pins-1 {
375		pinctrl-single,pins = <0x64 1>;
376		pinctrl-single,drive-strength = <0x1000 0x1800>;
377		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
378		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
379		pinctrl-single,input-schmitt = <0 0x30>;
380		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
381		pinctrl-single,low-power-mode = <0x208 0x388>;
382	};
383
384	sdh2_pins_2: sdh2-pins-2 {
385		pinctrl-single,pins = <0x5c 1>;
386		pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
387		pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
388		pinctrl-single,low-power-mode = <0x288 0x388>;
389	};
390
391	sdh2_fast_pins_0: sdh2-fast-pins-0 {
392		pinctrl-single,pins = <
393			0x24 1
394			0x28 1
395			0x2c 1
396			0x30 1
397			0x34 1
398			0x38 1
399			0x3c 1
400			0x40 1
401		>;
402		pinctrl-single,drive-strength = <0x1800 0x1800>;
403		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
404		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
405		pinctrl-single,input-schmitt = <0 0x30>;
406		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
407		pinctrl-single,low-power-mode = <0 0x388>;
408	};
409
410	sdh2_fast_pins_1: sdh2-fast-pins-1 {
411		pinctrl-single,pins = <0x64 1>;
412		pinctrl-single,drive-strength = <0x1800 0x1800>;
413		pinctrl-single,bias-pullup = <0 0xc000 0 0xc000>;
414		pinctrl-single,bias-pulldown = <0 0xa000 0 0xa000>;
415		pinctrl-single,input-schmitt = <0 0x30>;
416		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
417		pinctrl-single,low-power-mode = <0x208 0x388>;
418	};
419
420	sdh2_fast_pins_2: sdh2-fast-pins-2 {
421		pinctrl-single,pins = <0x5c 1>;
422		pinctrl-single,drive-strength = <0x1800 0x1800>;
423		pinctrl-single,bias-pullup = <0xc000 0xc000 0 0xc000>;
424		pinctrl-single,bias-pulldown = <0x8000 0xa000 0x8000 0xa000>;
425		pinctrl-single,low-power-mode = <0x288 0x388>;
426	};
427
428	vibrator_pin: vibrator-pin {
429		pinctrl-single,pins = <0x12c 0>;
430		pinctrl-single,drive-strength = <0x1000 0x1800>;
431		pinctrl-single,bias-pullup = <0x8000 0xc000 0x8000 0xc000>;
432		pinctrl-single,bias-pulldown = <0xa000 0xa000 0 0xa000>;
433		pinctrl-single,input-schmitt = <0 0x30>;
434		pinctrl-single,input-schmitt-enable = <0x40 0 0x40 0x40>;
435		pinctrl-single,low-power-mode = <0 0x388>;
436	};
437};
438
439&uart0 {
440	pinctrl-names = "default";
441	pinctrl-0 = <&uart0_pins>;
442};
443
444&twsi0 {
445	status = "okay";
446};
447
448&twsi1 {
449	status = "okay";
450};
451
452&twsi2 {
453	status = "okay";
454
455	pmic@30 {
456		compatible = "marvell,88pm886-a1";
457		reg = <0x30>;
458		interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
459		wakeup-source;
460
461		regulators {
462			ldo2: ldo2 {
463				regulator-min-microvolt = <1900000>;
464				regulator-max-microvolt = <3100000>;
465			};
466
467			ldo6: ldo6 {
468				regulator-boot-on;
469				regulator-min-microvolt = <1200000>;
470				regulator-max-microvolt = <3300000>;
471			};
472
473			ldo14: ldo14 {
474				regulator-boot-on;
475				regulator-min-microvolt = <1200000>;
476				regulator-max-microvolt = <3300000>;
477			};
478		};
479	};
480};
481
482&twsi3 {
483	status = "okay";
484
485	touchscreen@50 {
486		compatible = "imagis,ist3032c";
487		reg = <0x50>;
488		interrupt-parent = <&gpio>;
489		interrupts = <72 IRQ_TYPE_EDGE_FALLING>;
490		vdd-supply = <&ldo2>;
491		touchscreen-size-x = <480>;
492		touchscreen-size-y = <800>;
493	};
494};
495
496&usb {
497	extcon = <&muic>, <&muic>;
498};
499
500&sdh2 {
501	pinctrl-names = "default", "state_uhs";
502	pinctrl-0 = <&sdh2_pins_0 &sdh2_pins_1 &sdh2_pins_2>;
503	pinctrl-1 = <&sdh2_fast_pins_0 &sdh2_fast_pins_1 &sdh2_fast_pins_2>;
504	bus-width = <8>;
505	non-removable;
506	mmc-ddr-1_8v;
507	mmc-hs200-1_8v;
508};
509
510&sdh0 {
511	pinctrl-names = "default";
512	pinctrl-0 = <&sdh0_pins_0 &sdh0_pins_1 &sdh0_pins_2>;
513	cd-gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
514	bus-width = <4>;
515	wp-inverted;
516	vmmc-supply = <&ldo14>;
517	vqmmc-supply = <&ldo6>;
518};
519
520&sdh1 {
521	pinctrl-names = "default", "state_uhs";
522	pinctrl-0 = <&sdh1_pins_0 &sdh1_pins_1 &sdh1_pins_2>;
523	pinctrl-1 = <&sdh1_fast_pins_0 &sdh1_fast_pins_1 &sdh1_pins_2>;
524	bus-width = <4>;
525	non-removable;
526};
527
528&pwm3 {
529	status = "okay";
530};
531