• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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			no-sdio;
271			no-sd;
272			vmmc-supply = <&ab8500_ldo_aux2_reg>;
273			pinctrl-names = "default", "sleep";
274			pinctrl-0 = <&mc4_a_1_default>;
275			pinctrl-1 = <&mc4_a_1_sleep>;
276
277			status = "okay";
278		};
279
280		uart@80120000 {
281			pinctrl-names = "default", "sleep";
282			pinctrl-0 = <&u0_a_1_default>;
283			pinctrl-1 = <&u0_a_1_sleep>;
284			status = "okay";
285		};
286
287		/* This UART is unused and thus left disabled */
288		uart@80121000 {
289			pinctrl-names = "default", "sleep";
290			pinctrl-0 = <&u1rxtx_a_1_default>;
291			pinctrl-1 = <&u1rxtx_a_1_sleep>;
292		};
293
294		uart@80007000 {
295			pinctrl-names = "default", "sleep";
296			pinctrl-0 = <&u2rxtx_c_1_default>;
297			pinctrl-1 = <&u2rxtx_c_1_sleep>;
298			status = "okay";
299		};
300
301		i2c@80004000 {
302			pinctrl-names = "default","sleep";
303			pinctrl-0 = <&i2c0_a_1_default>;
304			pinctrl-1 = <&i2c0_a_1_sleep>;
305			status = "okay";
306		};
307
308		i2c@80122000 {
309			pinctrl-names = "default","sleep";
310			pinctrl-0 = <&i2c1_b_2_default>;
311			pinctrl-1 = <&i2c1_b_2_sleep>;
312			status = "okay";
313		};
314
315		i2c@80128000 {
316			pinctrl-names = "default","sleep";
317			pinctrl-0 = <&i2c2_b_2_default>;
318			pinctrl-1 = <&i2c2_b_2_sleep>;
319			status = "okay";
320			lsm303dlh@18 {
321				/* Accelerometer */
322				compatible = "st,lsm303dlh-accel";
323				st,drdy-int-pin = <1>;
324				reg = <0x18>;
325				vdd-supply = <&ab8500_ldo_aux1_reg>;
326				vddio-supply = <&db8500_vsmps2_reg>;
327				pinctrl-names = "default";
328				pinctrl-0 = <&accel_snowball_mode>;
329				interrupt-parent = <&gpio5>;
330				interrupts = <3 IRQ_TYPE_EDGE_RISING>, /* INT1 */
331					     <4 IRQ_TYPE_EDGE_RISING>; /* INT2 */
332			};
333			lsm303dlh@1e {
334				/* Magnetometer */
335				compatible = "st,lsm303dlh-magn";
336				reg = <0x1e>;
337				vdd-supply = <&ab8500_ldo_aux1_reg>;
338				vddio-supply = <&db8500_vsmps2_reg>;
339				pinctrl-names = "default";
340				pinctrl-0 = <&magneto_snowball_mode>;
341				interrupt-parent = <&gpio5>;
342				interrupts = <5 IRQ_TYPE_EDGE_RISING>; /* DRDY line */
343			};
344			l3g4200d@68 {
345				/* Gyroscope */
346				compatible = "st,l3g4200d-gyro";
347				st,drdy-int-pin = <2>;
348				reg = <0x68>;
349				vdd-supply = <&ab8500_ldo_aux1_reg>;
350				vddio-supply = <&db8500_vsmps2_reg>;
351				pinctrl-names = "default";
352				pinctrl-0 = <&gyro_snowball_mode>;
353				interrupt-parent = <&gpio5>;
354				interrupts = <6 IRQ_TYPE_EDGE_RISING>, /* DRDY line */
355					     <9 IRQ_TYPE_EDGE_RISING>; /* INT1 */
356			};
357			lsp001wm@5c {
358				/* Barometer/pressure sensor */
359				compatible = "st,lps001wp-press";
360				reg = <0x5c>;
361				vdd-supply = <&ab8500_ldo_aux1_reg>;
362				vddio-supply = <&db8500_vsmps2_reg>;
363			};
364		};
365
366		i2c@80110000 {
367			pinctrl-names = "default","sleep";
368			pinctrl-0 = <&i2c3_c_2_default>;
369			pinctrl-1 = <&i2c3_c_2_sleep>;
370			status = "okay";
371		};
372
373		spi@80002000 {
374			pinctrl-names = "default";
375			pinctrl-0 = <&ssp0_snowball_mode>;
376			status = "okay";
377		};
378
379		prcmu@80157000 {
380			ab8500 {
381				ab8500-gpiocontroller {
382					/*
383					 * AB8500 GPIOs are numbered starting from 1, so the first
384					 * index 0 is what in the datasheet is called "GPIO1", and
385					 * the second is "GPIO2" and so forth. Confusingly, the
386					 * Snowball schematic then names the "GPIO2" line "PM_GPIO1".
387					 * while later naming "GPIO4" as "PM_GPIO4".
388					 */
389					gpio-line-names = "", /* AB8500 GPIO1 */
390						     "PM_GPIO1", /* AB8500 GPIO2 */
391						     "WLAN_CLK_REQ", /* AB8500 GPIO3 */
392						     "PM_GPIO4", /* AB8500 GPIO4 */
393						     "", "", "", "", "", "", "", "", "", "", "",
394						     "EN_3V6", /* AB8500 GPIO16 */
395						     "", "", "", "" ,"", "", "", "", "",
396						     "EN_3V3", /* AB8500 GPIO26 */
397						     "", "", "", "", "", "", "", "", "", "", "", "", "",
398						     "PM_GPIO40", /* AB8500 GPIO40 */
399						     "PM_GPIO41", /* AB8500 GPIO41 */
400						     "PM_GPIO42"; /* AB8500 GPIO42 */
401				};
402
403				ab8500_usb {
404					pinctrl-names = "default", "sleep";
405					pinctrl-0 = <&usb_a_1_default>;
406					pinctrl-1 = <&usb_a_1_sleep>;
407				};
408
409				ext_regulators: ab8500-ext-regulators {
410					ab8500_ext1_reg: ab8500_ext1 {
411						regulator-name = "ab8500-ext-supply1";
412					};
413
414					ab8500_ext2_reg_reg: ab8500_ext2 {
415						regulator-name = "ab8500-ext-supply2";
416					};
417
418					ab8500_ext3_reg_reg: ab8500_ext3 {
419						regulator-name = "ab8500-ext-supply3";
420					};
421				};
422
423				ab8500-regulators {
424					ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
425						regulator-name = "V-DISPLAY";
426					};
427
428					ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
429						regulator-name = "V-eMMC1";
430					};
431
432					ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
433						regulator-name = "V-MMC-SD";
434					};
435
436					ab8500_ldo_intcore_reg: ab8500_ldo_intcore {
437						regulator-name = "V-INTCORE";
438					};
439
440					ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
441						regulator-name = "V-TVOUT";
442					};
443
444					ab8500_ldo_audio_reg: ab8500_ldo_audio {
445						regulator-name = "V-AUD";
446					};
447
448					ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
449						regulator-name = "V-AMIC1";
450					};
451
452					ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 {
453						regulator-name = "V-AMIC2";
454					};
455
456					ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
457						regulator-name = "V-DMIC";
458					};
459
460					ab8500_ldo_ana_reg: ab8500_ldo_ana {
461						regulator-name = "V-CSI/DSI";
462					};
463				};
464			};
465		};
466
467		pinctrl {
468			/*
469			 * Set this up using hogs, as time goes by and as seems fit, these
470			 * can be moved over to being controlled by respective device.
471			 */
472			pinctrl-names = "default";
473			pinctrl-0 = <&gbf_snowball_mode>,
474				  <&wlan_snowball_mode>;
475
476			ethernet {
477				/*
478				 * Mux in "SM" which is used for the
479				 * SMSC911x Ethernet adapter
480				 */
481				eth_snowball_mode: eth_snowball {
482					snowball_mux {
483						function = "sm";
484						groups = "sm_b_1";
485					};
486					/* LAN IRQ pin */
487					snowball_cfg1 {
488						pins = "GPIO140_B11";
489						ste,config = <&in_nopull>;
490					};
491					/* LAN reset pin */
492					snowball_cfg2 {
493						pins = "GPIO141_C12";
494						ste,config = <&gpio_out_hi>;
495					};
496
497				};
498			};
499			sdi0 {
500				sdi0_default_mode: sdi0_default {
501					snowball_mux {
502						function = "mc0";
503						/* Add the DAT31 pin even if it is not really used */
504						groups = "mc0dat31dir_a_1";
505					};
506					snowball_cfg1 {
507						pins = "GPIO21_AB3"; /* DAT31DIR */
508						ste,config = <&out_hi>;
509					};
510					/* SD card detect GPIO pin, extend default state */
511					snowball_cfg2 {
512						pins = "GPIO218_AH11";
513						ste,config = <&gpio_in_pu>;
514					};
515					/* VMMCI level-shifter enable */
516					snowball_cfg3 {
517						pins = "GPIO217_AH12";
518						ste,config = <&gpio_out_hi>;
519					};
520					/* VMMCI level-shifter voltage select */
521					snowball_cfg4 {
522						pins = "GPIO228_AJ6";
523						ste,config = <&gpio_out_hi>;
524					};
525				};
526			};
527			ssp0 {
528				ssp0_snowball_mode: ssp0_snowball_default {
529					snowball_mux {
530						function = "ssp0";
531						groups = "ssp0_a_1";
532					};
533					snowball_cfg1 {
534						pins = "GPIO144_B13"; /* FRM */
535						ste,config = <&gpio_out_hi>;
536					};
537					snowball_cfg2 {
538						pins = "GPIO145_C13"; /* RXD */
539						ste,config = <&in_pd>;
540					};
541					snowball_cfg3 {
542						pins =
543						"GPIO146_D13", /* TXD */
544						"GPIO143_D12"; /* CLK */
545						ste,config = <&out_lo>;
546					};
547
548				};
549			};
550			gpio_led {
551				gpioled_snowball_mode: gpioled_default {
552					snowball_cfg1 {
553						pins = "GPIO142_C11";
554						ste,config = <&gpio_out_hi>;
555					};
556
557				};
558			};
559			accelerometer {
560				accel_snowball_mode: accel_snowball {
561					/* Accelerometer lines */
562					snowball_cfg1 {
563						pins =
564						"GPIO163_C20", /* ACCEL_IRQ1 */
565						"GPIO164_B21"; /* ACCEL_IRQ2 */
566						ste,config = <&gpio_in_pu>;
567					};
568				};
569			};
570			gyro {
571				gyro_snowball_mode: gyro_snowball {
572					snowball_cfg1 {
573						pins =
574						"GPIO166_A22", /* DRDY */
575						"GPIO169_D22"; /* INT */
576						ste,config = <&gpio_in_pu>;
577					};
578				};
579			};
580			magnetometer {
581				magneto_snowball_mode: magneto_snowball {
582					snowball_cfg1 {
583						pins = "GPIO165_C21"; /* MAG_DRDY */
584						ste,config = <&gpio_in_pu>;
585					};
586				};
587			};
588			gbf {
589				gbf_snowball_mode: gbf_snowball {
590					/*
591					 * GBF (GPS, Bluetooth, FM-radio) interface,
592					 * pull low to reset state
593					 */
594					snowball_cfg1 {
595						pins = "GPIO171_D23"; /* GBF_ENA_RESET */
596						ste,config = <&gpio_out_lo>;
597					};
598				 };
599			};
600			wlan {
601				wlan_snowball_mode: wlan_snowball {
602					/*
603					 * Activate this mode with the WLAN chip.
604					 * These are plain GPIO pins used by WLAN
605					 */
606					snowball_cfg1 {
607						pins =
608						"GPIO161_D21", /* WLAN_PMU_EN */
609						"GPIO215_AH13"; /* WLAN_ENA */
610						ste,config = <&gpio_out_lo>;
611					};
612					snowball_cfg2 {
613						pins = "GPIO216_AG12"; /* WLAN_IRQ */
614						ste,config = <&gpio_in_pu>;
615					};
616				};
617			};
618		};
619
620		mcde@a0350000 {
621			pinctrl-names = "default", "sleep";
622			pinctrl-0 = <&lcd_default_mode>;
623			pinctrl-1 = <&lcd_sleep_mode>;
624		};
625	};
626};
627