Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.8.
  1/*
  2 * Google Snow board device tree source
  3 *
  4 * Copyright (c) 2012 Google, Inc
  5 *
  6 * This program is free software; you can redistribute it and/or modify
  7 * it under the terms of the GNU General Public License version 2 as
  8 * published by the Free Software Foundation.
  9 */
 10
 11#include <dt-bindings/gpio/gpio.h>
 12#include <dt-bindings/clock/maxim,max77686.h>
 13#include <dt-bindings/interrupt-controller/irq.h>
 14#include <dt-bindings/input/input.h>
 15#include "exynos5250.dtsi"
 16
 17/ {
 18	aliases {
 19		i2c104 = &i2c_104;
 20	};
 21
 22	memory {
 23		reg = <0x40000000 0x80000000>;
 24	};
 25
 26	chosen {
 27		bootargs = "console=tty1";
 28		stdout-path = "serial3:115200n8";
 29	};
 30
 31	gpio-keys {
 32		compatible = "gpio-keys";
 33		pinctrl-names = "default";
 34		pinctrl-0 = <&power_key_irq &lid_irq>;
 35
 36		power {
 37			label = "Power";
 38			gpios = <&gpx1 3 GPIO_ACTIVE_LOW>;
 39			linux,code = <KEY_POWER>;
 40			wakeup-source;
 41		};
 42
 43		lid-switch {
 44			label = "Lid";
 45			gpios = <&gpx3 5 GPIO_ACTIVE_LOW>;
 46			linux,input-type = <5>; /* EV_SW */
 47			linux,code = <0>; /* SW_LID */
 48			debounce-interval = <1>;
 49			wakeup-source;
 50		};
 51	};
 52
 53	vbat: vbat-fixed-regulator {
 54		compatible = "regulator-fixed";
 55		regulator-name = "vbat-supply";
 56		regulator-boot-on;
 57	};
 58
 59	i2c-arbitrator {
 60		compatible = "i2c-arb-gpio-challenge";
 61		#address-cells = <1>;
 62		#size-cells = <0>;
 63
 64		i2c-parent = <&{/i2c@12CA0000}>;
 65
 66		our-claim-gpio = <&gpf0 3 GPIO_ACTIVE_LOW>;
 67		their-claim-gpios = <&gpe0 4 GPIO_ACTIVE_LOW>;
 68		slew-delay-us = <10>;
 69		wait-retry-us = <3000>;
 70		wait-free-us = <50000>;
 71
 72		pinctrl-names = "default";
 73		pinctrl-0 = <&arb_our_claim &arb_their_claim>;
 74
 75		/* Use ID 104 as a hint that we're on physical bus 4 */
 76		i2c_104: i2c@0 {
 77			reg = <0>;
 78			#address-cells = <1>;
 79			#size-cells = <0>;
 80
 81			battery: sbs-battery@b {
 82				compatible = "sbs,sbs-battery";
 83				reg = <0xb>;
 84				sbs,poll-retry-count = <1>;
 85			};
 86
 87			cros_ec: embedded-controller {
 88				compatible = "google,cros-ec-i2c";
 89				reg = <0x1e>;
 90				interrupts = <6 IRQ_TYPE_NONE>;
 91				interrupt-parent = <&gpx1>;
 92				pinctrl-names = "default";
 93				pinctrl-0 = <&ec_irq>;
 94				wakeup-source;
 95			};
 96
 97			power-regulator {
 98				compatible = "ti,tps65090";
 99				reg = <0x48>;
100
101				/*
102				 * Config irq to disable internal pulls
103				 * even though we run in polling mode.
104				 */
105				pinctrl-names = "default";
106				pinctrl-0 = <&tps65090_irq>;
107
108				vsys1-supply = <&vbat>;
109				vsys2-supply = <&vbat>;
110				vsys3-supply = <&vbat>;
111				infet1-supply = <&vbat>;
112				infet2-supply = <&vbat>;
113				infet3-supply = <&vbat>;
114				infet4-supply = <&vbat>;
115				infet5-supply = <&vbat>;
116				infet6-supply = <&vbat>;
117				infet7-supply = <&vbat>;
118				vsys-l1-supply = <&vbat>;
119				vsys-l2-supply = <&vbat>;
120
121				regulators {
122					dcdc1 {
123						ti,enable-ext-control;
124					};
125					dcdc2 {
126						ti,enable-ext-control;
127					};
128					dcdc3 {
129						ti,enable-ext-control;
130					};
131					fet1: fet1 {
132						regulator-name = "vcd_led";
133						ti,overcurrent-wait = <3>;
134					};
135					tps65090_fet2: fet2 {
136						regulator-name = "video_mid";
137						regulator-always-on;
138						ti,overcurrent-wait = <3>;
139					};
140					fet3 {
141						regulator-name = "wwan_r";
142						regulator-always-on;
143						ti,overcurrent-wait = <3>;
144					};
145					fet4 {
146						regulator-name = "sdcard";
147						ti,overcurrent-wait = <3>;
148					};
149					fet5 {
150						regulator-name = "camout";
151						regulator-always-on;
152						ti,overcurrent-wait = <3>;
153					};
154					fet6: fet6 {
155						regulator-name = "lcd_vdd";
156						ti,overcurrent-wait = <3>;
157					};
158					tps65090_fet7: fet7 {
159						regulator-name = "video_mid_1a";
160						regulator-always-on;
161						ti,overcurrent-wait = <3>;
162					};
163					ldo1 {
164					};
165					ldo2 {
166					};
167				};
168
169				charger {
170					compatible = "ti,tps65090-charger";
171				};
172			};
173		};
174	};
175
176	sound {
177		samsung,i2s-controller = <&i2s0>;
178	};
179
180	usb3_vbus_reg: regulator-usb3 {
181		compatible = "regulator-fixed";
182		regulator-name = "P5.0V_USB3CON";
183		regulator-min-microvolt = <5000000>;
184		regulator-max-microvolt = <5000000>;
185		gpio = <&gpx2 7 GPIO_ACTIVE_HIGH>;
186		pinctrl-names = "default";
187		pinctrl-0 = <&usb3_vbus_en>;
188		enable-active-high;
189	};
190
191	fixed-rate-clocks {
192		xxti {
193			compatible = "samsung,clock-xxti";
194			clock-frequency = <24000000>;
195		};
196	};
197
198	backlight: backlight {
199		compatible = "pwm-backlight";
200		pwms = <&pwm 0 1000000 0>;
201		brightness-levels = <0 100 500 1000 1500 2000 2500 2800>;
202		default-brightness-level = <7>;
203		enable-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>;
204		power-supply = <&fet1>;
205		pinctrl-0 = <&pwm0_out>;
206		pinctrl-names = "default";
207	};
208
209	panel: panel {
210		compatible = "auo,b116xw03";
211		power-supply = <&fet6>;
212		backlight = <&backlight>;
213
214		port {
215			panel_in: endpoint {
216				remote-endpoint = <&bridge_out>;
217			};
218		};
219	};
220
221	mmc3_pwrseq: mmc3_pwrseq {
222		compatible = "mmc-pwrseq-simple";
223		reset-gpios = <&gpx0 2 GPIO_ACTIVE_LOW>, /* WIFI_RSTn */
224			      <&gpx0 1 GPIO_ACTIVE_LOW>; /* WIFI_EN */
225		clocks = <&max77686 MAX77686_CLK_PMIC>;
226		clock-names = "ext_clock";
227	};
228};
229
230&cpu0 {
231	cpu0-supply = <&buck2_reg>;
232};
233
234&dp {
235	status = "okay";
236	pinctrl-names = "default";
237	pinctrl-0 = <&dp_hpd>;
238	samsung,color-space = <0>;
239	samsung,dynamic-range = <0>;
240	samsung,ycbcr-coeff = <0>;
241	samsung,color-depth = <1>;
242	samsung,link-rate = <0x0a>;
243	samsung,lane-count = <2>;
244	samsung,hpd-gpio = <&gpx0 7 GPIO_ACTIVE_HIGH>;
245
246	ports {
247		port@0 {
248			dp_out: endpoint {
249				remote-endpoint = <&bridge_in>;
250			};
251		};
252	};
253};
254
255&ehci {
256	samsung,vbus-gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>;
257};
258
259&fimd {
260	status = "okay";
261	samsung,invert-vclk;
262};
263
264&hdmi {
265	hpd-gpio = <&gpx3 7 GPIO_ACTIVE_HIGH>;
266	pinctrl-names = "default";
267	pinctrl-0 = <&hdmi_hpd_irq>;
268	phy = <&hdmiphy>;
269	ddc = <&i2c_2>;
270	hdmi-en-supply = <&tps65090_fet7>;
271	vdd-supply = <&ldo8_reg>;
272	vdd_osc-supply = <&ldo10_reg>;
273	vdd_pll-supply = <&ldo8_reg>;
274};
275
276&i2c_0 {
277	status = "okay";
278	samsung,i2c-sda-delay = <100>;
279	samsung,i2c-max-bus-freq = <378000>;
280
281	max77686: max77686@09 {
282		compatible = "maxim,max77686";
283		interrupt-parent = <&gpx3>;
284		interrupts = <2 IRQ_TYPE_NONE>;
285		pinctrl-names = "default";
286		pinctrl-0 = <&max77686_irq>;
287		wakeup-source;
288		reg = <0x09>;
289		#clock-cells = <1>;
290
291		voltage-regulators {
292			ldo1_reg: LDO1 {
293				regulator-name = "P1.0V_LDO_OUT1";
294				regulator-min-microvolt = <1000000>;
295				regulator-max-microvolt = <1000000>;
296				regulator-always-on;
297			};
298
299			ldo2_reg: LDO2 {
300				regulator-name = "P1.8V_LDO_OUT2";
301				regulator-min-microvolt = <1800000>;
302				regulator-max-microvolt = <1800000>;
303				regulator-always-on;
304			};
305
306			ldo3_reg: LDO3 {
307				regulator-name = "P1.8V_LDO_OUT3";
308				regulator-min-microvolt = <1800000>;
309				regulator-max-microvolt = <1800000>;
310				regulator-always-on;
311			};
312
313			ldo7_reg: LDO7 {
314				regulator-name = "P1.1V_LDO_OUT7";
315				regulator-min-microvolt = <1100000>;
316				regulator-max-microvolt = <1100000>;
317				regulator-always-on;
318			};
319
320			ldo8_reg: LDO8 {
321				regulator-name = "P1.0V_LDO_OUT8";
322				regulator-min-microvolt = <1000000>;
323				regulator-max-microvolt = <1000000>;
324				regulator-always-on;
325			};
326
327			ldo10_reg: LDO10 {
328				regulator-name = "P1.8V_LDO_OUT10";
329				regulator-min-microvolt = <1800000>;
330				regulator-max-microvolt = <1800000>;
331				regulator-always-on;
332			};
333
334			ldo12_reg: LDO12 {
335				regulator-name = "P3.0V_LDO_OUT12";
336				regulator-min-microvolt = <3000000>;
337				regulator-max-microvolt = <3000000>;
338				regulator-always-on;
339			};
340
341			ldo14_reg: LDO14 {
342				regulator-name = "P1.8V_LDO_OUT14";
343				regulator-min-microvolt = <1800000>;
344				regulator-max-microvolt = <1800000>;
345				regulator-always-on;
346			};
347
348			ldo15_reg: LDO15 {
349				regulator-name = "P1.0V_LDO_OUT15";
350				regulator-min-microvolt = <1000000>;
351				regulator-max-microvolt = <1000000>;
352				regulator-always-on;
353			};
354
355			ldo16_reg: LDO16 {
356				regulator-name = "P1.8V_LDO_OUT16";
357				regulator-min-microvolt = <1800000>;
358				regulator-max-microvolt = <1800000>;
359				regulator-always-on;
360			};
361
362			buck1_reg: BUCK1 {
363				regulator-name = "vdd_mif";
364				regulator-min-microvolt = <950000>;
365				regulator-max-microvolt = <1300000>;
366				regulator-always-on;
367				regulator-boot-on;
368			};
369
370			buck2_reg: BUCK2 {
371				regulator-name = "vdd_arm";
372				regulator-min-microvolt = <850000>;
373				regulator-max-microvolt = <1350000>;
374				regulator-always-on;
375				regulator-boot-on;
376			};
377
378			buck3_reg: BUCK3 {
379				regulator-name = "vdd_int";
380				regulator-min-microvolt = <900000>;
381				regulator-max-microvolt = <1200000>;
382				regulator-always-on;
383				regulator-boot-on;
384			};
385
386			buck4_reg: BUCK4 {
387				regulator-name = "vdd_g3d";
388				regulator-min-microvolt = <850000>;
389				regulator-max-microvolt = <1300000>;
390				regulator-always-on;
391				regulator-boot-on;
392			};
393
394			buck5_reg: BUCK5 {
395				regulator-name = "P1.8V_BUCK_OUT5";
396				regulator-min-microvolt = <1800000>;
397				regulator-max-microvolt = <1800000>;
398				regulator-always-on;
399				regulator-boot-on;
400			};
401
402			buck6_reg: BUCK6 {
403				regulator-name = "P1.35V_BUCK_OUT6";
404				regulator-min-microvolt = <1350000>;
405				regulator-max-microvolt = <1350000>;
406				regulator-always-on;
407			};
408
409			buck7_reg: BUCK7 {
410				regulator-name = "P2.0V_BUCK_OUT7";
411				regulator-min-microvolt = <2000000>;
412				regulator-max-microvolt = <2000000>;
413				regulator-always-on;
414			};
415
416			buck8_reg: BUCK8 {
417				regulator-name = "P2.85V_BUCK_OUT8";
418				regulator-min-microvolt = <2850000>;
419				regulator-max-microvolt = <2850000>;
420				regulator-always-on;
421			};
422		};
423	};
424};
425
426&i2c_1 {
427	status = "okay";
428	samsung,i2c-sda-delay = <100>;
429	samsung,i2c-max-bus-freq = <378000>;
430
431	trackpad {
432		reg = <0x67>;
433		compatible = "cypress,cyapa";
434		interrupts = <2 IRQ_TYPE_NONE>;
435		interrupt-parent = <&gpx1>;
436		wakeup-source;
437	};
438};
439
440/*
441 * Disabled pullups since external part has its own pullups and
442 * double-pulling gets us out of spec in some cases.
443 */
444&i2c2_bus {
445	samsung,pin-pud = <0>;
446};
447
448&i2c_2 {
449	status = "okay";
450	samsung,i2c-sda-delay = <100>;
451	samsung,i2c-max-bus-freq = <66000>;
452
453	hdmiddc@50 {
454		compatible = "samsung,exynos4210-hdmiddc";
455		reg = <0x50>;
456	};
457};
458
459&i2c_3 {
460	status = "okay";
461	samsung,i2c-sda-delay = <100>;
462	samsung,i2c-max-bus-freq = <66000>;
463};
464
465&i2c_4 {
466	status = "okay";
467	samsung,i2c-sda-delay = <100>;
468	samsung,i2c-max-bus-freq = <66000>;
469};
470
471&i2c_5 {
472	status = "okay";
473	samsung,i2c-sda-delay = <100>;
474	samsung,i2c-max-bus-freq = <66000>;
475};
476
477&i2c_7 {
478	status = "okay";
479	samsung,i2c-sda-delay = <100>;
480	samsung,i2c-max-bus-freq = <66000>;
481
482	ptn3460: lvds-bridge@20 {
483		compatible = "nxp,ptn3460";
484		reg = <0x20>;
485		powerdown-gpios = <&gpy2 5 GPIO_ACTIVE_HIGH>;
486		reset-gpios = <&gpx1 5 GPIO_ACTIVE_HIGH>;
487		edid-emulation = <5>;
488
489		ports {
490			port@0 {
491				bridge_out: endpoint {
492					remote-endpoint = <&panel_in>;
493				};
494			};
495
496			port@1 {
497				bridge_in: endpoint {
498					remote-endpoint = <&dp_out>;
499				};
500			};
501		};
502	};
503};
504
505&i2c_8 {
506	status = "okay";
507	samsung,i2c-sda-delay = <100>;
508	samsung,i2c-max-bus-freq = <378000>;
509
510	hdmiphy: hdmiphy@38 {
511		compatible = "samsung,exynos4212-hdmiphy";
512		reg = <0x38>;
513	};
514};
515
516&i2s0 {
517	status = "okay";
518};
519
520&mmc_0 {
521	status = "okay";
522	num-slots = <1>;
523	non-removable;
524	samsung,dw-mshc-ciu-div = <3>;
525	samsung,dw-mshc-sdr-timing = <2 3>;
526	samsung,dw-mshc-ddr-timing = <1 2>;
527	pinctrl-names = "default";
528	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4 &sd0_bus8>;
529	bus-width = <8>;
530	cap-mmc-highspeed;
531};
532
533&mmc_2 {
534	status = "okay";
535	num-slots = <1>;
536	card-detect-delay = <200>;
537	samsung,dw-mshc-ciu-div = <3>;
538	samsung,dw-mshc-sdr-timing = <2 3>;
539	samsung,dw-mshc-ddr-timing = <1 2>;
540	pinctrl-names = "default";
541	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
542	bus-width = <4>;
543	wp-gpios = <&gpc2 1 GPIO_ACTIVE_HIGH>;
544	cap-sd-highspeed;
545};
546
547/*
548 * On Snow we've got SIP WiFi and so can keep drive strengths low to
549 * reduce EMI.
550 */
551&mmc_3 {
552	status = "okay";
553	num-slots = <1>;
554	non-removable;
555	cap-sdio-irq;
556	keep-power-in-suspend;
557	samsung,dw-mshc-ciu-div = <3>;
558	samsung,dw-mshc-sdr-timing = <2 3>;
559	samsung,dw-mshc-ddr-timing = <1 2>;
560	pinctrl-names = "default";
561	pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4 &wifi_en &wifi_rst>;
562	bus-width = <4>;
563	cap-sd-highspeed;
564	mmc-pwrseq = <&mmc3_pwrseq>;
565};
566
567&pinctrl_0 {
568	wifi_en: wifi-en {
569		samsung,pins = "gpx0-1";
570		samsung,pin-function = <1>;
571		samsung,pin-pud = <0>;
572		samsung,pin-drv = <0>;
573	};
574
575	wifi_rst: wifi-rst {
576		samsung,pins = "gpx0-2";
577		samsung,pin-function = <1>;
578		samsung,pin-pud = <0>;
579		samsung,pin-drv = <0>;
580	};
581
582	power_key_irq: power-key-irq {
583		samsung,pins = "gpx1-3";
584		samsung,pin-function = <0xf>;
585		samsung,pin-pud = <0>;
586		samsung,pin-drv = <0>;
587	};
588
589	ec_irq: ec-irq {
590		samsung,pins = "gpx1-6";
591		samsung,pin-function = <0>;
592		samsung,pin-pud = <0>;
593		samsung,pin-drv = <0>;
594	};
595
596	tps65090_irq: tps65090-irq {
597		samsung,pins = "gpx2-6";
598		samsung,pin-function = <0>;
599		samsung,pin-pud = <0>;
600		samsung,pin-drv = <0>;
601	};
602
603	usb3_vbus_en: usb3-vbus-en {
604		samsung,pins = "gpx2-7";
605		samsung,pin-function = <1>;
606		samsung,pin-pud = <0>;
607		samsung,pin-drv = <0>;
608	};
609
610	max77686_irq: max77686-irq {
611		samsung,pins = "gpx3-2";
612		samsung,pin-function = <0>;
613		samsung,pin-pud = <0>;
614		samsung,pin-drv = <0>;
615	};
616
617	lid_irq: lid-irq {
618		samsung,pins = "gpx3-5";
619		samsung,pin-function = <0xf>;
620		samsung,pin-pud = <0>;
621		samsung,pin-drv = <0>;
622	};
623
624	hdmi_hpd_irq: hdmi-hpd-irq {
625		samsung,pins = "gpx3-7";
626		samsung,pin-function = <0>;
627		samsung,pin-pud = <1>;
628		samsung,pin-drv = <0>;
629	};
630};
631
632&pinctrl_1 {
633	arb_their_claim: arb-their-claim {
634		samsung,pins = "gpe0-4";
635		samsung,pin-function = <0>;
636		samsung,pin-pud = <3>;
637		samsung,pin-drv = <0>;
638	};
639
640	arb_our_claim: arb-our-claim {
641		samsung,pins = "gpf0-3";
642		samsung,pin-function = <1>;
643		samsung,pin-pud = <0>;
644		samsung,pin-drv = <0>;
645	};
646};
647
648&rtc {
649	status = "okay";
650	clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
651	clock-names = "rtc", "rtc_src";
652};
653
654&sd3_bus4 {
655	samsung,pin-drv = <0>;
656};
657
658&sd3_clk {
659	samsung,pin-drv = <0>;
660};
661
662&sd3_cmd {
663	samsung,pin-pud = <3>;
664	samsung,pin-drv = <0>;
665};
666
667&spi_1 {
668	status = "okay";
669	samsung,spi-src-clk = <0>;
670	num-cs = <1>;
671	cs-gpios = <&gpa2 5 GPIO_ACTIVE_HIGH>;
672};
673
674&usbdrd_dwc3 {
675	dr_mode = "host";
676};
677
678&usbdrd_phy {
679	vbus-supply = <&usb3_vbus_reg>;
680};
681
682#include "cros-ec-keyboard.dtsi"