Linux Audio

Check our new training course

Linux kernel drivers training

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