• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// SPDX-License-Identifier: GPL-2.0-only
2/dts-v1/;
3
4#include "ste-db8500.dtsi"
5#include "ste-ab8505.dtsi"
6#include "ste-dbx5x0-pinctrl.dtsi"
7#include <dt-bindings/gpio/gpio.h>
8#include <dt-bindings/input/input.h>
9#include <dt-bindings/interrupt-controller/irq.h>
10
11/*
12 * Note: This device tree cannot be booted directly with the Samsung bootloader.
13 * You need an intermediate, device-tree compatible bootloader
14 * that locks the L2 cache. Otherwise the kernel will crash after decompression.
15 *
16 * There is a port of (mainline) U-Boot, see
17 * https://wiki.postmarketos.org/wiki/ST-Ericsson_NovaThor_U8500#U-Boot
18 */
19/ {
20	model = "Samsung Galaxy S III mini (GT-I8190)";
21	compatible = "samsung,golden", "st-ericsson,u8500";
22
23	chosen {
24		stdout-path = &serial2;
25	};
26
27	i2c-gpio-0 {
28		compatible = "i2c-gpio";
29		sda-gpios = <&gpio2 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
30		scl-gpios = <&gpio2 13 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
31
32		pinctrl-names = "default";
33		pinctrl-0 = <&i2c_gpio_0_default>;
34
35		#address-cells = <1>;
36		#size-cells = <0>;
37
38		touchkey@20 {
39			compatible = "coreriver,tc360-touchkey";
40			reg = <0x20>;
41			vdd-supply = <&ab8500_ldo_aux4_reg>;
42			vcc-supply = <&ab8500_ldo_aux6_reg>;
43
44			interrupt-parent = <&gpio2>;
45			interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
46
47			pinctrl-names = "default";
48			pinctrl-0 = <&touchkey_default>;
49			linux,keycodes = <KEY_MENU KEY_BACK>;
50		};
51	};
52
53	i2c-gpio-1 {
54		compatible = "i2c-gpio";
55		sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
56		scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
57
58		pinctrl-names = "default";
59		pinctrl-0 = <&i2c_gpio_1_default>;
60
61		#address-cells = <1>;
62		#size-cells = <0>;
63
64		magnetometer@c {
65			compatible = "alps,hscdtd008a";
66			reg = <0x0c>;
67
68			avdd-supply = <&ab8500_ldo_aux1_reg>;
69			dvdd-supply = <&ab8500_ldo_aux8_reg>;
70		};
71	};
72
73	soc {
74		/* External Micro SD card slot */
75		sdi0_per1@80126000 {
76			status = "okay";
77
78			arm,primecell-periphid = <0x10480180>;
79			max-frequency = <100000000>;
80			bus-width = <4>;
81
82			non-removable;
83			/*
84			 * Unfortunately, there is no way to enable the UHS
85			 * modes due to a limitation of the SD level translator:
86			 * It will either translate to 2.9V or disconnect the
87			 * DATA lines, so switching to 1.8V signal voltage fails.
88			 */
89			cap-sd-highspeed;
90			cap-mmc-highspeed;
91			st,sig-pin-fbclk;
92			full-pwr-cycle;
93
94			vmmc-supply = <&ab8500_ldo_aux3_reg>;
95			vqmmc-supply = <&sd_level_translator>;
96
97			pinctrl-names = "default", "sleep";
98			pinctrl-0 = <&mc0_a_2_default>;
99			pinctrl-1 = <&mc0_a_2_sleep>;
100		};
101
102		/* WLAN SDIO */
103		sdi1_per2@80118000 {
104			status = "okay";
105
106			arm,primecell-periphid = <0x10480180>;
107			max-frequency = <50000000>;
108			bus-width = <4>;
109
110			non-removable;
111			cap-sd-highspeed;
112
113			vmmc-supply = <&wl_reg_on>;
114
115			pinctrl-names = "default", "sleep";
116			pinctrl-0 = <&mc1_a_2_default>;
117			pinctrl-1 = <&mc1_a_2_sleep>;
118
119			#address-cells = <1>;
120			#size-cells = <0>;
121
122			wifi@1 {
123				compatible = "brcm,bcm4329-fmac";
124				reg = <1>;
125
126				/* GPIO216 (WLAN_HOST_WAKE) */
127				interrupt-parent = <&gpio6>;
128				interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
129				interrupt-names = "host-wake";
130
131				pinctrl-names = "default";
132				pinctrl-0 = <&wlan_default>;
133			};
134		};
135
136		/* eMMC */
137		sdi2_per3@80005000 {
138			status = "okay";
139
140			arm,primecell-periphid = <0x10480180>;
141			max-frequency = <100000000>;
142			bus-width = <8>;
143
144			non-removable;
145			cap-mmc-highspeed;
146			mmc-ddr-1_8v;
147
148			vmmc-supply = <&vmem_3v3>;
149
150			pinctrl-names = "default", "sleep";
151			pinctrl-0 = <&mc2_a_1_default>;
152			pinctrl-1 = <&mc2_a_1_sleep>;
153		};
154
155		/* BT UART */
156		uart@80120000 {
157			status = "okay";
158
159			pinctrl-names = "default", "sleep";
160			pinctrl-0 = <&u0_a_1_default>;
161			pinctrl-1 = <&u0_a_1_sleep>;
162
163			bluetooth {
164				compatible = "brcm,bcm4330-bt";
165				/* GPIO222 (BT_VREG_ON) */
166				shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
167				/* GPIO199 (BT_WAKE) */
168				device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
169				/* GPIO97 (BT_HOST_WAKE) */
170				host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
171
172				pinctrl-names = "default";
173				pinctrl-0 = <&bluetooth_default>;
174			};
175		};
176
177		/* GPF UART */
178		uart@80121000 {
179			status = "okay";
180
181			pinctrl-names = "default", "sleep";
182			pinctrl-0 = <&u1rxtx_a_1_default &u1ctsrts_a_1_default>;
183			pinctrl-1 = <&u1rxtx_a_1_sleep &u1ctsrts_a_1_sleep>;
184		};
185
186		/* Debugging console UART */
187		uart@80007000 {
188			status = "okay";
189
190			pinctrl-names = "default", "sleep";
191			pinctrl-0 = <&u2rxtx_c_1_default>;
192			pinctrl-1 = <&u2rxtx_c_1_sleep>;
193		};
194
195		i2c@80004000 {
196			status = "okay";
197
198			pinctrl-names = "default", "sleep";
199			pinctrl-0 = <&i2c0_a_1_default>;
200			pinctrl-1 = <&i2c0_a_1_sleep>;
201
202			proximity@44 {
203				compatible = "sharp,gp2ap002s00f";
204				reg = <0x44>;
205
206				/* GPIO146 (PS_INT) */
207				interrupt-parent = <&gpio4>;
208				interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
209
210				vdd-supply = <&ab8500_ldo_aux1_reg>;
211				vio-supply = <&ab8500_ldo_aux8_reg>;
212
213				pinctrl-names = "default";
214				pinctrl-0 = <&proximity_default>;
215
216				sharp,proximity-far-hysteresis = <0x40>;
217				sharp,proximity-close-hysteresis = <0x0f>;
218			};
219		};
220
221		i2c@80128000 {
222			status = "okay";
223
224			pinctrl-names = "default", "sleep";
225			pinctrl-0 = <&i2c2_b_2_default>;
226			pinctrl-1 = <&i2c2_b_2_sleep>;
227
228			imu@68 {
229				compatible = "invensense,mpu6050";
230				reg = <0x68>;
231
232				/* GPIO206 (ACC_INT) */
233				interrupt-parent = <&gpio6>;
234				interrupts = <14 IRQ_TYPE_EDGE_RISING>;
235
236				mount-matrix = "0", "1", "0",
237					      "-1", "0", "0",
238					       "0", "0", "1";
239
240				vdd-supply = <&ab8500_ldo_aux1_reg>;
241				vddio-supply = <&ab8500_ldo_aux8_reg>;
242
243				pinctrl-names = "default";
244				pinctrl-0 = <&imu_default>;
245			};
246		};
247
248		i2c@80110000 {
249			status = "okay";
250
251			pinctrl-names = "default", "sleep";
252			pinctrl-0 = <&i2c3_c_2_default>;
253			pinctrl-1 = <&i2c3_c_2_sleep>;
254
255			touchscreen@4a {
256				compatible = "atmel,maxtouch";
257				reg = <0x4a>;
258
259				/* GPIO218 (TSP_INT_1V8) */
260				interrupt-parent = <&gpio6>;
261				interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
262
263				pinctrl-names = "default";
264				pinctrl-0 = <&tsp_default>;
265			};
266		};
267
268		prcmu@80157000 {
269			ab8505 {
270				ab8500_usb {
271					pinctrl-names = "default", "sleep";
272					pinctrl-0 = <&usb_a_1_default>;
273					pinctrl-1 = <&usb_a_1_sleep>;
274				};
275
276				ab8505-regulators {
277					ab8500_ldo_aux1 {
278						regulator-name = "sensor_3v";
279						regulator-min-microvolt = <3000000>;
280						regulator-max-microvolt = <3000000>;
281					};
282
283					ab8500_ldo_aux2 {
284						regulator-name = "vreg_tsp_a3v3";
285						regulator-min-microvolt = <3300000>;
286						regulator-max-microvolt = <3300000>;
287						regulator-always-on; /* FIXME */
288					};
289
290					ab8500_ldo_aux3 {
291						regulator-name = "vdd_tf_2v91";
292					};
293
294					ab8500_ldo_aux4 {
295						regulator-name = "key_led_3.3v";
296						regulator-min-microvolt = <3300000>;
297						regulator-max-microvolt = <3300000>;
298					};
299
300					ab8500_ldo_aux5 {
301						regulator-name = "vreg_tsp_1v8";
302						regulator-min-microvolt = <1800000>;
303						regulator-max-microvolt = <1800000>;
304						regulator-always-on; /* FIXME */
305					};
306
307					ab8500_ldo_aux6 {
308						regulator-name = "touch_key_2.2v";
309						regulator-min-microvolt = <2200000>;
310						regulator-max-microvolt = <2200000>;
311					};
312
313					ab8500_ldo_aux8 {
314						regulator-name = "sensor_1v8";
315					};
316				};
317			};
318		};
319
320		mcde@a0350000 {
321			status = "okay";
322			pinctrl-names = "default";
323			pinctrl-0 = <&dsi_default_mode>;
324
325			dsi-controller@a0351000 {
326				panel@0 {
327					compatible = "samsung,s6e63m0";
328					reg = <0>;
329					max-brightness = <15>;
330					vdd3-supply = <&panel_reg_3v0>;
331					vci-supply = <&panel_reg_1v8>;
332					reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
333					/* ESD (electrostatic discharge) detection interrupt */
334					interrupt-parent = <&gpio2>;
335					interrupts = <18 IRQ_TYPE_EDGE_RISING>;
336					interrupt-names = "esd";
337					pinctrl-names = "default";
338					pinctrl-0 = <&display_default_mode>;
339				};
340			};
341		};
342	};
343
344	gpio-keys {
345		compatible = "gpio-keys";
346
347		pinctrl-names = "default";
348		pinctrl-0 = <&gpio_keys_default>;
349
350		label = "GPIO Buttons";
351
352		volume-up {
353			label = "Volume Up";
354			/* GPIO67 (VOL_UP) */
355			gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
356			linux,code = <KEY_VOLUMEUP>;
357		};
358
359		volume-down {
360			label = "Volume Down";
361			/* GPIO92 (VOL_DOWN) */
362			gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
363			linux,code = <KEY_VOLUMEDOWN>;
364		};
365
366		home {
367			label = "Home";
368			/* GPIO91 (HOME_KEY) */
369			gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
370			linux,code = <KEY_HOMEPAGE>;
371		};
372	};
373
374	vibrator {
375		compatible = "gpio-vibrator";
376		/* GPIO195 (MOT_EN) */
377		enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;
378
379		pinctrl-names = "default";
380		pinctrl-0 = <&vibrator_default>;
381	};
382
383	/* External LDO for eMMC */
384	vmem_3v3: regulator-vmem {
385		compatible = "regulator-fixed";
386
387		regulator-name = "vmem_3v3";
388		regulator-min-microvolt = <3300000>;
389		regulator-max-microvolt = <3300000>;
390		regulator-boot-on;
391
392		startup-delay-us = <200>;
393
394		/* GPIO223 (MEM_LDO_EN) */
395		gpio = <&gpio6 31 GPIO_ACTIVE_HIGH>;
396		enable-active-high;
397
398		pinctrl-names = "default";
399		pinctrl-0 = <&mem_ldo_default>;
400	};
401
402	/* TI TXS0206-29 level translator for 2.9 V */
403	sd_level_translator: regulator-sd-level-translator {
404		compatible = "regulator-fixed";
405
406		regulator-name = "sd-level-translator";
407		regulator-min-microvolt = <2900000>;
408		regulator-max-microvolt = <2900000>;
409
410		startup-delay-us = <200>;
411
412		/* GPIO87 (TXS0206-29_EN) */
413		gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
414		enable-active-high;
415
416		pinctrl-names = "default";
417		pinctrl-0 = <&sd_level_translator_default>;
418	};
419
420	/*
421	 * WL_REG_ON takes WLAN out of reset and enables the internal regulators.
422	 * The voltage specified here is only used to determine the OCR mask,
423	 * the BCM chip is actually connected directly to VBAT.
424	 */
425	wl_reg_on: regulator-wl-reg-on {
426		compatible = "regulator-fixed";
427
428		regulator-name = "wl-reg-on";
429		regulator-min-microvolt = <3000000>;
430		regulator-max-microvolt = <3000000>;
431
432		startup-delay-us = <100000>;
433
434		/* GPIO215 (WLAN_EN) */
435		gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
436		enable-active-high;
437
438		pinctrl-names = "default";
439		pinctrl-0 = <&wlan_en_default>;
440	};
441
442	/* MIC5366 GPIO-controlled regulator */
443	panel_reg_1v8: regulator-panel-1v8 {
444		compatible = "regulator-fixed";
445
446		regulator-name = "panel-fixed-supply";
447		regulator-min-microvolt = <1800000>;
448		regulator-max-microvolt = <1800000>;
449		/* GPIO219 */
450		gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
451
452		startup-delay-us = <200>;
453		enable-active-high;
454
455		pinctrl-names = "default";
456		pinctrl-0 = <&panel_reg_default_mode>;
457	};
458
459	/* MIC5366 GPIO-controlled regulator */
460	panel_reg_3v0: regulator-panel-3v0 {
461		compatible = "regulator-fixed";
462
463		regulator-name = "panel-fixed-supply";
464		regulator-min-microvolt = <3000000>;
465		regulator-max-microvolt = <3000000>;
466		/* GPIO219 */
467		gpio = <&gpio6 27 GPIO_ACTIVE_HIGH>;
468
469		startup-delay-us = <200>;
470		enable-active-high;
471
472		pinctrl-names = "default";
473		pinctrl-0 = <&panel_reg_default_mode>;
474	};
475};
476
477&pinctrl {
478	gpio-keys {
479		gpio_keys_default: gpio_keys_default {
480			golden_cfg1 {
481				pins = "GPIO67",	/* VOL_UP */
482				       "GPIO91",	/* HOME_KEY */
483				       "GPIO92";	/* VOL_DOWN */
484				ste,config = <&gpio_in_pu>;
485			};
486		};
487	};
488
489	i2c-gpio-0 {
490		i2c_gpio_0_default: i2c_gpio_0 {
491			golden_cfg1 {
492				pins = "GPIO77",	/* TOUCHKEY_SCL */
493				       "GPIO78";	/* TOUCHKEY_SDA */
494				ste,config = <&gpio_in_nopull>;
495			};
496		};
497	};
498
499	i2c-gpio-1 {
500		i2c_gpio_1_default: i2c_gpio_1 {
501			golden_cfg1 {
502				pins = "GPIO151",	/* COMP_SCL */
503				       "GPIO152";	/* COMP_SDA */
504				ste,config = <&gpio_in_nopull>;
505			};
506		};
507	};
508
509	touchkey {
510		touchkey_default: touchkey_default {
511			golden_cfg1 {
512				pins = "GPIO79";	/* TOUCHKEY_INT */
513				ste,config = <&gpio_in_nopull>;
514			};
515		};
516	};
517
518	sdi0 {
519		sd_level_translator_default: sd_level_translator_default {
520			golden_cfg1 {
521				pins = "GPIO87_B3";	/* TXS0206-29_EN */
522				ste,config = <&gpio_out_lo>;
523			};
524		};
525	};
526
527	sdi2 {
528		mem_ldo_default: mem_ldo_default {
529			golden_cfg1 {
530				pins = "GPIO223_AH9";	/* MEM_LDO_EN */
531				ste,config = <&gpio_out_hi>;
532			};
533		};
534	};
535
536	mcde {
537		dsi_default_mode: dsi_default {
538			default_mux1 {
539				/* Mux in VSI0 used for DSI TE */
540				function = "lcd";
541				groups =
542				"lcdvsi0_a_1"; /* VSI0 for LCD */
543			};
544			default_cfg1 {
545				pins =
546				"GPIO68_E1"; /* VSI0 */
547				ste,config = <&in_nopull>;
548			};
549		};
550	};
551
552	display {
553		display_default_mode: display_default {
554			golden_cfg1 {
555				pins = "GPIO139_C9"; /* MIPI_DSI0_RESET_N */
556				ste,config = <&gpio_out_lo>;
557			};
558			golden_cfg2 {
559				pins = "GPIO82_C1"; /* LDI_ESD_DET */
560				ste,config = <&gpio_in_pu>;
561			};
562		};
563		panel_reg_default_mode: panel_reg_default {
564			golden_cfg1 {
565				pins = "GPIO219_AG10"; /* LCD_PWR_EN */
566				ste,config = <&gpio_out_lo>;
567			};
568		};
569	};
570
571	proximity {
572		proximity_default: proximity_default {
573			golden_cfg1 {
574				pins = "GPIO146_D13";	/* PS_INT */
575				ste,config = <&gpio_in_nopull>;
576			};
577		};
578	};
579
580	imu {
581		imu_default: imu_default {
582			golden_cfg1 {
583				pins = "GPIO206_AG24";	/* ACC_INT */
584				ste,config = <&gpio_in_pd>;
585			};
586		};
587	};
588
589	tsp {
590		tsp_default: tsp_default {
591			golden_cfg1 {
592				pins = "GPIO218_AH11";	/* TSP_INT_1V8 */
593				ste,config = <&gpio_in_nopull>;
594			};
595		};
596	};
597
598	wlan {
599		wlan_default: wlan_default {
600			golden_cfg1 {
601				pins = "GPIO216_AG12";	/* WLAN_HOST_WAKE */
602				ste,config = <&gpio_in_pd>;
603			};
604		};
605
606		wlan_en_default: wlan_en_default {
607			golden_cfg1 {
608				pins = "GPIO215_AH13";	/* WLAN_EN */
609				ste,config = <&gpio_out_lo>;
610			};
611		};
612	};
613
614	bluetooth {
615		bluetooth_default: bluetooth_default {
616			golden_cfg1 {
617				pins = "GPIO199_AH23",	/* BT_WAKE */
618				       "GPIO222_AJ9";	/* BT_VREG_ON */
619				ste,config = <&gpio_out_lo>;
620			};
621			golden_cfg2 {
622				pins = "GPIO97_D9";	/* BT_HOST_WAKE */
623				ste,config = <&gpio_in_nopull>;
624			};
625		};
626	};
627
628	vibrator {
629		vibrator_default: vibrator_default {
630			golden_cfg1 {
631				pins = "GPIO195_AG28";	/* MOT_EN */
632				ste,config = <&gpio_out_lo>;
633			};
634		};
635	};
636};
637
638&ab8505_gpio {
639	/* Hog a few default settings */
640	pinctrl-names = "default";
641	pinctrl-0 = <&gpio_default>;
642
643	gpio {
644		gpio_default: gpio_default {
645			golden_mux {
646				/* Change unused pins to GPIO mode */
647				function = "gpio";
648				groups = "gpio3_a_1",	/* default: SysClkReq4 */
649					 "gpio14_a_1";	/* default: PWMOut1 */
650			};
651			golden_cfg1 {
652				pins = "GPIO11_B17", "GPIO13_D17", "GPIO50_L4";
653				bias-disable;
654			};
655		};
656	};
657};
658