xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/ste-ux500-samsung-skomer.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Devicetree for the Samsung XCover 2 GT-S7710 also known as Skomer.
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun/dts-v1/;
7*4882a593Smuzhiyun#include "ste-db8500.dtsi"
8*4882a593Smuzhiyun#include "ste-ab8505.dtsi"
9*4882a593Smuzhiyun#include "ste-dbx5x0-pinctrl.dtsi"
10*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
11*4882a593Smuzhiyun#include <dt-bindings/input/input.h>
12*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h>
13*4882a593Smuzhiyun
14*4882a593Smuzhiyun/ {
15*4882a593Smuzhiyun	model = "Samsung XCover 2 (GT-S7710)";
16*4882a593Smuzhiyun	compatible = "samsung,skomer", "st-ericsson,u8500";
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun	chosen {
19*4882a593Smuzhiyun		stdout-path = &serial2;
20*4882a593Smuzhiyun	};
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun	/* TI TXS0206 level translator for 2.9 V */
23*4882a593Smuzhiyun	sd_level_translator: regulator-gpio {
24*4882a593Smuzhiyun		compatible = "regulator-fixed";
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun		/* GPIO87 EN */
27*4882a593Smuzhiyun		gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>;
28*4882a593Smuzhiyun		enable-active-high;
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun		regulator-name = "sd-level-translator";
31*4882a593Smuzhiyun		regulator-min-microvolt = <2900000>;
32*4882a593Smuzhiyun		regulator-max-microvolt = <2900000>;
33*4882a593Smuzhiyun		regulator-type = "voltage";
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun		startup-delay-us = <200>;
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun		pinctrl-names = "default";
38*4882a593Smuzhiyun		pinctrl-0 = <&sd_level_translator_default>;
39*4882a593Smuzhiyun	};
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun	/* External LDO MIC5366-3.3YMT for eMMC */
42*4882a593Smuzhiyun	ldo_3v3_reg: regulator-gpio-ldo-3v3 {
43*4882a593Smuzhiyun		compatible = "regulator-fixed";
44*4882a593Smuzhiyun		regulator-name = "en-3v3-fixed-supply";
45*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
46*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
47*4882a593Smuzhiyun		gpio = <&gpio6 31 GPIO_ACTIVE_HIGH>;
48*4882a593Smuzhiyun		startup-delay-us = <5000>;
49*4882a593Smuzhiyun		enable-active-high;
50*4882a593Smuzhiyun		pinctrl-names = "default";
51*4882a593Smuzhiyun		pinctrl-0 = <&emmc_ldo_en_default_mode>;
52*4882a593Smuzhiyun	};
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun	wlan_en: regulator-gpio-wlan-en {
55*4882a593Smuzhiyun		compatible = "regulator-fixed";
56*4882a593Smuzhiyun		regulator-name = "wl-reg-on";
57*4882a593Smuzhiyun		regulator-min-microvolt = <3000000>;
58*4882a593Smuzhiyun		regulator-max-microvolt = <3000000>;
59*4882a593Smuzhiyun		startup-delay-us = <200000>;
60*4882a593Smuzhiyun		/* GPIO215 WLAN_EN */
61*4882a593Smuzhiyun		gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
62*4882a593Smuzhiyun		enable-active-high;
63*4882a593Smuzhiyun		pinctrl-names = "default";
64*4882a593Smuzhiyun		pinctrl-0 = <&wlan_en_default_mode>;
65*4882a593Smuzhiyun	};
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun	vibrator {
68*4882a593Smuzhiyun		compatible = "gpio-vibrator";
69*4882a593Smuzhiyun		enable-gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;
70*4882a593Smuzhiyun		pinctrl-names = "default";
71*4882a593Smuzhiyun		pinctrl-0 = <&vibrator_default>;
72*4882a593Smuzhiyun	};
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun	gpio-keys {
75*4882a593Smuzhiyun		compatible = "gpio-keys";
76*4882a593Smuzhiyun		pinctrl-names = "default";
77*4882a593Smuzhiyun		pinctrl-0 = <&gpio_keys_default_mode>;
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun		button-home {
80*4882a593Smuzhiyun			linux,code = <KEY_HOME>;
81*4882a593Smuzhiyun			label = "HOME";
82*4882a593Smuzhiyun			/* GPIO91 */
83*4882a593Smuzhiyun			gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
84*4882a593Smuzhiyun		};
85*4882a593Smuzhiyun		button-volup {
86*4882a593Smuzhiyun			linux,code = <KEY_VOLUMEUP>;
87*4882a593Smuzhiyun			label = "VOL+";
88*4882a593Smuzhiyun			/* GPIO67 */
89*4882a593Smuzhiyun			gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
90*4882a593Smuzhiyun		};
91*4882a593Smuzhiyun		button-voldown {
92*4882a593Smuzhiyun			linux,code = <KEY_VOLUMEDOWN>;
93*4882a593Smuzhiyun			label = "VOL-";
94*4882a593Smuzhiyun			/* GPIO92 */
95*4882a593Smuzhiyun			gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
96*4882a593Smuzhiyun		};
97*4882a593Smuzhiyun		button-menu {
98*4882a593Smuzhiyun			linux,code = <KEY_MENU>;
99*4882a593Smuzhiyun			label = "MENU";
100*4882a593Smuzhiyun			/* GPIO204 */
101*4882a593Smuzhiyun			gpios = <&gpio6 12 GPIO_ACTIVE_LOW>;
102*4882a593Smuzhiyun		};
103*4882a593Smuzhiyun		button-back {
104*4882a593Smuzhiyun			linux,code = <KEY_BACK>;
105*4882a593Smuzhiyun			label = "BACK";
106*4882a593Smuzhiyun			/* GPIO205 */
107*4882a593Smuzhiyun			gpios = <&gpio6 13 GPIO_ACTIVE_LOW>;
108*4882a593Smuzhiyun		};
109*4882a593Smuzhiyun	};
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun	ktd253: backlight {
112*4882a593Smuzhiyun		compatible = "kinetic,ktd253";
113*4882a593Smuzhiyun		/* GPIO 69 */
114*4882a593Smuzhiyun		enable-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
115*4882a593Smuzhiyun		/* Default to 13/32 brightness */
116*4882a593Smuzhiyun		default-brightness = <13>;
117*4882a593Smuzhiyun		pinctrl-names = "default";
118*4882a593Smuzhiyun		pinctrl-0 = <&gpio_backlight_default_mode>;
119*4882a593Smuzhiyun	};
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun	i2c-gpio-0 {
122*4882a593Smuzhiyun		compatible = "i2c-gpio";
123*4882a593Smuzhiyun		sda-gpios = <&gpio4 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
124*4882a593Smuzhiyun		scl-gpios = <&gpio4 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
125*4882a593Smuzhiyun		pinctrl-names = "default";
126*4882a593Smuzhiyun		pinctrl-0 = <&i2c_gpio_0_default>;
127*4882a593Smuzhiyun		#address-cells = <1>;
128*4882a593Smuzhiyun		#size-cells = <0>;
129*4882a593Smuzhiyun		/* TODO: this should be used by the NCP6914 Camera power management unit */
130*4882a593Smuzhiyun	};
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun	i2c-gpio-1 {
133*4882a593Smuzhiyun		compatible = "i2c-gpio";
134*4882a593Smuzhiyun		sda-gpios = <&gpio4 24 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
135*4882a593Smuzhiyun		scl-gpios = <&gpio4 23 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
136*4882a593Smuzhiyun		pinctrl-names = "default";
137*4882a593Smuzhiyun		pinctrl-0 = <&i2c_gpio_1_default>;
138*4882a593Smuzhiyun		#address-cells = <1>;
139*4882a593Smuzhiyun		#size-cells = <0>;
140*4882a593Smuzhiyun		magnetometer@c {
141*4882a593Smuzhiyun			compatible = "alps,hscdtd008a";
142*4882a593Smuzhiyun			reg = <0x0c>;
143*4882a593Smuzhiyun			avdd-supply = <&ab8500_ldo_aux1_reg>;
144*4882a593Smuzhiyun			dvdd-supply = <&ab8500_ldo_aux8_reg>;
145*4882a593Smuzhiyun		};
146*4882a593Smuzhiyun	};
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun	soc {
149*4882a593Smuzhiyun		// External Micro SD slot
150*4882a593Smuzhiyun		sdi0_per1@80126000 {
151*4882a593Smuzhiyun			arm,primecell-periphid = <0x10480180>;
152*4882a593Smuzhiyun			max-frequency = <100000000>;
153*4882a593Smuzhiyun			bus-width = <4>;
154*4882a593Smuzhiyun			cap-sd-highspeed;
155*4882a593Smuzhiyun			cap-mmc-highspeed;
156*4882a593Smuzhiyun			/* All direction control is used */
157*4882a593Smuzhiyun			st,sig-pin-fbclk;
158*4882a593Smuzhiyun			full-pwr-cycle;
159*4882a593Smuzhiyun			vmmc-supply = <&ab8500_ldo_aux3_reg>;
160*4882a593Smuzhiyun			vqmmc-supply = <&sd_level_translator>;
161*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
162*4882a593Smuzhiyun			pinctrl-0 = <&mc0_a_1_default>;
163*4882a593Smuzhiyun			pinctrl-1 = <&mc0_a_1_sleep>;
164*4882a593Smuzhiyun			status = "okay";
165*4882a593Smuzhiyun		};
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun		// WLAN SDIO channel
168*4882a593Smuzhiyun		sdi1_per2@80118000 {
169*4882a593Smuzhiyun			arm,primecell-periphid = <0x10480180>;
170*4882a593Smuzhiyun			max-frequency = <50000000>;
171*4882a593Smuzhiyun			bus-width = <4>;
172*4882a593Smuzhiyun			non-removable;
173*4882a593Smuzhiyun			cap-sd-highspeed;
174*4882a593Smuzhiyun			vmmc-supply = <&wlan_en>;
175*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
176*4882a593Smuzhiyun			pinctrl-0 = <&mc1_a_2_default>;
177*4882a593Smuzhiyun			pinctrl-1 = <&mc1_a_2_sleep>;
178*4882a593Smuzhiyun			status = "okay";
179*4882a593Smuzhiyun			#address-cells = <1>;
180*4882a593Smuzhiyun			#size-cells = <0>;
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun			wifi@1 {
183*4882a593Smuzhiyun				compatible = "brcm,bcm4329-fmac";
184*4882a593Smuzhiyun				reg = <1>;
185*4882a593Smuzhiyun				/* GPIO216 WL_HOST_WAKE */
186*4882a593Smuzhiyun				interrupt-parent = <&gpio6>;
187*4882a593Smuzhiyun				interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
188*4882a593Smuzhiyun				interrupt-names = "host-wake";
189*4882a593Smuzhiyun				pinctrl-names = "default";
190*4882a593Smuzhiyun				pinctrl-0 = <&wlan_default_mode>;
191*4882a593Smuzhiyun			};
192*4882a593Smuzhiyun		};
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun		// eMMC
195*4882a593Smuzhiyun		sdi2_per3@80005000 {
196*4882a593Smuzhiyun			arm,primecell-periphid = <0x10480180>;
197*4882a593Smuzhiyun		        max-frequency = <100000000>;
198*4882a593Smuzhiyun			bus-width = <8>;
199*4882a593Smuzhiyun			non-removable;
200*4882a593Smuzhiyun			cap-mmc-highspeed;
201*4882a593Smuzhiyun			mmc-ddr-1_8v;
202*4882a593Smuzhiyun			vmmc-supply = <&ldo_3v3_reg>;
203*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
204*4882a593Smuzhiyun			pinctrl-0 = <&mc2_a_1_default>;
205*4882a593Smuzhiyun			pinctrl-1 = <&mc2_a_1_sleep>;
206*4882a593Smuzhiyun
207*4882a593Smuzhiyun			status = "okay";
208*4882a593Smuzhiyun		};
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun		/* GBF (Bluetooth) UART */
211*4882a593Smuzhiyun		uart@80120000 {
212*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
213*4882a593Smuzhiyun			pinctrl-0 = <&u0_a_1_default>;
214*4882a593Smuzhiyun			pinctrl-1 = <&u0_a_1_sleep>;
215*4882a593Smuzhiyun			status = "okay";
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun			/* FIXME: not quite working yet, probably needs regulators */
218*4882a593Smuzhiyun			bluetooth {
219*4882a593Smuzhiyun				compatible = "brcm,bcm4330-bt";
220*4882a593Smuzhiyun				shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
221*4882a593Smuzhiyun				device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
222*4882a593Smuzhiyun				host-wakeup-gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
223*4882a593Smuzhiyun				pinctrl-names = "default";
224*4882a593Smuzhiyun				pinctrl-0 = <&bluetooth_default_mode>;
225*4882a593Smuzhiyun			};
226*4882a593Smuzhiyun		};
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun		/* GPF UART */
229*4882a593Smuzhiyun		uart@80121000 {
230*4882a593Smuzhiyun			status = "okay";
231*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
232*4882a593Smuzhiyun			pinctrl-0 = <&u1rxtx_a_1_default &u1ctsrts_a_1_default>;
233*4882a593Smuzhiyun			pinctrl-1 = <&u1rxtx_a_1_sleep &u1ctsrts_a_1_sleep>;
234*4882a593Smuzhiyun		};
235*4882a593Smuzhiyun
236*4882a593Smuzhiyun		/* Debugging console UART connected to AB8505 USB */
237*4882a593Smuzhiyun		uart@80007000 {
238*4882a593Smuzhiyun			status = "okay";
239*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
240*4882a593Smuzhiyun			pinctrl-0 = <&u2rxtx_c_1_default>;
241*4882a593Smuzhiyun			pinctrl-1 = <&u2rxtx_c_1_sleep>;
242*4882a593Smuzhiyun		};
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun		prcmu@80157000 {
245*4882a593Smuzhiyun			ab8505 {
246*4882a593Smuzhiyun				ab8500_usb {
247*4882a593Smuzhiyun					pinctrl-names = "default", "sleep";
248*4882a593Smuzhiyun					pinctrl-0 = <&usb_a_1_default>;
249*4882a593Smuzhiyun					pinctrl-1 = <&usb_a_1_sleep>;
250*4882a593Smuzhiyun				};
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun				ab8505-regulators {
253*4882a593Smuzhiyun					ab8500_ldo_aux1 {
254*4882a593Smuzhiyun						/* Used for VDD for sensors */
255*4882a593Smuzhiyun						regulator-name = "AUX1";
256*4882a593Smuzhiyun						regulator-min-microvolt = <3000000>;
257*4882a593Smuzhiyun						regulator-max-microvolt = <3300000>;
258*4882a593Smuzhiyun					};
259*4882a593Smuzhiyun
260*4882a593Smuzhiyun					ab8500_ldo_aux2 {
261*4882a593Smuzhiyun						/* Supplies the Cypress TMA140 touchscreen only with 3.0V */
262*4882a593Smuzhiyun						regulator-name = "AUX2";
263*4882a593Smuzhiyun						regulator-min-microvolt = <3000000>;
264*4882a593Smuzhiyun						regulator-max-microvolt = <3000000>;
265*4882a593Smuzhiyun					};
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun					ab8500_ldo_aux3 {
268*4882a593Smuzhiyun						/* Used for voltage for external MMC/SD card */
269*4882a593Smuzhiyun						regulator-name = "AUX3";
270*4882a593Smuzhiyun						regulator-min-microvolt = <1100000>;
271*4882a593Smuzhiyun						regulator-max-microvolt = <3300000>;
272*4882a593Smuzhiyun					};
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun					ab8500_ldo_aux4 {
275*4882a593Smuzhiyun						regulator-name = "AUX4";
276*4882a593Smuzhiyun						/* Hammer to 3.0V for the display */
277*4882a593Smuzhiyun						regulator-min-microvolt = <3000000>;
278*4882a593Smuzhiyun						regulator-max-microvolt = <3000000>;
279*4882a593Smuzhiyun					};
280*4882a593Smuzhiyun
281*4882a593Smuzhiyun					ab8500_ldo_aux5 {
282*4882a593Smuzhiyun						regulator-name = "AUX5";
283*4882a593Smuzhiyun						/* Intended for 1V8 for touchscreen but actually left unused */
284*4882a593Smuzhiyun						regulator-min-microvolt = <1050000>;
285*4882a593Smuzhiyun						regulator-max-microvolt = <2790000>;
286*4882a593Smuzhiyun					};
287*4882a593Smuzhiyun
288*4882a593Smuzhiyun					ab8500_ldo_aux6 {
289*4882a593Smuzhiyun						regulator-name = "AUX6";
290*4882a593Smuzhiyun						/* Hammer to 1.8V for the display */
291*4882a593Smuzhiyun						regulator-min-microvolt = <1800000>;
292*4882a593Smuzhiyun						regulator-max-microvolt = <1800000>;
293*4882a593Smuzhiyun					};
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun					ab8500_ldo_aux8 {
296*4882a593Smuzhiyun						/* Mostly VIO for sensors */
297*4882a593Smuzhiyun						regulator-name = "AUX8";
298*4882a593Smuzhiyun					};
299*4882a593Smuzhiyun				};
300*4882a593Smuzhiyun			};
301*4882a593Smuzhiyun		};
302*4882a593Smuzhiyun
303*4882a593Smuzhiyun		/* I2C0 */
304*4882a593Smuzhiyun		i2c@80004000 {
305*4882a593Smuzhiyun			status = "okay";
306*4882a593Smuzhiyun
307*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
308*4882a593Smuzhiyun			pinctrl-0 = <&i2c0_a_1_default>;
309*4882a593Smuzhiyun			pinctrl-1 = <&i2c0_a_1_sleep>;
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun			proximity@44 {
312*4882a593Smuzhiyun				compatible = "sharp,gp2ap002s00f";
313*4882a593Smuzhiyun				clock-frequency = <400000>;
314*4882a593Smuzhiyun				reg = <0x44>;
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun				interrupt-parent = <&gpio4>;
317*4882a593Smuzhiyun				interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
318*4882a593Smuzhiyun				vdd-supply = <&ab8500_ldo_aux1_reg>;
319*4882a593Smuzhiyun				vio-supply = <&ab8500_ldo_aux8_reg>;
320*4882a593Smuzhiyun				pinctrl-names = "default";
321*4882a593Smuzhiyun				pinctrl-0 = <&gp2ap002_skomer_default>;
322*4882a593Smuzhiyun				sharp,proximity-far-hysteresis = /bits/ 8 <0x2f>;
323*4882a593Smuzhiyun				sharp,proximity-close-hysteresis = /bits/ 8 <0x0f>;
324*4882a593Smuzhiyun			};
325*4882a593Smuzhiyun		};
326*4882a593Smuzhiyun
327*4882a593Smuzhiyun
328*4882a593Smuzhiyun		/* I2C2 */
329*4882a593Smuzhiyun		i2c@80128000 {
330*4882a593Smuzhiyun			status = "okay";
331*4882a593Smuzhiyun
332*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
333*4882a593Smuzhiyun			pinctrl-0 = <&i2c2_b_2_default>;
334*4882a593Smuzhiyun			pinctrl-1 = <&i2c2_b_2_sleep>;
335*4882a593Smuzhiyun
336*4882a593Smuzhiyun			accel@18 {
337*4882a593Smuzhiyun				compatible = "bosch,bma254";
338*4882a593Smuzhiyun				clock-frequency = <400000>;
339*4882a593Smuzhiyun				reg = <0x18>;
340*4882a593Smuzhiyun
341*4882a593Smuzhiyun				/* GPIO224 used as "smart alert" interrupt */
342*4882a593Smuzhiyun				interrupt-parent = <&gpio7>;
343*4882a593Smuzhiyun				interrupts = <0 IRQ_TYPE_EDGE_RISING>;
344*4882a593Smuzhiyun
345*4882a593Smuzhiyun				mount-matrix = "0", "-1", "0",
346*4882a593Smuzhiyun					      "1", "0", "0",
347*4882a593Smuzhiyun					       "0", "0", "1";
348*4882a593Smuzhiyun				vdd-supply = <&ab8500_ldo_aux1_reg>;
349*4882a593Smuzhiyun				vddio-supply = <&ab8500_ldo_aux8_reg>;
350*4882a593Smuzhiyun				pinctrl-names = "default";
351*4882a593Smuzhiyun				pinctrl-0 = <&bma254_skomer_default>;
352*4882a593Smuzhiyun			};
353*4882a593Smuzhiyun		};
354*4882a593Smuzhiyun
355*4882a593Smuzhiyun		/* I2C3 */
356*4882a593Smuzhiyun		i2c@80110000 {
357*4882a593Smuzhiyun			status = "okay";
358*4882a593Smuzhiyun
359*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
360*4882a593Smuzhiyun			pinctrl-0 = <&i2c3_c_2_default>;
361*4882a593Smuzhiyun			pinctrl-1 = <&i2c3_c_2_sleep>;
362*4882a593Smuzhiyun
363*4882a593Smuzhiyun			/* Cypress CY8CTMA140 touchscreen */
364*4882a593Smuzhiyun			touchscreen@20 {
365*4882a593Smuzhiyun				compatible = "cypress,cy8ctma140";
366*4882a593Smuzhiyun				clock-frequency = <400000>;
367*4882a593Smuzhiyun				reg = <0x20>;
368*4882a593Smuzhiyun
369*4882a593Smuzhiyun				touchscreen-size-x = <480>;
370*4882a593Smuzhiyun				touchscreen-size-y = <800>;
371*4882a593Smuzhiyun				touchscreen-max-pressure = <255>;
372*4882a593Smuzhiyun
373*4882a593Smuzhiyun				/* GPIO218 for IRQ */
374*4882a593Smuzhiyun				interrupt-parent = <&gpio6>;
375*4882a593Smuzhiyun				interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
376*4882a593Smuzhiyun
377*4882a593Smuzhiyun				/* VDD is "digital supply" nominally 1.71-3.6V */
378*4882a593Smuzhiyun				vdd-supply = <&ab8500_ldo_aux2_reg>;
379*4882a593Smuzhiyun				/* VCPIN is "analog supply", 2.7-3.6 V */
380*4882a593Smuzhiyun				vcpin-supply = <&ab8500_ldo_aux2_reg>;
381*4882a593Smuzhiyun
382*4882a593Smuzhiyun				pinctrl-names = "default";
383*4882a593Smuzhiyun				pinctrl-0 = <&tma140_skomer_default>;
384*4882a593Smuzhiyun			};
385*4882a593Smuzhiyun		};
386*4882a593Smuzhiyun
387*4882a593Smuzhiyun		mcde@a0350000 {
388*4882a593Smuzhiyun			status = "okay";
389*4882a593Smuzhiyun			pinctrl-names = "default";
390*4882a593Smuzhiyun			pinctrl-0 = <&dsi_default_mode>;
391*4882a593Smuzhiyun
392*4882a593Smuzhiyun			dsi-controller@a0351000 {
393*4882a593Smuzhiyun				panel {
394*4882a593Smuzhiyun					/* NT35510-based Hydis HVA40WV1 */
395*4882a593Smuzhiyun					compatible = "hydis,hva40wv1", "novatek,nt35510";
396*4882a593Smuzhiyun					reg = <0>;
397*4882a593Smuzhiyun					/* v_lcd_3v0 2.3-4.8V */
398*4882a593Smuzhiyun					vdd-supply = <&ab8500_ldo_aux4_reg>;
399*4882a593Smuzhiyun					/* v_lcd_1v8 1.65-3.3V */
400*4882a593Smuzhiyun					vddi-supply = <&ab8500_ldo_aux6_reg>;
401*4882a593Smuzhiyun					/* GPIO 139 */
402*4882a593Smuzhiyun					reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
403*4882a593Smuzhiyun					pinctrl-names = "default";
404*4882a593Smuzhiyun					pinctrl-0 = <&display_default_mode>;
405*4882a593Smuzhiyun					backlight = <&ktd253>;
406*4882a593Smuzhiyun				};
407*4882a593Smuzhiyun			};
408*4882a593Smuzhiyun		};
409*4882a593Smuzhiyun	};
410*4882a593Smuzhiyun};
411*4882a593Smuzhiyun
412*4882a593Smuzhiyun&pinctrl {
413*4882a593Smuzhiyun	/*
414*4882a593Smuzhiyun	 * This extends the MC0 default config to include DAT32DIR
415*4882a593Smuzhiyun	 * which is used by this machine. If we don't do this the
416*4882a593Smuzhiyun	 * SD card does not work.
417*4882a593Smuzhiyun	 */
418*4882a593Smuzhiyun	sdi0 {
419*4882a593Smuzhiyun		mc0_a_1_default {
420*4882a593Smuzhiyun			default_mux {
421*4882a593Smuzhiyun				function = "mc0";
422*4882a593Smuzhiyun				/* This machine uses the DAT31 pin */
423*4882a593Smuzhiyun				groups = "mc0_a_1", "mc0dat31dir_a_1";
424*4882a593Smuzhiyun			};
425*4882a593Smuzhiyun			default_cfg5 {
426*4882a593Smuzhiyun				pins = "GPIO21_AB3"; /* DAT31DIR */
427*4882a593Smuzhiyun				ste,config = <&out_hi>;
428*4882a593Smuzhiyun			};
429*4882a593Smuzhiyun		};
430*4882a593Smuzhiyun	};
431*4882a593Smuzhiyun
432*4882a593Smuzhiyun	mcde {
433*4882a593Smuzhiyun		dsi_default_mode: dsi_default {
434*4882a593Smuzhiyun			default_mux1 {
435*4882a593Smuzhiyun				/* Mux in VSI0 used for DSI TE */
436*4882a593Smuzhiyun				function = "lcd";
437*4882a593Smuzhiyun				groups = "lcdvsi0_a_1"; /* VSI0 for LCD */
438*4882a593Smuzhiyun			};
439*4882a593Smuzhiyun			default_cfg1 {
440*4882a593Smuzhiyun				pins = "GPIO68_E1"; /* VSI0 */
441*4882a593Smuzhiyun				ste,config = <&in_nopull>;
442*4882a593Smuzhiyun			};
443*4882a593Smuzhiyun		};
444*4882a593Smuzhiyun	};
445*4882a593Smuzhiyun
446*4882a593Smuzhiyun	/* Two GPIO lines used by the display */
447*4882a593Smuzhiyun	display {
448*4882a593Smuzhiyun		display_default_mode: display_default {
449*4882a593Smuzhiyun			skomer_cfg1 {
450*4882a593Smuzhiyun				/*
451*4882a593Smuzhiyun				 * OLED DETECT or check_pba, this appears to be high
452*4882a593Smuzhiyun				 * on "PBA" which I guess is "prototype board A".
453*4882a593Smuzhiyun				 */
454*4882a593Smuzhiyun				pins = "GPIO93_B7";
455*4882a593Smuzhiyun				ste,config = <&gpio_in_nopull>;
456*4882a593Smuzhiyun			};
457*4882a593Smuzhiyun			skomer_cfg2 {
458*4882a593Smuzhiyun				pins = "GPIO139_C9";
459*4882a593Smuzhiyun				/*
460*4882a593Smuzhiyun				 * MIPI_DSI0_RESET_N resets the display, leave high
461*4882a593Smuzhiyun				 * (de-asserted) so we only assert reset explicitly
462*4882a593Smuzhiyun				 * from the display driver.
463*4882a593Smuzhiyun				 */
464*4882a593Smuzhiyun				ste,config = <&gpio_out_hi>;
465*4882a593Smuzhiyun			};
466*4882a593Smuzhiyun		};
467*4882a593Smuzhiyun	};
468*4882a593Smuzhiyun	backlight {
469*4882a593Smuzhiyun		gpio_backlight_default_mode: backlight_default {
470*4882a593Smuzhiyun			skomer_cfg1 {
471*4882a593Smuzhiyun				pins = "GPIO69_E2"; /* LCD_BL_CTRL */
472*4882a593Smuzhiyun				ste,config = <&gpio_out_lo>;
473*4882a593Smuzhiyun			};
474*4882a593Smuzhiyun		};
475*4882a593Smuzhiyun	};
476*4882a593Smuzhiyun	/* GPIO that enables the 2.9V SD card level translator */
477*4882a593Smuzhiyun	sd-level-translator {
478*4882a593Smuzhiyun		sd_level_translator_default: sd_level_translator_default {
479*4882a593Smuzhiyun			/* level shifter on GPIO87 */
480*4882a593Smuzhiyun			skomer_cfg1 {
481*4882a593Smuzhiyun				pins = "GPIO87_B3";
482*4882a593Smuzhiyun				ste,config = <&gpio_out_hi>;
483*4882a593Smuzhiyun			};
484*4882a593Smuzhiyun		};
485*4882a593Smuzhiyun	};
486*4882a593Smuzhiyun	/* GPIO that enables the LDO regulator for the eMMC */
487*4882a593Smuzhiyun	emmc-ldo {
488*4882a593Smuzhiyun		emmc_ldo_en_default_mode: emmc_ldo_default {
489*4882a593Smuzhiyun			/* LDO enable on GPIO223 */
490*4882a593Smuzhiyun			skomer_cfg1 {
491*4882a593Smuzhiyun				pins = "GPIO223_AH9";
492*4882a593Smuzhiyun				ste,config = <&gpio_out_hi>;
493*4882a593Smuzhiyun			};
494*4882a593Smuzhiyun		};
495*4882a593Smuzhiyun	};
496*4882a593Smuzhiyun	/* GPIO keys */
497*4882a593Smuzhiyun	gpio-keys {
498*4882a593Smuzhiyun		gpio_keys_default_mode: gpio_keys_default {
499*4882a593Smuzhiyun			skomer_cfg1 {
500*4882a593Smuzhiyun				pins = "GPIO67_G2", /* VOL UP */
501*4882a593Smuzhiyun				       "GPIO91_B6", /* HOME */
502*4882a593Smuzhiyun				       "GPIO92_D6", /* VOL DOWN */
503*4882a593Smuzhiyun				       "GPIO204_AF23", /* MENU */
504*4882a593Smuzhiyun				       "GPIO205_AG23"; /* BACK */
505*4882a593Smuzhiyun					ste,config = <&gpio_in_pu>;
506*4882a593Smuzhiyun			};
507*4882a593Smuzhiyun		};
508*4882a593Smuzhiyun	};
509*4882a593Smuzhiyun	/* Interrupt line for BMA254 */
510*4882a593Smuzhiyun	bma254 {
511*4882a593Smuzhiyun		bma254_skomer_default: bma254_skomer {
512*4882a593Smuzhiyun			skomer_cfg1 {
513*4882a593Smuzhiyun				pins = "GPIO224_AG9";
514*4882a593Smuzhiyun				ste,config = <&gpio_in_pd>;
515*4882a593Smuzhiyun			};
516*4882a593Smuzhiyun		};
517*4882a593Smuzhiyun	};
518*4882a593Smuzhiyun	/* Interrupt line for light/proximity sensor GP2AP002 */
519*4882a593Smuzhiyun	gp2ap002 {
520*4882a593Smuzhiyun		gp2ap002_skomer_default: gp2ap002_skomer {
521*4882a593Smuzhiyun			skomer_cfg1 {
522*4882a593Smuzhiyun				pins = "GPIO146_D13";
523*4882a593Smuzhiyun				ste,config = <&gpio_in_nopull>;
524*4882a593Smuzhiyun			};
525*4882a593Smuzhiyun		};
526*4882a593Smuzhiyun	};
527*4882a593Smuzhiyun	/* GPIO-based I2C bus for NCP6914 */
528*4882a593Smuzhiyun	i2c-gpio-0 {
529*4882a593Smuzhiyun		i2c_gpio_0_default: i2c_gpio_0 {
530*4882a593Smuzhiyun			skomer_cfg1 {
531*4882a593Smuzhiyun				pins = "GPIO143_D12", "GPIO144_B13";
532*4882a593Smuzhiyun				ste,config = <&gpio_in_nopull>;
533*4882a593Smuzhiyun			};
534*4882a593Smuzhiyun		};
535*4882a593Smuzhiyun	};
536*4882a593Smuzhiyun	/* GPIO-based I2C bus for ALPS HSCD compass */
537*4882a593Smuzhiyun	i2c-gpio-1 {
538*4882a593Smuzhiyun		i2c_gpio_1_default: i2c_gpio_1 {
539*4882a593Smuzhiyun			skomer_cfg1 {
540*4882a593Smuzhiyun				pins = "GPIO151_B17", "GPIO152_D16";
541*4882a593Smuzhiyun				ste,config = <&gpio_in_nopull>;
542*4882a593Smuzhiyun			};
543*4882a593Smuzhiyun		};
544*4882a593Smuzhiyun	};
545*4882a593Smuzhiyun	wlan {
546*4882a593Smuzhiyun		wlan_default_mode: wlan_default {
547*4882a593Smuzhiyun			skomer_cfg1 {
548*4882a593Smuzhiyun				pins = "GPIO216_AG12";
549*4882a593Smuzhiyun				ste,config = <&gpio_in_pd>;
550*4882a593Smuzhiyun			};
551*4882a593Smuzhiyun		};
552*4882a593Smuzhiyun		wlan_en_default_mode: wlan_en_default {
553*4882a593Smuzhiyun			skomer_cfg2 {
554*4882a593Smuzhiyun				pins = "GPIO215_AH13";
555*4882a593Smuzhiyun				ste,config = <&gpio_out_lo>;
556*4882a593Smuzhiyun			};
557*4882a593Smuzhiyun		};
558*4882a593Smuzhiyun	};
559*4882a593Smuzhiyun	bluetooth {
560*4882a593Smuzhiyun		bluetooth_default_mode: bluetooth_default {
561*4882a593Smuzhiyun			skomer_cfg1 {
562*4882a593Smuzhiyun				pins = "GPIO199_AH23", "GPIO222_AJ9";
563*4882a593Smuzhiyun				ste,config = <&gpio_out_lo>;
564*4882a593Smuzhiyun			};
565*4882a593Smuzhiyun			skomer_cfg2 {
566*4882a593Smuzhiyun				pins = "GPIO97_D9";
567*4882a593Smuzhiyun				ste,config = <&gpio_in_nopull>;
568*4882a593Smuzhiyun			};
569*4882a593Smuzhiyun		};
570*4882a593Smuzhiyun	};
571*4882a593Smuzhiyun	vibrator {
572*4882a593Smuzhiyun		vibrator_default: vibrator_default {
573*4882a593Smuzhiyun			skomer_cfg1 {
574*4882a593Smuzhiyun				pins = "GPIO195_AG28";	/* MOT_EN */
575*4882a593Smuzhiyun				ste,config = <&gpio_out_lo>;
576*4882a593Smuzhiyun			};
577*4882a593Smuzhiyun		};
578*4882a593Smuzhiyun	};
579*4882a593Smuzhiyun	/* Interrupt line for the Cypress TMA140 touchscreen */
580*4882a593Smuzhiyun	touchscreen {
581*4882a593Smuzhiyun		tma140_skomer_default: tma140_skomer {
582*4882a593Smuzhiyun			skomer_cfg1 {
583*4882a593Smuzhiyun				pins = "GPIO218_AH11";
584*4882a593Smuzhiyun				ste,config = <&gpio_in_nopull>;
585*4882a593Smuzhiyun			};
586*4882a593Smuzhiyun		};
587*4882a593Smuzhiyun	};
588*4882a593Smuzhiyun};
589*4882a593Smuzhiyun
590*4882a593Smuzhiyun&ab8505_gpio {
591*4882a593Smuzhiyun	/* Hog a few default settings */
592*4882a593Smuzhiyun	pinctrl-names = "default";
593*4882a593Smuzhiyun	pinctrl-0 = <&gpio_default>;
594*4882a593Smuzhiyun
595*4882a593Smuzhiyun	gpio {
596*4882a593Smuzhiyun		gpio_default: gpio_default {
597*4882a593Smuzhiyun			skomer_mux {
598*4882a593Smuzhiyun				/* Change unused pins to GPIO mode */
599*4882a593Smuzhiyun				function = "gpio";
600*4882a593Smuzhiyun				groups = "gpio3_a_1",	/* default: SysClkReq4 */
601*4882a593Smuzhiyun					 "gpio14_a_1";	/* default: PWMOut1 */
602*4882a593Smuzhiyun			};
603*4882a593Smuzhiyun			skomer_cfg1 {
604*4882a593Smuzhiyun				pins = "GPIO11_B17", "GPIO13_D17", "GPIO50_L4";
605*4882a593Smuzhiyun				bias-disable;
606*4882a593Smuzhiyun			};
607*4882a593Smuzhiyun		};
608*4882a593Smuzhiyun	};
609*4882a593Smuzhiyun};
610