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