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