1/*
2 * Copyright 2011 ST-Ericsson AB
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12/dts-v1/;
13#include "ste-dbx5x0.dtsi"
14#include "ste-href-ab8500.dtsi"
15#include "ste-href-family-pinctrl.dtsi"
16
17/ {
18	model = "Calao Systems Snowball platform with device tree";
19	compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500";
20
21	memory {
22		reg = <0x00000000 0x20000000>;
23	};
24
25	en_3v3_reg: en_3v3 {
26		compatible = "regulator-fixed";
27		regulator-name = "en-3v3-fixed-supply";
28		regulator-min-microvolt = <3300000>;
29		regulator-max-microvolt = <3300000>;
30		/* AB8500 GPIOs start from 1 - offset 25 is GPIO26. */
31		gpio = <&ab8500_gpio 25 0x4>;
32		startup-delay-us = <5000>;
33		enable-active-high;
34	};
35
36	gpio_keys {
37		compatible = "gpio-keys";
38		#address-cells = <1>;
39		#size-cells = <0>;
40
41		button@1 {
42			debounce_interval = <50>;
43			wakeup = <1>;
44			linux,code = <2>;
45			label = "userpb";
46			gpios = <&gpio1 0 0x4>;
47		};
48		button@2 {
49			debounce_interval = <50>;
50			wakeup = <1>;
51			linux,code = <3>;
52			label = "extkb1";
53			gpios = <&gpio4 23 0x4>;
54		};
55		button@3 {
56			debounce_interval = <50>;
57			wakeup = <1>;
58			linux,code = <4>;
59			label = "extkb2";
60			gpios = <&gpio4 24 0x4>;
61		};
62		button@4 {
63			debounce_interval = <50>;
64			wakeup = <1>;
65			linux,code = <5>;
66			label = "extkb3";
67			gpios = <&gpio5 1 0x4>;
68		};
69		button@5 {
70			debounce_interval = <50>;
71			wakeup = <1>;
72			linux,code = <6>;
73			label = "extkb4";
74			gpios = <&gpio5 2 0x4>;
75		};
76	};
77
78	leds {
79		compatible = "gpio-leds";
80		pinctrl-names = "default";
81		pinctrl-0 = <&gpioled_snowball_mode>;
82		used-led {
83			label = "user_led";
84			gpios = <&gpio4 14 0x4>;
85			default-state = "on";
86			linux,default-trigger = "heartbeat";
87		};
88	};
89
90	soc {
91		usb_per5@a03e0000 {
92			pinctrl-names = "default", "sleep";
93			pinctrl-0 = <&musb_default_mode>;
94			pinctrl-1 = <&musb_sleep_mode>;
95		};
96
97		sound {
98			compatible = "stericsson,snd-soc-mop500";
99
100			stericsson,cpu-dai = <&msp1 &msp3>;
101			stericsson,audio-codec = <&codec>;
102		};
103
104		msp0: msp@80123000 {
105			pinctrl-names = "default";
106			pinctrl-0 = <&msp0_default_mode>;
107			status = "okay";
108		};
109
110		msp1: msp@80124000 {
111			pinctrl-names = "default";
112			pinctrl-0 = <&msp1_default_mode>;
113			status = "okay";
114		};
115
116		msp2: msp@80117000 {
117			pinctrl-names = "default";
118			pinctrl-0 = <&msp2_default_mode>;
119		};
120
121		msp3: msp@80125000 {
122			status = "okay";
123		};
124
125		external-bus@50000000 {
126			status = "okay";
127
128			ethernet@0 {
129				compatible = "smsc,lan9115";
130				reg = <0 0x10000>;
131				interrupts = <12 IRQ_TYPE_EDGE_RISING>;
132				interrupt-parent = <&gpio4>;
133				vdd33a-supply = <&en_3v3_reg>;
134				vddvario-supply = <&db8500_vape_reg>;
135				pinctrl-names = "default";
136				pinctrl-0 = <&eth_snowball_mode>;
137
138				reg-shift = <1>;
139				reg-io-width = <2>;
140				smsc,force-internal-phy;
141				smsc,irq-active-high;
142				smsc,irq-push-pull;
143
144				clocks = <&prcc_pclk 3 0>;
145			};
146		};
147
148		vmmci: regulator-gpio {
149			compatible = "regulator-gpio";
150
151			gpios = <&gpio7 4 0x4>;
152			enable-gpio = <&gpio6 25 0x4>;
153
154			regulator-min-microvolt = <1800000>;
155			regulator-max-microvolt = <2900000>;
156			regulator-name = "mmci-reg";
157			regulator-type = "voltage";
158
159			startup-delay-us = <100>;
160			enable-active-high;
161
162			states = <1800000 0x1
163				  2900000 0x0>;
164		};
165
166		// External Micro SD slot
167		sdi0_per1@80126000 {
168			arm,primecell-periphid = <0x10480180>;
169			max-frequency = <100000000>;
170			bus-width = <4>;
171			cap-mmc-highspeed;
172			vmmc-supply = <&ab8500_ldo_aux3_reg>;
173			vqmmc-supply = <&vmmci>;
174			pinctrl-names = "default", "sleep";
175			pinctrl-0 = <&sdi0_default_mode>;
176			pinctrl-1 = <&sdi0_sleep_mode>;
177
178			cd-gpios  = <&gpio6 26 0x4>; // 218
179			cd-inverted;
180
181			status = "okay";
182		};
183
184		// WLAN SDIO channel
185		sdi1_per2@80118000 {
186			arm,primecell-periphid = <0x10480180>;
187			max-frequency = <100000000>;
188			bus-width = <4>;
189			pinctrl-names = "default", "sleep";
190			pinctrl-0 = <&sdi1_default_mode>;
191			pinctrl-1 = <&sdi1_sleep_mode>;
192
193			status = "okay";
194		};
195
196		// Unused PoP eMMC - register and put it to sleep by default */
197		sdi2_per3@80005000 {
198			arm,primecell-periphid = <0x10480180>;
199			pinctrl-names = "default";
200			pinctrl-0 = <&sdi2_sleep_mode>;
201
202			status = "okay";
203		};
204
205		// On-board eMMC
206		sdi4_per2@80114000 {
207			arm,primecell-periphid = <0x10480180>;
208		        max-frequency = <100000000>;
209			bus-width = <8>;
210			cap-mmc-highspeed;
211			vmmc-supply = <&ab8500_ldo_aux2_reg>;
212			pinctrl-names = "default", "sleep";
213			pinctrl-0 = <&sdi4_default_mode>;
214			pinctrl-1 = <&sdi4_sleep_mode>;
215
216			status = "okay";
217		};
218
219		uart@80120000 {
220			pinctrl-names = "default", "sleep";
221			pinctrl-0 = <&uart0_default_mode>;
222			pinctrl-1 = <&uart0_sleep_mode>;
223			status = "okay";
224		};
225
226		uart@80121000 {
227			pinctrl-names = "default", "sleep";
228			pinctrl-0 = <&uart1_default_mode>;
229			pinctrl-1 = <&uart1_sleep_mode>;
230			status = "okay";
231		};
232
233		uart@80007000 {
234			pinctrl-names = "default", "sleep";
235			pinctrl-0 = <&uart2_default_mode>;
236			pinctrl-1 = <&uart2_sleep_mode>;
237			status = "okay";
238		};
239
240		i2c@80004000 {
241			pinctrl-names = "default","sleep";
242			pinctrl-0 = <&i2c0_default_mode>;
243			pinctrl-1 = <&i2c0_sleep_mode>;
244		};
245
246		i2c@80122000 {
247			pinctrl-names = "default","sleep";
248			pinctrl-0 = <&i2c1_default_mode>;
249			pinctrl-1 = <&i2c1_sleep_mode>;
250		};
251
252		i2c@80128000 {
253			pinctrl-names = "default","sleep";
254			pinctrl-0 = <&i2c2_default_mode>;
255			pinctrl-1 = <&i2c2_sleep_mode>;
256			lsm303dlh@18 {
257				/* Accelerometer */
258				compatible = "st,lsm303dlh-accel";
259				st,drdy-int-pin = <1>;
260				reg = <0x18>;
261				vdd-supply = <&ab8500_ldo_aux1_reg>;
262				vddio-supply = <&db8500_vsmps2_reg>;
263				pinctrl-names = "default";
264				pinctrl-0 = <&accel_snowball_mode>;
265			};
266			lsm303dlm@1e {
267				/* Magnetometer */
268				compatible = "st,lsm303dlm-magn";
269				reg = <0x1e>;
270				vdd-supply = <&ab8500_ldo_aux1_reg>;
271				vddio-supply = <&db8500_vsmps2_reg>;
272				pinctrl-names = "default";
273				pinctrl-0 = <&magneto_snowball_mode>;
274			};
275			l3g4200d@68 {
276				/* Gyroscope */
277				compatible = "st,l3g4200d-gyro";
278				st,drdy-int-pin = <2>;
279				reg = <0x68>;
280				vdd-supply = <&ab8500_ldo_aux1_reg>;
281				vddio-supply = <&db8500_vsmps2_reg>;
282			};
283			lsp001wm@5c {
284				/* Barometer/pressure sensor */
285				compatible = "st,lps001wp-press";
286				reg = <0x5c>;
287				vdd-supply = <&ab8500_ldo_aux1_reg>;
288				vddio-supply = <&db8500_vsmps2_reg>;
289			};
290		};
291
292		i2c@80110000 {
293			pinctrl-names = "default","sleep";
294			pinctrl-0 = <&i2c3_default_mode>;
295			pinctrl-1 = <&i2c3_sleep_mode>;
296		};
297
298		ssp@80002000 {
299			pinctrl-names = "default";
300			pinctrl-0 = <&ssp0_snowball_mode>;
301		};
302
303		cpufreq-cooling {
304			status = "okay";
305		};
306
307		prcmu@80157000 {
308			cpufreq {
309				status = "okay";
310			};
311
312			thermal@801573c0 {
313				num-trips = <4>;
314
315				trip0-temp = <70000>;
316				trip0-type = "active";
317				trip0-cdev-num = <1>;
318				trip0-cdev-name0 = "thermal-cpufreq-0";
319
320				trip1-temp = <75000>;
321				trip1-type = "active";
322				trip1-cdev-num = <1>;
323				trip1-cdev-name0 = "thermal-cpufreq-0";
324
325				trip2-temp = <80000>;
326				trip2-type = "active";
327				trip2-cdev-num = <1>;
328				trip2-cdev-name0 = "thermal-cpufreq-0";
329
330				trip3-temp = <85000>;
331				trip3-type = "critical";
332				trip3-cdev-num = <0>;
333
334				status = "okay";
335			};
336
337			ab8500 {
338				ab8500-gpio {
339					compatible = "stericsson,ab8500-gpio";
340				};
341
342				ext_regulators: ab8500-ext-regulators {
343					ab8500_ext1_reg: ab8500_ext1 {
344						regulator-name = "ab8500-ext-supply1";
345					};
346
347					ab8500_ext2_reg_reg: ab8500_ext2 {
348						regulator-name = "ab8500-ext-supply2";
349					};
350
351					ab8500_ext3_reg_reg: ab8500_ext3 {
352						regulator-name = "ab8500-ext-supply3";
353					};
354				};
355
356				ab8500-regulators {
357					ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
358						regulator-name = "V-DISPLAY";
359					};
360
361					ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
362						regulator-name = "V-eMMC1";
363					};
364
365					ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
366						regulator-name = "V-MMC-SD";
367					};
368
369					ab8500_ldo_intcore_reg: ab8500_ldo_intcore {
370						regulator-name = "V-INTCORE";
371					};
372
373					ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
374						regulator-name = "V-TVOUT";
375					};
376
377					ab8500_ldo_usb_reg: ab8500_ldo_usb {
378						regulator-name = "dummy";
379					};
380
381					ab8500_ldo_audio_reg: ab8500_ldo_audio {
382						regulator-name = "V-AUD";
383					};
384
385					ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
386						regulator-name = "V-AMIC1";
387					};
388
389					ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 {
390						regulator-name = "V-AMIC2";
391					};
392
393					ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
394						regulator-name = "V-DMIC";
395					};
396
397					ab8500_ldo_ana_reg: ab8500_ldo_ana {
398						regulator-name = "V-CSI/DSI";
399					};
400				};
401			};
402		};
403
404		pinctrl {
405			/*
406			 * Set this up using hogs, as time goes by and as seems fit, these
407			 * can be moved over to being controlled by respective device.
408			 */
409			pinctrl-names = "default";
410			pinctrl-0 = <&gbf_snowball_mode>,
411				  <&wlan_snowball_mode>;
412
413			ethernet {
414				/*
415				 * Mux in "SM" which is used for the
416				 * SMSC911x Ethernet adapter
417				 */
418				eth_snowball_mode: eth_snowball {
419					snowball_mux {
420						function = "sm";
421						groups = "sm_b_1";
422					};
423					/* LAN IRQ pin */
424					snowball_cfg1 {
425						pins = "GPIO140_B11";
426						ste,config = <&in_nopull>;
427					};
428					/* LAN reset pin */
429					snowball_cfg2 {
430						pins = "GPIO141_C12";
431						ste,config = <&gpio_out_hi>;
432					};
433
434				};
435			};
436			sdi0 {
437				sdi0_default_mode: sdi0_default {
438					snowball_mux {
439						function = "mc0";
440						groups = "mc0dat31dir_a_1";
441					};
442					snowball_cfg1 {
443						pins = "GPIO21_AB3"; /* DAT31DIR */
444						ste,config = <&out_hi>;
445					};
446
447				};
448			};
449			ssp0 {
450				ssp0_snowball_mode: ssp0_snowball_default {
451					snowball_mux {
452						function = "ssp0";
453						groups = "ssp0_a_1";
454					};
455					snowball_cfg1 {
456						pins = "GPIO144_B13"; /* FRM */
457						ste,config = <&gpio_out_hi>;
458					};
459					snowball_cfg2 {
460						pins = "GPIO145_C13"; /* RXD */
461						ste,config = <&in_pd>;
462					};
463					snowball_cfg3 {
464						pins =
465						"GPIO146_D13", /* TXD */
466						"GPIO143_D12"; /* CLK */
467						ste,config = <&out_lo>;
468					};
469
470				};
471			};
472			gpio_led {
473				gpioled_snowball_mode: gpioled_default {
474					snowball_cfg1 {
475						pins = "GPIO142_C11";
476						ste,config = <&gpio_out_hi>;
477					};
478
479				};
480			};
481			accelerometer {
482				accel_snowball_mode: accel_snowball {
483					/* Accelerometer lines */
484					snowball_cfg1 {
485						pins =
486						"GPIO163_C20", /* ACCEL_IRQ1 */
487						"GPIO164_B21"; /* ACCEL_IRQ2 */
488						ste,config = <&gpio_in_pu>;
489					};
490				};
491			};
492			magnetometer {
493				magneto_snowball_mode: magneto_snowball {
494					snowball_cfg1 {
495						pins = "GPIO165_C21"; /* MAG_DRDY */
496						ste,config = <&gpio_in_pu>;
497					};
498				};
499			};
500			gbf {
501				gbf_snowball_mode: gbf_snowball {
502					/*
503					 * GBF (GPS, Bluetooth, FM-radio) interface,
504					 * pull low to reset state
505					 */
506					snowball_cfg1 {
507						pins = "GPIO171_D23"; /* GBF_ENA_RESET */
508						ste,config = <&gpio_out_lo>;
509					};
510				 };
511			};
512			wlan {
513				wlan_snowball_mode: wlan_snowball {
514					/*
515					 * Activate this mode with the WLAN chip.
516					 * These are plain GPIO pins used by WLAN
517					 */
518					snowball_cfg1 {
519						pins =
520						"GPIO161_D21", /* WLAN_PMU_EN */
521						"GPIO215_AH13"; /* WLAN_ENA */
522						ste,config = <&gpio_out_lo>;
523					};
524					snowball_cfg2 {
525						pins = "GPIO216_AG12"; /* WLAN_IRQ */
526						ste,config = <&gpio_in_pu>;
527					};
528				};
529			};
530		};
531
532		mcde@a0350000 {
533			pinctrl-names = "default", "sleep";
534			pinctrl-0 = <&lcd_default_mode>;
535			pinctrl-1 = <&lcd_sleep_mode>;
536		};
537	};
538};
539