Linux Audio

Check our new training course

Yocto / OpenEmbedded training

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