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