xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/ste-snowball.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-or-later
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Copyright 2011 ST-Ericsson AB
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun/dts-v1/;
7*4882a593Smuzhiyun#include "ste-db9500.dtsi"
8*4882a593Smuzhiyun#include "ste-href-ab8500.dtsi"
9*4882a593Smuzhiyun#include "ste-href-family-pinctrl.dtsi"
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun/ {
12*4882a593Smuzhiyun	model = "Calao Systems Snowball platform with device tree";
13*4882a593Smuzhiyun	compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500";
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun	memory {
16*4882a593Smuzhiyun		device_type = "memory";
17*4882a593Smuzhiyun		reg = <0x00000000 0x20000000>;
18*4882a593Smuzhiyun	};
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun	en_3v3_reg: en_3v3 {
21*4882a593Smuzhiyun		compatible = "regulator-fixed";
22*4882a593Smuzhiyun		regulator-name = "en-3v3-fixed-supply";
23*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
24*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
25*4882a593Smuzhiyun		/* AB8500 GPIOs start from 1 - offset 25 is GPIO26. */
26*4882a593Smuzhiyun		gpio = <&ab8500_gpio 25 0x4>;
27*4882a593Smuzhiyun		startup-delay-us = <5000>;
28*4882a593Smuzhiyun		enable-active-high;
29*4882a593Smuzhiyun	};
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun	gpio_keys {
32*4882a593Smuzhiyun		compatible = "gpio-keys";
33*4882a593Smuzhiyun		#address-cells = <1>;
34*4882a593Smuzhiyun		#size-cells = <0>;
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun		button@1 {
37*4882a593Smuzhiyun			debounce-interval = <50>;
38*4882a593Smuzhiyun			wakeup-source;
39*4882a593Smuzhiyun			linux,code = <2>;
40*4882a593Smuzhiyun			label = "userpb";
41*4882a593Smuzhiyun			gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
42*4882a593Smuzhiyun		};
43*4882a593Smuzhiyun		button@2 {
44*4882a593Smuzhiyun			debounce-interval = <50>;
45*4882a593Smuzhiyun			wakeup-source;
46*4882a593Smuzhiyun			linux,code = <3>;
47*4882a593Smuzhiyun			label = "extkb1";
48*4882a593Smuzhiyun			gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
49*4882a593Smuzhiyun		};
50*4882a593Smuzhiyun		button@3 {
51*4882a593Smuzhiyun			debounce-interval = <50>;
52*4882a593Smuzhiyun			wakeup-source;
53*4882a593Smuzhiyun			linux,code = <4>;
54*4882a593Smuzhiyun			label = "extkb2";
55*4882a593Smuzhiyun			gpios = <&gpio4 24 GPIO_ACTIVE_HIGH>;
56*4882a593Smuzhiyun		};
57*4882a593Smuzhiyun		button@4 {
58*4882a593Smuzhiyun			debounce-interval = <50>;
59*4882a593Smuzhiyun			wakeup-source;
60*4882a593Smuzhiyun			linux,code = <5>;
61*4882a593Smuzhiyun			label = "extkb3";
62*4882a593Smuzhiyun			gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
63*4882a593Smuzhiyun		};
64*4882a593Smuzhiyun		button@5 {
65*4882a593Smuzhiyun			debounce-interval = <50>;
66*4882a593Smuzhiyun			wakeup-source;
67*4882a593Smuzhiyun			linux,code = <6>;
68*4882a593Smuzhiyun			label = "extkb4";
69*4882a593Smuzhiyun			gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>;
70*4882a593Smuzhiyun		};
71*4882a593Smuzhiyun	};
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun	leds {
74*4882a593Smuzhiyun		compatible = "gpio-leds";
75*4882a593Smuzhiyun		pinctrl-names = "default";
76*4882a593Smuzhiyun		pinctrl-0 = <&gpioled_snowball_mode>;
77*4882a593Smuzhiyun		used-led {
78*4882a593Smuzhiyun			label = "user_led";
79*4882a593Smuzhiyun			gpios = <&gpio4 14 GPIO_ACTIVE_HIGH>;
80*4882a593Smuzhiyun			default-state = "on";
81*4882a593Smuzhiyun			linux,default-trigger = "heartbeat";
82*4882a593Smuzhiyun		};
83*4882a593Smuzhiyun	};
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun	soc {
86*4882a593Smuzhiyun		/* Name the GPIO muxed rails on the Snowball board */
87*4882a593Smuzhiyun		gpio@8012e000 {
88*4882a593Smuzhiyun			/* GPIOs 0 - 31 */
89*4882a593Smuzhiyun			gpio-line-names = "", "", "", "", "", "", "", "",
90*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "",
91*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "",
92*4882a593Smuzhiyun				     "", "", "", "", "", "", "",
93*4882a593Smuzhiyun				     "AP_GPIO31";
94*4882a593Smuzhiyun		};
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun		gpio@8012e080 {
97*4882a593Smuzhiyun			/* GPIOs 32 - 63 */
98*4882a593Smuzhiyun			gpio-line-names = "USR PB", "", "", "", "", "", "", "",
99*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "",
100*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "",
101*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "";
102*4882a593Smuzhiyun		};
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun		gpio@8000e000 {
105*4882a593Smuzhiyun			/* GPIOs 64 - 95 */
106*4882a593Smuzhiyun			gpio-line-names = "", "", "", "", "AP_GPIO68", "", "", "",
107*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "",
108*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "",
109*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "";
110*4882a593Smuzhiyun		};
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun		gpio@8000e100 {
113*4882a593Smuzhiyun			/* GPIOs 128 - 159 */
114*4882a593Smuzhiyun			gpio-line-names = "", "", "", "", "", "", "", "",
115*4882a593Smuzhiyun				     "", "", "", "", "IRQ_LAN", "RSTn_LAN",
116*4882a593Smuzhiyun				     "USR_LED", "", "", "", "", "", "",
117*4882a593Smuzhiyun				     "", "", "AP_GPIO151", "AP_GPIO152",
118*4882a593Smuzhiyun				     "", "", "", "", "", "", "";
119*4882a593Smuzhiyun		};
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun		gpio@8000e180 {
122*4882a593Smuzhiyun			/* GPIOs 160 - 191 */
123*4882a593Smuzhiyun			gpio-line-names = "", "AP_GPIO161", "AP_GPIO162",
124*4882a593Smuzhiyun				     "ACCELEROMETER_INT1_RDY",
125*4882a593Smuzhiyun				     "ACCELEROMETER_INT2", "MAG_DRDY",
126*4882a593Smuzhiyun				     "GYRO_DRDY", "RSTn_MLC", "RSTn_SLC",
127*4882a593Smuzhiyun				     "GYRO_INT", "UART_WAKE", "GBF_RESET",
128*4882a593Smuzhiyun				     "", "", "", "",
129*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "",
130*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "";
131*4882a593Smuzhiyun		};
132*4882a593Smuzhiyun
133*4882a593Smuzhiyun		gpio@8011e000 {
134*4882a593Smuzhiyun			/* GPIOs 192 - 223 */
135*4882a593Smuzhiyun			gpio-line-names = "HDTV_INTn", "", "", "", "HDTV_RST",
136*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "", "",
137*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "", "",
138*4882a593Smuzhiyun				     "WLAN_RESETN", "WLAN_IRQ", "MMC_EN",
139*4882a593Smuzhiyun				     "MMC_CD", "", "", "", "", "";
140*4882a593Smuzhiyun		};
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun		gpio@8011e080 {
143*4882a593Smuzhiyun			/* GPIOs 224 - 255 */
144*4882a593Smuzhiyun			gpio-line-names = "", "", "", "", "SD_SEL", "", "", "",
145*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "",
146*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "",
147*4882a593Smuzhiyun				     "", "", "", "", "", "", "", "";
148*4882a593Smuzhiyun		};
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun		msp0: msp@80123000 {
151*4882a593Smuzhiyun			pinctrl-names = "default";
152*4882a593Smuzhiyun			pinctrl-0 = <&msp0txrxtfstck_a_1_default>;
153*4882a593Smuzhiyun			status = "okay";
154*4882a593Smuzhiyun		};
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun		msp1: msp@80124000 {
157*4882a593Smuzhiyun			pinctrl-names = "default";
158*4882a593Smuzhiyun			pinctrl-0 = <&msp1txrx_a_1_default>;
159*4882a593Smuzhiyun			status = "okay";
160*4882a593Smuzhiyun		};
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun		msp2: msp@80117000 {
163*4882a593Smuzhiyun			pinctrl-names = "default";
164*4882a593Smuzhiyun			pinctrl-0 = <&msp2_a_1_default>;
165*4882a593Smuzhiyun		};
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun		msp3: msp@80125000 {
168*4882a593Smuzhiyun			status = "okay";
169*4882a593Smuzhiyun		};
170*4882a593Smuzhiyun
171*4882a593Smuzhiyun		external-bus@50000000 {
172*4882a593Smuzhiyun			status = "okay";
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun			ethernet@0 {
175*4882a593Smuzhiyun				compatible = "smsc,lan9115";
176*4882a593Smuzhiyun				reg = <0 0x10000>;
177*4882a593Smuzhiyun				interrupts = <12 IRQ_TYPE_EDGE_RISING>;
178*4882a593Smuzhiyun				interrupt-parent = <&gpio4>;
179*4882a593Smuzhiyun				vdd33a-supply = <&en_3v3_reg>;
180*4882a593Smuzhiyun				vddvario-supply = <&db8500_vape_reg>;
181*4882a593Smuzhiyun				pinctrl-names = "default";
182*4882a593Smuzhiyun				pinctrl-0 = <&eth_snowball_mode>;
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun				reg-shift = <1>;
185*4882a593Smuzhiyun				reg-io-width = <2>;
186*4882a593Smuzhiyun				smsc,force-internal-phy;
187*4882a593Smuzhiyun				smsc,irq-active-high;
188*4882a593Smuzhiyun				smsc,irq-push-pull;
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun				clocks = <&prcc_pclk 3 0>;
191*4882a593Smuzhiyun			};
192*4882a593Smuzhiyun		};
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun		/* ST6G3244ME level translator for 1.8/2.9 V */
195*4882a593Smuzhiyun		vmmci: regulator-gpio {
196*4882a593Smuzhiyun			compatible = "regulator-gpio";
197*4882a593Smuzhiyun
198*4882a593Smuzhiyun			/* GPIO228 SD_SEL */
199*4882a593Smuzhiyun			gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;
200*4882a593Smuzhiyun			/* GPIO217 MMC_EN */
201*4882a593Smuzhiyun			enable-gpio = <&gpio6 25 GPIO_ACTIVE_HIGH>;
202*4882a593Smuzhiyun			enable-active-high;
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun			regulator-min-microvolt = <1800000>;
205*4882a593Smuzhiyun			regulator-max-microvolt = <2900000>;
206*4882a593Smuzhiyun			regulator-name = "mmci-reg";
207*4882a593Smuzhiyun			regulator-type = "voltage";
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun			startup-delay-us = <100>;
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun			states = <1800000 0x1
212*4882a593Smuzhiyun				  2900000 0x0>;
213*4882a593Smuzhiyun		};
214*4882a593Smuzhiyun
215*4882a593Smuzhiyun		// External Micro SD slot
216*4882a593Smuzhiyun		sdi0_per1@80126000 {
217*4882a593Smuzhiyun			arm,primecell-periphid = <0x10480180>;
218*4882a593Smuzhiyun			max-frequency = <100000000>;
219*4882a593Smuzhiyun			bus-width = <4>;
220*4882a593Smuzhiyun			cap-sd-highspeed;
221*4882a593Smuzhiyun			cap-mmc-highspeed;
222*4882a593Smuzhiyun			sd-uhs-sdr12;
223*4882a593Smuzhiyun			sd-uhs-sdr25;
224*4882a593Smuzhiyun			/* All direction control is used */
225*4882a593Smuzhiyun			st,sig-dir-cmd;
226*4882a593Smuzhiyun			st,sig-dir-dat0;
227*4882a593Smuzhiyun			st,sig-dir-dat2;
228*4882a593Smuzhiyun			st,sig-dir-dat31;
229*4882a593Smuzhiyun			st,sig-pin-fbclk;
230*4882a593Smuzhiyun			full-pwr-cycle;
231*4882a593Smuzhiyun			vmmc-supply = <&ab8500_ldo_aux3_reg>;
232*4882a593Smuzhiyun			vqmmc-supply = <&vmmci>;
233*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
234*4882a593Smuzhiyun			pinctrl-0 = <&mc0_a_1_default &sdi0_default_mode>;
235*4882a593Smuzhiyun			pinctrl-1 = <&mc0_a_1_sleep>;
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun			/* GPIO218 MMC_CD */
238*4882a593Smuzhiyun			cd-gpios  = <&gpio6 26 GPIO_ACTIVE_LOW>;
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun			status = "okay";
241*4882a593Smuzhiyun		};
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun		// WLAN SDIO channel
244*4882a593Smuzhiyun		sdi1_per2@80118000 {
245*4882a593Smuzhiyun			arm,primecell-periphid = <0x10480180>;
246*4882a593Smuzhiyun			max-frequency = <100000000>;
247*4882a593Smuzhiyun			bus-width = <4>;
248*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
249*4882a593Smuzhiyun			pinctrl-0 = <&mc1_a_1_default>;
250*4882a593Smuzhiyun			pinctrl-1 = <&mc1_a_1_sleep>;
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun			status = "okay";
253*4882a593Smuzhiyun		};
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun		// Unused PoP eMMC - register and put it to sleep by default */
256*4882a593Smuzhiyun		sdi2_per3@80005000 {
257*4882a593Smuzhiyun			arm,primecell-periphid = <0x10480180>;
258*4882a593Smuzhiyun			pinctrl-names = "default";
259*4882a593Smuzhiyun			pinctrl-0 = <&mc2_a_1_sleep>;
260*4882a593Smuzhiyun
261*4882a593Smuzhiyun			status = "okay";
262*4882a593Smuzhiyun		};
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun		// On-board eMMC
265*4882a593Smuzhiyun		sdi4_per2@80114000 {
266*4882a593Smuzhiyun			arm,primecell-periphid = <0x10480180>;
267*4882a593Smuzhiyun		        max-frequency = <100000000>;
268*4882a593Smuzhiyun			bus-width = <8>;
269*4882a593Smuzhiyun			cap-mmc-highspeed;
270*4882a593Smuzhiyun			vmmc-supply = <&ab8500_ldo_aux2_reg>;
271*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
272*4882a593Smuzhiyun			pinctrl-0 = <&mc4_a_1_default>;
273*4882a593Smuzhiyun			pinctrl-1 = <&mc4_a_1_sleep>;
274*4882a593Smuzhiyun
275*4882a593Smuzhiyun			status = "okay";
276*4882a593Smuzhiyun		};
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun		uart@80120000 {
279*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
280*4882a593Smuzhiyun			pinctrl-0 = <&u0_a_1_default>;
281*4882a593Smuzhiyun			pinctrl-1 = <&u0_a_1_sleep>;
282*4882a593Smuzhiyun			status = "okay";
283*4882a593Smuzhiyun		};
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun		/* This UART is unused and thus left disabled */
286*4882a593Smuzhiyun		uart@80121000 {
287*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
288*4882a593Smuzhiyun			pinctrl-0 = <&u1rxtx_a_1_default>;
289*4882a593Smuzhiyun			pinctrl-1 = <&u1rxtx_a_1_sleep>;
290*4882a593Smuzhiyun		};
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun		uart@80007000 {
293*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
294*4882a593Smuzhiyun			pinctrl-0 = <&u2rxtx_c_1_default>;
295*4882a593Smuzhiyun			pinctrl-1 = <&u2rxtx_c_1_sleep>;
296*4882a593Smuzhiyun			status = "okay";
297*4882a593Smuzhiyun		};
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun		i2c@80004000 {
300*4882a593Smuzhiyun			pinctrl-names = "default","sleep";
301*4882a593Smuzhiyun			pinctrl-0 = <&i2c0_a_1_default>;
302*4882a593Smuzhiyun			pinctrl-1 = <&i2c0_a_1_sleep>;
303*4882a593Smuzhiyun			status = "okay";
304*4882a593Smuzhiyun		};
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun		i2c@80122000 {
307*4882a593Smuzhiyun			pinctrl-names = "default","sleep";
308*4882a593Smuzhiyun			pinctrl-0 = <&i2c1_b_2_default>;
309*4882a593Smuzhiyun			pinctrl-1 = <&i2c1_b_2_sleep>;
310*4882a593Smuzhiyun			status = "okay";
311*4882a593Smuzhiyun		};
312*4882a593Smuzhiyun
313*4882a593Smuzhiyun		i2c@80128000 {
314*4882a593Smuzhiyun			pinctrl-names = "default","sleep";
315*4882a593Smuzhiyun			pinctrl-0 = <&i2c2_b_2_default>;
316*4882a593Smuzhiyun			pinctrl-1 = <&i2c2_b_2_sleep>;
317*4882a593Smuzhiyun			status = "okay";
318*4882a593Smuzhiyun			lsm303dlh@18 {
319*4882a593Smuzhiyun				/* Accelerometer */
320*4882a593Smuzhiyun				compatible = "st,lsm303dlh-accel";
321*4882a593Smuzhiyun				st,drdy-int-pin = <1>;
322*4882a593Smuzhiyun				reg = <0x18>;
323*4882a593Smuzhiyun				vdd-supply = <&ab8500_ldo_aux1_reg>;
324*4882a593Smuzhiyun				vddio-supply = <&db8500_vsmps2_reg>;
325*4882a593Smuzhiyun				pinctrl-names = "default";
326*4882a593Smuzhiyun				pinctrl-0 = <&accel_snowball_mode>;
327*4882a593Smuzhiyun				interrupt-parent = <&gpio5>;
328*4882a593Smuzhiyun				interrupts = <3 IRQ_TYPE_EDGE_RISING>, /* INT1 */
329*4882a593Smuzhiyun					     <4 IRQ_TYPE_EDGE_RISING>; /* INT2 */
330*4882a593Smuzhiyun			};
331*4882a593Smuzhiyun			lsm303dlh@1e {
332*4882a593Smuzhiyun				/* Magnetometer */
333*4882a593Smuzhiyun				compatible = "st,lsm303dlh-magn";
334*4882a593Smuzhiyun				reg = <0x1e>;
335*4882a593Smuzhiyun				vdd-supply = <&ab8500_ldo_aux1_reg>;
336*4882a593Smuzhiyun				vddio-supply = <&db8500_vsmps2_reg>;
337*4882a593Smuzhiyun				pinctrl-names = "default";
338*4882a593Smuzhiyun				pinctrl-0 = <&magneto_snowball_mode>;
339*4882a593Smuzhiyun				interrupt-parent = <&gpio5>;
340*4882a593Smuzhiyun				interrupts = <5 IRQ_TYPE_EDGE_RISING>; /* DRDY line */
341*4882a593Smuzhiyun			};
342*4882a593Smuzhiyun			l3g4200d@68 {
343*4882a593Smuzhiyun				/* Gyroscope */
344*4882a593Smuzhiyun				compatible = "st,l3g4200d-gyro";
345*4882a593Smuzhiyun				st,drdy-int-pin = <2>;
346*4882a593Smuzhiyun				reg = <0x68>;
347*4882a593Smuzhiyun				vdd-supply = <&ab8500_ldo_aux1_reg>;
348*4882a593Smuzhiyun				vddio-supply = <&db8500_vsmps2_reg>;
349*4882a593Smuzhiyun				pinctrl-names = "default";
350*4882a593Smuzhiyun				pinctrl-0 = <&gyro_snowball_mode>;
351*4882a593Smuzhiyun				interrupt-parent = <&gpio5>;
352*4882a593Smuzhiyun				interrupts = <6 IRQ_TYPE_EDGE_RISING>, /* DRDY line */
353*4882a593Smuzhiyun					     <9 IRQ_TYPE_EDGE_RISING>; /* INT1 */
354*4882a593Smuzhiyun			};
355*4882a593Smuzhiyun			lsp001wm@5c {
356*4882a593Smuzhiyun				/* Barometer/pressure sensor */
357*4882a593Smuzhiyun				compatible = "st,lps001wp-press";
358*4882a593Smuzhiyun				reg = <0x5c>;
359*4882a593Smuzhiyun				vdd-supply = <&ab8500_ldo_aux1_reg>;
360*4882a593Smuzhiyun				vddio-supply = <&db8500_vsmps2_reg>;
361*4882a593Smuzhiyun			};
362*4882a593Smuzhiyun		};
363*4882a593Smuzhiyun
364*4882a593Smuzhiyun		i2c@80110000 {
365*4882a593Smuzhiyun			pinctrl-names = "default","sleep";
366*4882a593Smuzhiyun			pinctrl-0 = <&i2c3_c_2_default>;
367*4882a593Smuzhiyun			pinctrl-1 = <&i2c3_c_2_sleep>;
368*4882a593Smuzhiyun			status = "okay";
369*4882a593Smuzhiyun		};
370*4882a593Smuzhiyun
371*4882a593Smuzhiyun		spi@80002000 {
372*4882a593Smuzhiyun			pinctrl-names = "default";
373*4882a593Smuzhiyun			pinctrl-0 = <&ssp0_snowball_mode>;
374*4882a593Smuzhiyun			status = "okay";
375*4882a593Smuzhiyun		};
376*4882a593Smuzhiyun
377*4882a593Smuzhiyun		prcmu@80157000 {
378*4882a593Smuzhiyun			ab8500 {
379*4882a593Smuzhiyun				ab8500-gpiocontroller {
380*4882a593Smuzhiyun					/*
381*4882a593Smuzhiyun					 * AB8500 GPIOs are numbered starting from 1, so the first
382*4882a593Smuzhiyun					 * index 0 is what in the datasheet is called "GPIO1", and
383*4882a593Smuzhiyun					 * the second is "GPIO2" and so forth. Confusingly, the
384*4882a593Smuzhiyun					 * Snowball schematic then names the "GPIO2" line "PM_GPIO1".
385*4882a593Smuzhiyun					 * while later naming "GPIO4" as "PM_GPIO4".
386*4882a593Smuzhiyun					 */
387*4882a593Smuzhiyun					gpio-line-names = "", /* AB8500 GPIO1 */
388*4882a593Smuzhiyun						     "PM_GPIO1", /* AB8500 GPIO2 */
389*4882a593Smuzhiyun						     "WLAN_CLK_REQ", /* AB8500 GPIO3 */
390*4882a593Smuzhiyun						     "PM_GPIO4", /* AB8500 GPIO4 */
391*4882a593Smuzhiyun						     "", "", "", "", "", "", "", "", "", "", "",
392*4882a593Smuzhiyun						     "EN_3V6", /* AB8500 GPIO16 */
393*4882a593Smuzhiyun						     "", "", "", "" ,"", "", "", "", "",
394*4882a593Smuzhiyun						     "EN_3V3", /* AB8500 GPIO26 */
395*4882a593Smuzhiyun						     "", "", "", "", "", "", "", "", "", "", "", "", "",
396*4882a593Smuzhiyun						     "PM_GPIO40", /* AB8500 GPIO40 */
397*4882a593Smuzhiyun						     "PM_GPIO41", /* AB8500 GPIO41 */
398*4882a593Smuzhiyun						     "PM_GPIO42"; /* AB8500 GPIO42 */
399*4882a593Smuzhiyun				};
400*4882a593Smuzhiyun
401*4882a593Smuzhiyun				ab8500_usb {
402*4882a593Smuzhiyun					pinctrl-names = "default", "sleep";
403*4882a593Smuzhiyun					pinctrl-0 = <&usb_a_1_default>;
404*4882a593Smuzhiyun					pinctrl-1 = <&usb_a_1_sleep>;
405*4882a593Smuzhiyun				};
406*4882a593Smuzhiyun
407*4882a593Smuzhiyun				ext_regulators: ab8500-ext-regulators {
408*4882a593Smuzhiyun					ab8500_ext1_reg: ab8500_ext1 {
409*4882a593Smuzhiyun						regulator-name = "ab8500-ext-supply1";
410*4882a593Smuzhiyun					};
411*4882a593Smuzhiyun
412*4882a593Smuzhiyun					ab8500_ext2_reg_reg: ab8500_ext2 {
413*4882a593Smuzhiyun						regulator-name = "ab8500-ext-supply2";
414*4882a593Smuzhiyun					};
415*4882a593Smuzhiyun
416*4882a593Smuzhiyun					ab8500_ext3_reg_reg: ab8500_ext3 {
417*4882a593Smuzhiyun						regulator-name = "ab8500-ext-supply3";
418*4882a593Smuzhiyun					};
419*4882a593Smuzhiyun				};
420*4882a593Smuzhiyun
421*4882a593Smuzhiyun				ab8500-regulators {
422*4882a593Smuzhiyun					ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
423*4882a593Smuzhiyun						regulator-name = "V-DISPLAY";
424*4882a593Smuzhiyun					};
425*4882a593Smuzhiyun
426*4882a593Smuzhiyun					ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
427*4882a593Smuzhiyun						regulator-name = "V-eMMC1";
428*4882a593Smuzhiyun					};
429*4882a593Smuzhiyun
430*4882a593Smuzhiyun					ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
431*4882a593Smuzhiyun						regulator-name = "V-MMC-SD";
432*4882a593Smuzhiyun					};
433*4882a593Smuzhiyun
434*4882a593Smuzhiyun					ab8500_ldo_intcore_reg: ab8500_ldo_intcore {
435*4882a593Smuzhiyun						regulator-name = "V-INTCORE";
436*4882a593Smuzhiyun					};
437*4882a593Smuzhiyun
438*4882a593Smuzhiyun					ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
439*4882a593Smuzhiyun						regulator-name = "V-TVOUT";
440*4882a593Smuzhiyun					};
441*4882a593Smuzhiyun
442*4882a593Smuzhiyun					ab8500_ldo_audio_reg: ab8500_ldo_audio {
443*4882a593Smuzhiyun						regulator-name = "V-AUD";
444*4882a593Smuzhiyun					};
445*4882a593Smuzhiyun
446*4882a593Smuzhiyun					ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
447*4882a593Smuzhiyun						regulator-name = "V-AMIC1";
448*4882a593Smuzhiyun					};
449*4882a593Smuzhiyun
450*4882a593Smuzhiyun					ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 {
451*4882a593Smuzhiyun						regulator-name = "V-AMIC2";
452*4882a593Smuzhiyun					};
453*4882a593Smuzhiyun
454*4882a593Smuzhiyun					ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
455*4882a593Smuzhiyun						regulator-name = "V-DMIC";
456*4882a593Smuzhiyun					};
457*4882a593Smuzhiyun
458*4882a593Smuzhiyun					ab8500_ldo_ana_reg: ab8500_ldo_ana {
459*4882a593Smuzhiyun						regulator-name = "V-CSI/DSI";
460*4882a593Smuzhiyun					};
461*4882a593Smuzhiyun				};
462*4882a593Smuzhiyun			};
463*4882a593Smuzhiyun		};
464*4882a593Smuzhiyun
465*4882a593Smuzhiyun		pinctrl {
466*4882a593Smuzhiyun			/*
467*4882a593Smuzhiyun			 * Set this up using hogs, as time goes by and as seems fit, these
468*4882a593Smuzhiyun			 * can be moved over to being controlled by respective device.
469*4882a593Smuzhiyun			 */
470*4882a593Smuzhiyun			pinctrl-names = "default";
471*4882a593Smuzhiyun			pinctrl-0 = <&gbf_snowball_mode>,
472*4882a593Smuzhiyun				  <&wlan_snowball_mode>;
473*4882a593Smuzhiyun
474*4882a593Smuzhiyun			ethernet {
475*4882a593Smuzhiyun				/*
476*4882a593Smuzhiyun				 * Mux in "SM" which is used for the
477*4882a593Smuzhiyun				 * SMSC911x Ethernet adapter
478*4882a593Smuzhiyun				 */
479*4882a593Smuzhiyun				eth_snowball_mode: eth_snowball {
480*4882a593Smuzhiyun					snowball_mux {
481*4882a593Smuzhiyun						function = "sm";
482*4882a593Smuzhiyun						groups = "sm_b_1";
483*4882a593Smuzhiyun					};
484*4882a593Smuzhiyun					/* LAN IRQ pin */
485*4882a593Smuzhiyun					snowball_cfg1 {
486*4882a593Smuzhiyun						pins = "GPIO140_B11";
487*4882a593Smuzhiyun						ste,config = <&in_nopull>;
488*4882a593Smuzhiyun					};
489*4882a593Smuzhiyun					/* LAN reset pin */
490*4882a593Smuzhiyun					snowball_cfg2 {
491*4882a593Smuzhiyun						pins = "GPIO141_C12";
492*4882a593Smuzhiyun						ste,config = <&gpio_out_hi>;
493*4882a593Smuzhiyun					};
494*4882a593Smuzhiyun
495*4882a593Smuzhiyun				};
496*4882a593Smuzhiyun			};
497*4882a593Smuzhiyun			sdi0 {
498*4882a593Smuzhiyun				sdi0_default_mode: sdi0_default {
499*4882a593Smuzhiyun					snowball_mux {
500*4882a593Smuzhiyun						function = "mc0";
501*4882a593Smuzhiyun						/* Add the DAT31 pin even if it is not really used */
502*4882a593Smuzhiyun						groups = "mc0dat31dir_a_1";
503*4882a593Smuzhiyun					};
504*4882a593Smuzhiyun					snowball_cfg1 {
505*4882a593Smuzhiyun						pins = "GPIO21_AB3"; /* DAT31DIR */
506*4882a593Smuzhiyun						ste,config = <&out_hi>;
507*4882a593Smuzhiyun					};
508*4882a593Smuzhiyun					/* SD card detect GPIO pin, extend default state */
509*4882a593Smuzhiyun					snowball_cfg2 {
510*4882a593Smuzhiyun						pins = "GPIO218_AH11";
511*4882a593Smuzhiyun						ste,config = <&gpio_in_pu>;
512*4882a593Smuzhiyun					};
513*4882a593Smuzhiyun					/* VMMCI level-shifter enable */
514*4882a593Smuzhiyun					snowball_cfg3 {
515*4882a593Smuzhiyun						pins = "GPIO217_AH12";
516*4882a593Smuzhiyun						ste,config = <&gpio_out_hi>;
517*4882a593Smuzhiyun					};
518*4882a593Smuzhiyun					/* VMMCI level-shifter voltage select */
519*4882a593Smuzhiyun					snowball_cfg4 {
520*4882a593Smuzhiyun						pins = "GPIO228_AJ6";
521*4882a593Smuzhiyun						ste,config = <&gpio_out_hi>;
522*4882a593Smuzhiyun					};
523*4882a593Smuzhiyun				};
524*4882a593Smuzhiyun			};
525*4882a593Smuzhiyun			ssp0 {
526*4882a593Smuzhiyun				ssp0_snowball_mode: ssp0_snowball_default {
527*4882a593Smuzhiyun					snowball_mux {
528*4882a593Smuzhiyun						function = "ssp0";
529*4882a593Smuzhiyun						groups = "ssp0_a_1";
530*4882a593Smuzhiyun					};
531*4882a593Smuzhiyun					snowball_cfg1 {
532*4882a593Smuzhiyun						pins = "GPIO144_B13"; /* FRM */
533*4882a593Smuzhiyun						ste,config = <&gpio_out_hi>;
534*4882a593Smuzhiyun					};
535*4882a593Smuzhiyun					snowball_cfg2 {
536*4882a593Smuzhiyun						pins = "GPIO145_C13"; /* RXD */
537*4882a593Smuzhiyun						ste,config = <&in_pd>;
538*4882a593Smuzhiyun					};
539*4882a593Smuzhiyun					snowball_cfg3 {
540*4882a593Smuzhiyun						pins =
541*4882a593Smuzhiyun						"GPIO146_D13", /* TXD */
542*4882a593Smuzhiyun						"GPIO143_D12"; /* CLK */
543*4882a593Smuzhiyun						ste,config = <&out_lo>;
544*4882a593Smuzhiyun					};
545*4882a593Smuzhiyun
546*4882a593Smuzhiyun				};
547*4882a593Smuzhiyun			};
548*4882a593Smuzhiyun			gpio_led {
549*4882a593Smuzhiyun				gpioled_snowball_mode: gpioled_default {
550*4882a593Smuzhiyun					snowball_cfg1 {
551*4882a593Smuzhiyun						pins = "GPIO142_C11";
552*4882a593Smuzhiyun						ste,config = <&gpio_out_hi>;
553*4882a593Smuzhiyun					};
554*4882a593Smuzhiyun
555*4882a593Smuzhiyun				};
556*4882a593Smuzhiyun			};
557*4882a593Smuzhiyun			accelerometer {
558*4882a593Smuzhiyun				accel_snowball_mode: accel_snowball {
559*4882a593Smuzhiyun					/* Accelerometer lines */
560*4882a593Smuzhiyun					snowball_cfg1 {
561*4882a593Smuzhiyun						pins =
562*4882a593Smuzhiyun						"GPIO163_C20", /* ACCEL_IRQ1 */
563*4882a593Smuzhiyun						"GPIO164_B21"; /* ACCEL_IRQ2 */
564*4882a593Smuzhiyun						ste,config = <&gpio_in_pu>;
565*4882a593Smuzhiyun					};
566*4882a593Smuzhiyun				};
567*4882a593Smuzhiyun			};
568*4882a593Smuzhiyun			gyro {
569*4882a593Smuzhiyun				gyro_snowball_mode: gyro_snowball {
570*4882a593Smuzhiyun					snowball_cfg1 {
571*4882a593Smuzhiyun						pins =
572*4882a593Smuzhiyun						"GPIO166_A22", /* DRDY */
573*4882a593Smuzhiyun						"GPIO169_D22"; /* INT */
574*4882a593Smuzhiyun						ste,config = <&gpio_in_pu>;
575*4882a593Smuzhiyun					};
576*4882a593Smuzhiyun				};
577*4882a593Smuzhiyun			};
578*4882a593Smuzhiyun			magnetometer {
579*4882a593Smuzhiyun				magneto_snowball_mode: magneto_snowball {
580*4882a593Smuzhiyun					snowball_cfg1 {
581*4882a593Smuzhiyun						pins = "GPIO165_C21"; /* MAG_DRDY */
582*4882a593Smuzhiyun						ste,config = <&gpio_in_pu>;
583*4882a593Smuzhiyun					};
584*4882a593Smuzhiyun				};
585*4882a593Smuzhiyun			};
586*4882a593Smuzhiyun			gbf {
587*4882a593Smuzhiyun				gbf_snowball_mode: gbf_snowball {
588*4882a593Smuzhiyun					/*
589*4882a593Smuzhiyun					 * GBF (GPS, Bluetooth, FM-radio) interface,
590*4882a593Smuzhiyun					 * pull low to reset state
591*4882a593Smuzhiyun					 */
592*4882a593Smuzhiyun					snowball_cfg1 {
593*4882a593Smuzhiyun						pins = "GPIO171_D23"; /* GBF_ENA_RESET */
594*4882a593Smuzhiyun						ste,config = <&gpio_out_lo>;
595*4882a593Smuzhiyun					};
596*4882a593Smuzhiyun				 };
597*4882a593Smuzhiyun			};
598*4882a593Smuzhiyun			wlan {
599*4882a593Smuzhiyun				wlan_snowball_mode: wlan_snowball {
600*4882a593Smuzhiyun					/*
601*4882a593Smuzhiyun					 * Activate this mode with the WLAN chip.
602*4882a593Smuzhiyun					 * These are plain GPIO pins used by WLAN
603*4882a593Smuzhiyun					 */
604*4882a593Smuzhiyun					snowball_cfg1 {
605*4882a593Smuzhiyun						pins =
606*4882a593Smuzhiyun						"GPIO161_D21", /* WLAN_PMU_EN */
607*4882a593Smuzhiyun						"GPIO215_AH13"; /* WLAN_ENA */
608*4882a593Smuzhiyun						ste,config = <&gpio_out_lo>;
609*4882a593Smuzhiyun					};
610*4882a593Smuzhiyun					snowball_cfg2 {
611*4882a593Smuzhiyun						pins = "GPIO216_AG12"; /* WLAN_IRQ */
612*4882a593Smuzhiyun						ste,config = <&gpio_in_pu>;
613*4882a593Smuzhiyun					};
614*4882a593Smuzhiyun				};
615*4882a593Smuzhiyun			};
616*4882a593Smuzhiyun		};
617*4882a593Smuzhiyun
618*4882a593Smuzhiyun		mcde@a0350000 {
619*4882a593Smuzhiyun			pinctrl-names = "default", "sleep";
620*4882a593Smuzhiyun			pinctrl-0 = <&lcd_default_mode>;
621*4882a593Smuzhiyun			pinctrl-1 = <&lcd_sleep_mode>;
622*4882a593Smuzhiyun		};
623*4882a593Smuzhiyun	};
624*4882a593Smuzhiyun};
625