1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/;
3
4#include <dt-bindings/input/atmel-maxtouch.h>
5#include <dt-bindings/input/gpio-keys.h>
6#include <dt-bindings/input/input.h>
7#include <dt-bindings/thermal/thermal.h>
8
9#include "tegra20.dtsi"
10#include "tegra20-cpu-opp.dtsi"
11#include "tegra20-cpu-opp-microvolt.dtsi"
12
13/ {
14	model = "ASUS EeePad Transformer TF101";
15	compatible = "asus,tf101", "nvidia,tegra20";
16	chassis-type = "convertible";
17
18	aliases {
19		mmc0 = &sdmmc4; /* eMMC */
20		mmc1 = &sdmmc3; /* MicroSD */
21		mmc2 = &sdmmc1; /* WiFi */
22
23		rtc0 = &pmic;
24		rtc1 = "/rtc@7000e000";
25
26		serial0 = &uartd;
27		serial1 = &uartc; /* Bluetooth */
28		serial2 = &uartb; /* GPS */
29	};
30
31	/*
32	 * The decompressor and also some bootloaders rely on a
33	 * pre-existing /chosen node to be available to insert the
34	 * command line and merge other ATAGS info.
35	 */
36	chosen {};
37
38	memory@0 {
39		reg = <0x00000000 0x40000000>;
40	};
41
42	reserved-memory {
43		#address-cells = <1>;
44		#size-cells = <1>;
45		ranges;
46
47		ramoops@2ffe0000 {
48			compatible = "ramoops";
49			reg = <0x2ffe0000 0x10000>;	/* 64kB */
50			console-size = <0x8000>;	/* 32kB */
51			record-size = <0x400>;		/*  1kB */
52			ecc-size = <16>;
53		};
54
55		linux,cma@30000000 {
56			compatible = "shared-dma-pool";
57			alloc-ranges = <0x30000000 0x10000000>;
58			size = <0x10000000>; /* 256MiB */
59			linux,cma-default;
60			reusable;
61		};
62	};
63
64	host1x@50000000 {
65		dc@54200000 {
66			rgb {
67				status = "okay";
68
69				port@0 {
70					lcd_output: endpoint {
71						remote-endpoint = <&lvds_encoder_input>;
72						bus-width = <18>;
73					};
74				};
75			};
76		};
77
78		hdmi@54280000 {
79			status = "okay";
80
81			vdd-supply = <&hdmi_vdd_reg>;
82			pll-supply = <&hdmi_pll_reg>;
83			hdmi-supply = <&vdd_hdmi_en>;
84
85			nvidia,ddc-i2c-bus = <&hdmi_ddc>;
86			nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7)
87				GPIO_ACTIVE_HIGH>;
88		};
89	};
90
91	gpio@6000d000 {
92		charging-enable-hog {
93			gpio-hog;
94			gpios = <TEGRA_GPIO(R, 6) GPIO_ACTIVE_HIGH>;
95			output-low;
96		};
97	};
98
99	pinmux@70000014 {
100		pinctrl-names = "default";
101		pinctrl-0 = <&state_default>;
102
103		state_default: pinmux {
104			ata {
105				nvidia,pins = "ata";
106				nvidia,function = "ide";
107			};
108
109			atb {
110				nvidia,pins = "atb", "gma", "gme";
111				nvidia,function = "sdio4";
112			};
113
114			atc {
115				nvidia,pins = "atc";
116				nvidia,function = "nand";
117			};
118
119			atd {
120				nvidia,pins = "atd", "ate", "gmb", "spia",
121					"spib", "spic";
122				nvidia,function = "gmi";
123			};
124
125			cdev1 {
126				nvidia,pins = "cdev1";
127				nvidia,function = "plla_out";
128			};
129
130			cdev2 {
131				nvidia,pins = "cdev2";
132				nvidia,function = "pllp_out4";
133			};
134
135			crtp {
136				nvidia,pins = "crtp";
137				nvidia,function = "crt";
138			};
139
140			lm1 {
141				nvidia,pins = "lm1";
142				nvidia,function = "rsvd3";
143			};
144
145			csus {
146				nvidia,pins = "csus";
147				nvidia,function = "vi_sensor_clk";
148			};
149
150			dap1 {
151				nvidia,pins = "dap1";
152				nvidia,function = "dap1";
153			};
154
155			dap2 {
156				nvidia,pins = "dap2";
157				nvidia,function = "dap2";
158			};
159
160			dap3 {
161				nvidia,pins = "dap3";
162				nvidia,function = "dap3";
163			};
164
165			dap4 {
166				nvidia,pins = "dap4";
167				nvidia,function = "dap4";
168			};
169
170			dta {
171				nvidia,pins = "dta", "dtb", "dtc", "dtd", "dte";
172				nvidia,function = "vi";
173			};
174
175			dtf {
176				nvidia,pins = "dtf";
177				nvidia,function = "i2c3";
178			};
179
180			gmc {
181				nvidia,pins = "gmc";
182				nvidia,function = "uartd";
183			};
184
185			gmd {
186				nvidia,pins = "gmd";
187				nvidia,function = "sflash";
188			};
189
190			gpu {
191				nvidia,pins = "gpu";
192				nvidia,function = "pwm";
193			};
194
195			gpu7 {
196				nvidia,pins = "gpu7";
197				nvidia,function = "rtck";
198			};
199
200			gpv {
201				nvidia,pins = "gpv", "slxa";
202				nvidia,function = "pcie";
203			};
204
205			hdint {
206				nvidia,pins = "hdint";
207				nvidia,function = "hdmi";
208			};
209
210			i2cp {
211				nvidia,pins = "i2cp";
212				nvidia,function = "i2cp";
213			};
214
215			irrx {
216				nvidia,pins = "irrx", "irtx";
217				nvidia,function = "uartb";
218			};
219
220			kbca {
221				nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd",
222					"kbce", "kbcf";
223				nvidia,function = "kbc";
224			};
225
226			lcsn {
227				nvidia,pins = "lcsn", "ldc", "lm0", "lpw1",
228					"lsdi", "lvp0";
229				nvidia,function = "rsvd4";
230			};
231
232			ld0 {
233				nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4",
234					"ld5", "ld6", "ld7", "ld8", "ld9",
235					"ld10", "ld11", "ld12", "ld13", "ld14",
236					"ld15", "ld16", "ld17", "ldi", "lhp0",
237					"lhp1", "lhp2", "lhs", "lpp", "lpw0",
238					"lpw2", "lsc0", "lsc1", "lsck", "lsda",
239					"lspi", "lvp1", "lvs";
240				nvidia,function = "displaya";
241			};
242
243			owc {
244				nvidia,pins = "owc", "spdi", "spdo", "uac";
245				nvidia,function = "rsvd2";
246			};
247
248			pmc {
249				nvidia,pins = "pmc";
250				nvidia,function = "pwr_on";
251			};
252
253			rm {
254				nvidia,pins = "rm";
255				nvidia,function = "i2c1";
256			};
257
258			sdb {
259				nvidia,pins = "sdb", "sdc", "sdd", "slxc", "slxk";
260				nvidia,function = "sdio3";
261			};
262
263			sdio1 {
264				nvidia,pins = "sdio1";
265				nvidia,function = "sdio1";
266			};
267
268			slxd {
269				nvidia,pins = "slxd";
270				nvidia,function = "spdif";
271			};
272
273			spid {
274				nvidia,pins = "spid", "spie", "spif";
275				nvidia,function = "spi1";
276			};
277
278			spig {
279				nvidia,pins = "spig", "spih";
280				nvidia,function = "spi2_alt";
281			};
282
283			uaa {
284				nvidia,pins = "uaa", "uab", "uda";
285				nvidia,function = "ulpi";
286			};
287
288			uad {
289				nvidia,pins = "uad";
290				nvidia,function = "irda";
291			};
292
293			uca {
294				nvidia,pins = "uca", "ucb";
295				nvidia,function = "uartc";
296			};
297
298			conf_ata {
299				nvidia,pins = "ata", "atb", "atc", "atd",
300					"cdev1", "cdev2", "dap1", "dap4",
301					"dte", "ddc", "dtf", "gma", "gmc",
302					"gme", "gpu", "gpu7", "gpv", "i2cp",
303					"irrx", "irtx", "pta", "rm", "sdc",
304					"sdd", "slxc", "slxd", "slxk", "spdi",
305					"spdo", "uac", "uad",
306					"uda", "csus";
307				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
308				nvidia,tristate = <TEGRA_PIN_DISABLE>;
309			};
310
311			conf_ate {
312				nvidia,pins = "ate", "dap2", "dap3", "gmb", "gmd",
313					"owc", "spia", "spib", "spic",
314					"spid", "spie", "spig", "slxa";
315				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
316				nvidia,tristate = <TEGRA_PIN_ENABLE>;
317			};
318
319			conf_ck32 {
320				nvidia,pins = "ck32", "ddrc", "pmca", "pmcb",
321					"pmcc", "pmcd", "pmce", "xm2c", "xm2d";
322				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
323			};
324
325			conf_crtp {
326				nvidia,pins = "crtp", "spih";
327				nvidia,pull = <TEGRA_PIN_PULL_UP>;
328				nvidia,tristate = <TEGRA_PIN_ENABLE>;
329			};
330
331			conf_dta {
332				nvidia,pins = "dta", "dtb", "dtc", "dtd";
333				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
334				nvidia,tristate = <TEGRA_PIN_DISABLE>;
335			};
336
337			conf_spif {
338				nvidia,pins = "spif";
339				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
340				nvidia,tristate = <TEGRA_PIN_ENABLE>;
341			};
342
343			conf_hdint {
344				nvidia,pins = "hdint", "lcsn", "ldc", "lm1",
345					"lpw1", "lsck", "lsda", "lsdi", "lvp0";
346				nvidia,tristate = <TEGRA_PIN_ENABLE>;
347			};
348
349			conf_kbca {
350				nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd",
351					"kbce", "kbcf", "sdio1", "uaa", "uab",
352					"uca", "ucb";
353				nvidia,pull = <TEGRA_PIN_PULL_UP>;
354				nvidia,tristate = <TEGRA_PIN_DISABLE>;
355			};
356
357			conf_lc {
358				nvidia,pins = "lc", "ls";
359				nvidia,pull = <TEGRA_PIN_PULL_UP>;
360			};
361
362			conf_ld0 {
363				nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4",
364					"ld5", "ld6", "ld7", "ld8", "ld9",
365					"ld10", "ld11", "ld12", "ld13", "ld14",
366					"ld15", "ld16", "ld17", "ldi", "lhp0",
367					"lhp1", "lhp2", "lhs", "lm0", "lpp",
368					"lpw0", "lpw2", "lsc0", "lsc1", "lspi",
369					"lvp1", "lvs", "pmc", "sdb";
370				nvidia,tristate = <TEGRA_PIN_DISABLE>;
371			};
372
373			conf_ld17_0 {
374				nvidia,pins = "ld17_0", "ld19_18", "ld21_20",
375					"ld23_22";
376				nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
377			};
378
379			drive_sdio1 {
380				nvidia,pins = "drive_sdio1", "drive_ddc", "drive_vi1";
381				nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
382				nvidia,schmitt = <TEGRA_PIN_ENABLE>;
383				nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
384				nvidia,pull-down-strength = <31>;
385				nvidia,pull-up-strength = <31>;
386				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
387				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
388			};
389
390			drive_csus {
391				nvidia,pins = "drive_csus";
392				nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
393				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
394				nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
395				nvidia,pull-down-strength = <31>;
396				nvidia,pull-up-strength = <31>;
397				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
398				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
399			};
400		};
401
402		state_i2cmux_ddc: pinmux-i2cmux-ddc {
403			ddc {
404				nvidia,pins = "ddc";
405				nvidia,function = "i2c2";
406			};
407
408			pta {
409				nvidia,pins = "pta";
410				nvidia,function = "rsvd4";
411			};
412		};
413
414		state_i2cmux_idle: pinmux-i2cmux-idle {
415			ddc {
416				nvidia,pins = "ddc";
417				nvidia,function = "rsvd4";
418			};
419
420			pta {
421				nvidia,pins = "pta";
422				nvidia,function = "rsvd4";
423			};
424		};
425
426		state_i2cmux_pta: pinmux-i2cmux-pta {
427			ddc {
428				nvidia,pins = "ddc";
429				nvidia,function = "rsvd4";
430			};
431
432			pta {
433				nvidia,pins = "pta";
434				nvidia,function = "i2c2";
435			};
436		};
437	};
438
439	spdif@70002400 {
440		status = "okay";
441
442		nvidia,fixed-parent-rate;
443	};
444
445	i2s@70002800 {
446		status = "okay";
447
448		nvidia,fixed-parent-rate;
449	};
450
451	serial@70006040 {
452		compatible = "nvidia,tegra20-hsuart";
453		/delete-property/ reg-shift;
454		/* GPS BCM4751 */
455	};
456
457	serial@70006200 {
458		compatible = "nvidia,tegra20-hsuart";
459		/delete-property/ reg-shift;
460		status = "okay";
461
462		/* Azurewave AW-NH615 BCM4329B1 */
463		bluetooth {
464			compatible = "brcm,bcm4329-bt";
465
466			interrupt-parent = <&gpio>;
467			interrupts = <TEGRA_GPIO(U, 6) IRQ_TYPE_EDGE_RISING>;
468			interrupt-names = "host-wakeup";
469
470			/* PLLP 216MHz / 16 / 4 */
471			max-speed = <3375000>;
472
473			clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
474			clock-names = "txco";
475
476			vbat-supply  = <&vdd_3v3_sys>;
477			vddio-supply = <&vdd_1v8_sys>;
478
479			device-wakeup-gpios = <&gpio TEGRA_GPIO(U, 1) GPIO_ACTIVE_HIGH>;
480			shutdown-gpios = <&gpio TEGRA_GPIO(U, 0) GPIO_ACTIVE_HIGH>;
481		};
482	};
483
484	serial@70006300 {
485		status = "okay";
486	};
487
488	pwm@7000a000 {
489		status = "okay";
490	};
491
492	i2c@7000c000 {
493		status = "okay";
494		clock-frequency = <400000>;
495
496		/* Aichi AMI306 digital compass */
497		magnetometer@e {
498			compatible = "asahi-kasei,ak8974";
499			reg = <0xe>;
500
501			avdd-supply = <&vdd_3v3_sys>;
502			dvdd-supply = <&vdd_1v8_sys>;
503
504			mount-matrix = "-1",  "0",  "0",
505					"0",  "1",  "0",
506					"0",  "0", "-1";
507		};
508
509		wm8903: audio-codec@1a {
510			compatible = "wlf,wm8903";
511			reg = <0x1a>;
512
513			interrupt-parent = <&gpio>;
514			interrupts = <TEGRA_GPIO(X, 1) IRQ_TYPE_EDGE_BOTH>;
515
516			gpio-controller;
517			#gpio-cells = <2>;
518
519			micdet-cfg = <0x83>;
520			micdet-delay = <100>;
521
522			gpio-cfg = <
523				0x00000600 /* DMIC_LR, output */
524				0x00000680 /* DMIC_DAT, input */
525				0x00000000 /* Speaker-enable GPIO, output, low */
526				0xffffffff /* don't touch */
527				0xffffffff /* don't touch */
528			>;
529
530			AVDD-supply  = <&vdd_1v8_sys>;
531			CPVDD-supply = <&vdd_1v8_sys>;
532			DBVDD-supply = <&vdd_1v8_sys>;
533			DCVDD-supply = <&vdd_1v8_sys>;
534		};
535
536		/* Atmel MXT1386 Touchscreen */
537		touchscreen@5b {
538			compatible = "atmel,maxtouch";
539			reg = <0x5b>;
540
541			interrupt-parent = <&gpio>;
542			interrupts = <TEGRA_GPIO(V, 6) IRQ_TYPE_LEVEL_LOW>;
543
544			reset-gpios = <&gpio TEGRA_GPIO(Q, 7) GPIO_ACTIVE_LOW>;
545
546			vdda-supply = <&vdd_3v3_sys>;
547			vdd-supply  = <&vdd_3v3_sys>;
548
549			atmel,wakeup-method = <ATMEL_MXT_WAKEUP_I2C_SCL>;
550		};
551
552		gyroscope@68 {
553			compatible = "invensense,mpu3050";
554			reg = <0x68>;
555
556			interrupt-parent = <&gpio>;
557			interrupts = <TEGRA_GPIO(Z, 4) IRQ_TYPE_EDGE_RISING>;
558
559			vdd-supply    = <&vdd_3v3_sys>;
560			vlogic-supply = <&vdd_1v8_sys>;
561
562			mount-matrix =	 "0",  "1",  "0",
563					"-1",  "0",  "0",
564					 "0",  "0",  "1";
565
566			i2c-gate {
567				#address-cells = <1>;
568				#size-cells = <0>;
569
570				accelerometer@f {
571					compatible = "kionix,kxtf9";
572					reg = <0xf>;
573
574					interrupt-parent = <&gpio>;
575					interrupts = <TEGRA_GPIO(N, 4) IRQ_TYPE_EDGE_RISING>;
576
577					vdd-supply = <&vdd_1v8_sys>;
578					vddio-supply = <&vdd_1v8_sys>;
579
580					mount-matrix =	"-1",  "0",  "0",
581							 "0", "-1",  "0",
582							 "0",  "0", "-1";
583				};
584			};
585		};
586	};
587
588	i2c2: i2c@7000c400 {
589		status = "okay";
590		clock-frequency = <100000>;
591	};
592
593	i2c@7000c500 {
594		status = "okay";
595		clock-frequency = <400000>;
596	};
597
598	i2c@7000d000 {
599		status = "okay";
600		clock-frequency = <400000>;
601
602		pmic: pmic@34 {
603			compatible = "ti,tps6586x";
604			reg = <0x34>;
605			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
606
607			ti,system-power-controller;
608
609			#gpio-cells = <2>;
610			gpio-controller;
611
612			sys-supply = <&vdd_5v0_sys>;
613			vin-sm0-supply = <&sys_reg>;
614			vin-sm1-supply = <&sys_reg>;
615			vin-sm2-supply = <&sys_reg>;
616			vinldo01-supply = <&sm2_reg>;
617			vinldo23-supply = <&sm2_reg>;
618			vinldo4-supply = <&sm2_reg>;
619			vinldo678-supply = <&sm2_reg>;
620			vinldo9-supply = <&sm2_reg>;
621
622			regulators {
623				sys_reg: sys {
624					regulator-name = "vdd_sys";
625					regulator-always-on;
626				};
627
628				vdd_core: sm0 {
629					regulator-name = "vdd_sm0,vdd_core";
630					regulator-min-microvolt = <950000>;
631					regulator-max-microvolt = <1300000>;
632					regulator-coupled-with = <&rtc_vdd &vdd_cpu>;
633					regulator-coupled-max-spread = <170000 550000>;
634					regulator-always-on;
635					regulator-boot-on;
636
637					nvidia,tegra-core-regulator;
638				};
639
640				vdd_cpu: sm1 {
641					regulator-name = "vdd_sm1,vdd_cpu";
642					regulator-min-microvolt = <750000>;
643					regulator-max-microvolt = <1125000>;
644					regulator-coupled-with = <&vdd_core &rtc_vdd>;
645					regulator-coupled-max-spread = <550000 550000>;
646					regulator-always-on;
647					regulator-boot-on;
648
649					nvidia,tegra-cpu-regulator;
650				};
651
652				sm2_reg: sm2 {
653					regulator-name = "vdd_sm2,vin_ldo*";
654					regulator-min-microvolt = <3700000>;
655					regulator-max-microvolt = <3700000>;
656					regulator-always-on;
657				};
658
659				/* LDO0 is not connected to anything */
660
661				ldo1 {
662					regulator-name = "vdd_ldo1,avdd_pll*";
663					regulator-min-microvolt = <1100000>;
664					regulator-max-microvolt = <1100000>;
665					regulator-always-on;
666				};
667
668				rtc_vdd: ldo2 {
669					regulator-name = "vdd_ldo2,vdd_rtc";
670					regulator-min-microvolt = <950000>;
671					regulator-max-microvolt = <1300000>;
672					regulator-coupled-with = <&vdd_core &vdd_cpu>;
673					regulator-coupled-max-spread = <170000 550000>;
674					regulator-always-on;
675					regulator-boot-on;
676
677					nvidia,tegra-rtc-regulator;
678				};
679
680				ldo3 {
681					regulator-name = "vdd_ldo3,avdd_usb*";
682					regulator-min-microvolt = <3300000>;
683					regulator-max-microvolt = <3300000>;
684					regulator-always-on;
685				};
686
687				ldo4 {
688					regulator-name = "vdd_ldo4,avdd_osc,vddio_sys";
689					regulator-min-microvolt = <1800000>;
690					regulator-max-microvolt = <1800000>;
691					regulator-always-on;
692				};
693
694				vcore_emmc: ldo5 {
695					regulator-name = "vdd_ldo5,vcore_mmc";
696					regulator-min-microvolt = <2850000>;
697					regulator-max-microvolt = <2850000>;
698					regulator-always-on;
699				};
700
701				ldo6 {
702					regulator-name = "vdd_ldo6,avdd_vdac";
703					regulator-min-microvolt = <1800000>;
704					regulator-max-microvolt = <1800000>;
705				};
706
707				hdmi_vdd_reg: ldo7 {
708					regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse";
709					regulator-min-microvolt = <3300000>;
710					regulator-max-microvolt = <3300000>;
711				};
712
713				hdmi_pll_reg: ldo8 {
714					regulator-name = "vdd_ldo8,avdd_hdmi_pll";
715					regulator-min-microvolt = <1800000>;
716					regulator-max-microvolt = <1800000>;
717				};
718
719				ldo9 {
720					regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx";
721					regulator-min-microvolt = <2850000>;
722					regulator-max-microvolt = <2850000>;
723					regulator-always-on;
724				};
725
726				ldo_rtc {
727					regulator-name = "vdd_rtc_out,vdd_cell";
728					regulator-min-microvolt = <3300000>;
729					regulator-max-microvolt = <3300000>;
730					regulator-always-on;
731				};
732			};
733		};
734
735		nct1008: temperature-sensor@4c {
736			compatible = "onnn,nct1008";
737			reg = <0x4c>;
738			vcc-supply = <&vdd_3v3_sys>;
739
740			interrupt-parent = <&gpio>;
741			interrupts = <TEGRA_GPIO(N, 6) IRQ_TYPE_EDGE_FALLING>;
742
743			#thermal-sensor-cells = <1>;
744		};
745	};
746
747	pmc@7000e400 {
748		nvidia,invert-interrupt;
749		nvidia,suspend-mode = <1>;
750		nvidia,cpu-pwr-good-time = <2000>;
751		nvidia,cpu-pwr-off-time = <100>;
752		nvidia,core-pwr-good-time = <3845 3845>;
753		nvidia,core-pwr-off-time = <458>;
754		nvidia,sys-clock-req-active-high;
755		core-supply = <&vdd_core>;
756	};
757
758	memory-controller@7000f400 {
759		nvidia,use-ram-code;
760
761		emc-tables@3 {
762			reg = <0x3>;
763
764			#address-cells = <1>;
765			#size-cells = <0>;
766
767			emc-table@25000 {
768				reg = <25000>;
769				compatible = "nvidia,tegra20-emc-table";
770				clock-frequency = <25000>;
771				nvidia,emc-registers = <0x00000002 0x00000006
772					0x00000003 0x00000003 0x00000006 0x00000004
773					0x00000002 0x00000009 0x00000003 0x00000003
774					0x00000002 0x00000002 0x00000002 0x00000004
775					0x00000003 0x00000008 0x0000000b 0x0000004d
776					0x00000000 0x00000003 0x00000003 0x00000003
777					0x00000008 0x00000001 0x0000000a 0x00000004
778					0x00000003 0x00000008 0x00000004 0x00000006
779					0x00000002 0x00000068 0x00000000 0x00000003
780					0x00000000 0x00000000 0x00000282 0xa0ae04ae
781					0x00070000 0x00000000 0x00000000 0x00000003
782					0x00000000 0x00000000 0x00000000 0x00000000>;
783			};
784
785			emc-table@50000 {
786				reg = <50000>;
787				compatible = "nvidia,tegra20-emc-table";
788				clock-frequency = <50000>;
789				nvidia,emc-registers = <0x00000003 0x00000007
790					0x00000003 0x00000003 0x00000006 0x00000004
791					0x00000002 0x00000009 0x00000003 0x00000003
792					0x00000002 0x00000002 0x00000002 0x00000005
793					0x00000003 0x00000008 0x0000000b 0x0000009f
794					0x00000000 0x00000003 0x00000003 0x00000003
795					0x00000008 0x00000001 0x0000000a 0x00000007
796					0x00000003 0x00000008 0x00000004 0x00000006
797					0x00000002 0x000000d0 0x00000000 0x00000000
798					0x00000000 0x00000000 0x00000282 0xa0ae04ae
799					0x00070000 0x00000000 0x00000000 0x00000005
800					0x00000000 0x00000000 0x00000000 0x00000000>;
801			};
802
803			emc-table@75000 {
804				reg = <75000>;
805				compatible = "nvidia,tegra20-emc-table";
806				clock-frequency = <75000>;
807				nvidia,emc-registers = <0x00000005 0x0000000a
808					0x00000004 0x00000003 0x00000006 0x00000004
809					0x00000002 0x00000009 0x00000003 0x00000003
810					0x00000002 0x00000002 0x00000002 0x00000005
811					0x00000003 0x00000008 0x0000000b 0x000000ff
812					0x00000000 0x00000003 0x00000003 0x00000003
813					0x00000008 0x00000001 0x0000000a 0x0000000b
814					0x00000003 0x00000008 0x00000004 0x00000006
815					0x00000002 0x00000138 0x00000000 0x00000000
816					0x00000000 0x00000000 0x00000282 0xa0ae04ae
817					0x00070000 0x00000000 0x00000000 0x00000007
818					0x00000000 0x00000000 0x00000000 0x00000000>;
819			};
820
821			emc-table@150000 {
822				reg = <150000>;
823				compatible = "nvidia,tegra20-emc-table";
824				clock-frequency = <150000>;
825				nvidia,emc-registers = <0x00000009 0x00000014
826					0x00000007 0x00000003 0x00000006 0x00000004
827					0x00000002 0x00000009 0x00000003 0x00000003
828					0x00000002 0x00000002 0x00000002 0x00000005
829					0x00000003 0x00000008 0x0000000b 0x0000021f
830					0x00000000 0x00000003 0x00000003 0x00000003
831					0x00000008 0x00000001 0x0000000a 0x00000015
832					0x00000003 0x00000008 0x00000004 0x00000006
833					0x00000002 0x00000270 0x00000000 0x00000001
834					0x00000000 0x00000000 0x00000282 0xa07c04ae
835					0x007dc010 0x00000000 0x00000000 0x0000000e
836					0x00000000 0x00000000 0x00000000 0x00000000>;
837			};
838
839			emc-table@300000 {
840				reg = <300000>;
841				compatible = "nvidia,tegra20-emc-table";
842				clock-frequency = <300000>;
843				nvidia,emc-registers = <0x00000012 0x00000027
844					0x0000000d 0x00000006 0x00000007 0x00000005
845					0x00000003 0x00000009 0x00000006 0x00000006
846					0x00000003 0x00000003 0x00000002 0x00000006
847					0x00000003 0x00000009 0x0000000c 0x0000045f
848					0x00000000 0x00000004 0x00000004 0x00000006
849					0x00000008 0x00000001 0x0000000e 0x0000002a
850					0x00000003 0x0000000f 0x00000007 0x00000005
851					0x00000002 0x000004e0 0x00000005 0x00000002
852					0x00000000 0x00000000 0x00000282 0xe059048b
853					0x007e0010 0x00000000 0x00000000 0x0000001b
854					0x00000000 0x00000000 0x00000000 0x00000000>;
855			};
856
857			lpddr2 {
858				compatible = "elpida,B8132B2PB-6D-F", "jedec,lpddr2-s4";
859				revision-id = <1 0>;
860				density = <2048>;
861				io-width = <16>;
862			};
863		};
864	};
865
866	/* Peripheral USB via ASUS connector */
867	usb@c5000000 {
868		compatible = "nvidia,tegra20-udc";
869		status = "okay";
870		dr_mode = "peripheral";
871	};
872
873	usb-phy@c5000000 {
874		status = "okay";
875		dr_mode = "peripheral";
876		nvidia,xcvr-setup-use-fuses;
877		nvidia,xcvr-lsfslew = <2>;
878		nvidia,xcvr-lsrslew = <2>;
879		vbus-supply = <&vdd_5v0_sys>;
880	};
881
882	/* Dock's USB port */
883	usb@c5008000 {
884		status = "okay";
885	};
886
887	usb-phy@c5008000 {
888		status = "okay";
889		nvidia,xcvr-setup-use-fuses;
890		vbus-supply = <&vdd_5v0_sys>;
891	};
892
893	sdmmc1: mmc@c8000000 {
894		status = "okay";
895
896		#address-cells = <1>;
897		#size-cells = <0>;
898
899		assigned-clocks = <&tegra_car TEGRA20_CLK_SDMMC1>;
900		assigned-clock-parents = <&tegra_car TEGRA20_CLK_PLL_C>;
901		assigned-clock-rates = <40000000>;
902
903		max-frequency = <40000000>;
904		keep-power-in-suspend;
905		bus-width = <4>;
906		non-removable;
907
908		mmc-pwrseq = <&brcm_wifi_pwrseq>;
909		vmmc-supply = <&vdd_3v3_sys>;
910		vqmmc-supply = <&vdd_3v3_sys>;
911
912		/* Azurewave AW-NH615 BCM4329B1 */
913		wifi@1 {
914			compatible = "brcm,bcm4329-fmac";
915			reg = <1>;
916
917			interrupt-parent = <&gpio>;
918			interrupts = <TEGRA_GPIO(S, 0) IRQ_TYPE_LEVEL_HIGH>;
919			interrupt-names = "host-wake";
920		};
921	};
922
923	sdmmc3: mmc@c8000400 {
924		status = "okay";
925		bus-width = <4>;
926		cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
927		wp-gpios = <&gpio TEGRA_GPIO(H, 1) GPIO_ACTIVE_HIGH>;
928		power-gpios = <&gpio TEGRA_GPIO(I, 6) GPIO_ACTIVE_HIGH>;
929		vmmc-supply = <&vdd_3v3_sys>;
930		vqmmc-supply = <&vdd_3v3_sys>;
931	};
932
933	sdmmc4: mmc@c8000600 {
934		status = "okay";
935		bus-width = <8>;
936		vmmc-supply = <&vcore_emmc>;
937		vqmmc-supply = <&vdd_3v3_sys>;
938		non-removable;
939	};
940
941	mains: ac-adapter-detect {
942		compatible = "gpio-charger";
943		charger-type = "mains";
944		gpios = <&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_LOW>;
945	};
946
947	backlight: backlight {
948		compatible = "pwm-backlight";
949
950		enable-gpios = <&gpio TEGRA_GPIO(D, 4) GPIO_ACTIVE_HIGH>;
951		power-supply = <&vdd_3v3_sys>;
952		pwms = <&pwm 2 4000000>;
953
954		brightness-levels = <7 255>;
955		num-interpolated-steps = <248>;
956		default-brightness-level = <20>;
957	};
958
959	/* PMIC has a built-in 32KHz oscillator which is used by PMC */
960	clk32k_in: clock-32k-in {
961		compatible = "fixed-clock";
962		clock-frequency = <32768>;
963		#clock-cells = <0>;
964	};
965
966	cpus {
967		cpu0: cpu@0 {
968			cpu-supply = <&vdd_cpu>;
969			operating-points-v2 = <&cpu0_opp_table>;
970			#cooling-cells = <2>;
971		};
972
973		cpu1: cpu@1 {
974			cpu-supply = <&vdd_cpu>;
975			operating-points-v2 = <&cpu0_opp_table>;
976			#cooling-cells = <2>;
977		};
978	};
979
980	display-panel {
981		compatible = "auo,b101ew05", "panel-lvds";
982
983		/* AUO B101EW05 using custom timings */
984
985		backlight = <&backlight>;
986		ddc-i2c-bus = <&lvds_ddc>;
987		power-supply = <&vdd_pnl_reg>;
988
989		width-mm = <218>;
990		height-mm = <135>;
991
992		data-mapping = "jeida-18";
993
994		panel-timing {
995			clock-frequency = <71200000>;
996			hactive = <1280>;
997			vactive = <800>;
998			hfront-porch = <8>;
999			hback-porch = <18>;
1000			hsync-len = <184>;
1001			vsync-len = <3>;
1002			vfront-porch = <4>;
1003			vback-porch = <8>;
1004		};
1005
1006		port {
1007			panel_input: endpoint {
1008				remote-endpoint = <&lvds_encoder_output>;
1009			};
1010		};
1011	};
1012
1013	gpio-keys {
1014		compatible = "gpio-keys";
1015
1016		key-power {
1017			label = "Power";
1018			gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
1019			linux,code = <KEY_POWER>;
1020			debounce-interval = <10>;
1021			wakeup-event-action = <EV_ACT_ASSERTED>;
1022			wakeup-source;
1023		};
1024
1025		key-volume-down {
1026			label = "Volume Down";
1027			gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
1028			linux,code = <KEY_VOLUMEDOWN>;
1029			debounce-interval = <10>;
1030			wakeup-event-action = <EV_ACT_ASSERTED>;
1031			wakeup-source;
1032		};
1033
1034		key-volume-up {
1035			label = "Volume Up";
1036			gpios = <&gpio TEGRA_GPIO(Q, 5) GPIO_ACTIVE_LOW>;
1037			linux,code = <KEY_VOLUMEUP>;
1038			debounce-interval = <10>;
1039			wakeup-event-action = <EV_ACT_ASSERTED>;
1040			wakeup-source;
1041		};
1042
1043		switch-dock-hall-sensor {
1044			label = "Lid";
1045			gpios = <&gpio TEGRA_GPIO(S, 4) GPIO_ACTIVE_LOW>;
1046			linux,input-type = <EV_SW>;
1047			linux,code = <SW_LID>;
1048			debounce-interval = <500>;
1049			wakeup-event-action = <EV_ACT_ASSERTED>;
1050			wakeup-source;
1051		};
1052	};
1053
1054	i2cmux {
1055		compatible = "i2c-mux-pinctrl";
1056		#address-cells = <1>;
1057		#size-cells = <0>;
1058
1059		i2c-parent = <&i2c2>;
1060
1061		pinctrl-names = "ddc", "pta", "idle";
1062		pinctrl-0 = <&state_i2cmux_ddc>;
1063		pinctrl-1 = <&state_i2cmux_pta>;
1064		pinctrl-2 = <&state_i2cmux_idle>;
1065
1066		hdmi_ddc: i2c@0 {
1067			reg = <0>;
1068			#address-cells = <1>;
1069			#size-cells = <0>;
1070		};
1071
1072		lvds_ddc: i2c@1 {
1073			reg = <1>;
1074			#address-cells = <1>;
1075			#size-cells = <0>;
1076
1077			smart-battery@b {
1078				compatible = "ti,bq20z75", "sbs,sbs-battery";
1079				reg = <0xb>;
1080				sbs,i2c-retry-count = <2>;
1081				sbs,poll-retry-count = <10>;
1082				power-supplies = <&mains>;
1083			};
1084		};
1085	};
1086
1087	lvds-encoder {
1088		compatible = "ti,sn75lvds83", "lvds-encoder";
1089
1090		powerdown-gpios = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_LOW>;
1091		power-supply = <&vdd_3v3_sys>;
1092
1093		ports {
1094			#address-cells = <1>;
1095			#size-cells = <0>;
1096
1097			port@0 {
1098				reg = <0>;
1099
1100				lvds_encoder_input: endpoint {
1101					remote-endpoint = <&lcd_output>;
1102				};
1103			};
1104
1105			port@1 {
1106				reg = <1>;
1107
1108				lvds_encoder_output: endpoint {
1109					remote-endpoint = <&panel_input>;
1110				};
1111			};
1112		};
1113	};
1114
1115	opp-table-emc {
1116		/delete-node/ opp-666000000;
1117		/delete-node/ opp-760000000;
1118	};
1119
1120	vdd_5v0_sys: regulator-5v0 {
1121		compatible = "regulator-fixed";
1122		regulator-name = "vdd_5v0";
1123		regulator-min-microvolt = <5000000>;
1124		regulator-max-microvolt = <5000000>;
1125		regulator-always-on;
1126	};
1127
1128	vdd_3v3_sys: regulator-3v3 {
1129		compatible = "regulator-fixed";
1130		regulator-name = "vdd_3v3_vs";
1131		regulator-min-microvolt = <3300000>;
1132		regulator-max-microvolt = <3300000>;
1133		regulator-always-on;
1134		vin-supply = <&vdd_5v0_sys>;
1135	};
1136
1137	regulator-pcie {
1138		compatible = "regulator-fixed";
1139		regulator-name = "pcie_vdd";
1140		regulator-min-microvolt = <1500000>;
1141		regulator-max-microvolt = <1500000>;
1142		gpio = <&pmic 0 GPIO_ACTIVE_HIGH>;
1143		regulator-always-on;
1144	};
1145
1146	vdd_pnl_reg: regulator-panel {
1147		compatible = "regulator-fixed";
1148		regulator-name = "vdd_pnl";
1149		regulator-min-microvolt = <2800000>;
1150		regulator-max-microvolt = <2800000>;
1151		gpio = <&gpio TEGRA_GPIO(C, 6) GPIO_ACTIVE_HIGH>;
1152		enable-active-high;
1153	};
1154
1155	vdd_1v8_sys: regulator-1v8 {
1156		compatible = "regulator-fixed";
1157		regulator-name = "vdd_1v8_vs";
1158		regulator-min-microvolt = <1800000>;
1159		regulator-max-microvolt = <1800000>;
1160		regulator-always-on;
1161		vin-supply = <&vdd_5v0_sys>;
1162	};
1163
1164	vdd_hdmi_en: regulator-hdmi {
1165		compatible = "regulator-fixed";
1166		regulator-name = "vdd_5v0_hdmi_en";
1167		regulator-min-microvolt = <5000000>;
1168		regulator-max-microvolt = <5000000>;
1169		regulator-always-on;
1170		vin-supply = <&vdd_5v0_sys>;
1171		gpio = <&gpio TEGRA_GPIO(V, 5) GPIO_ACTIVE_HIGH>;
1172		enable-active-high;
1173	};
1174
1175	sound {
1176		compatible = "asus,tegra-audio-wm8903-tf101",
1177			     "nvidia,tegra-audio-wm8903";
1178		nvidia,model = "Asus EeePad Transformer WM8903";
1179
1180		nvidia,audio-routing =
1181			"Headphone Jack", "HPOUTR",
1182			"Headphone Jack", "HPOUTL",
1183			"Int Spk", "ROP",
1184			"Int Spk", "RON",
1185			"Int Spk", "LOP",
1186			"Int Spk", "LON",
1187			"IN2L", "Mic Jack",
1188			"DMICDAT", "Int Mic";
1189
1190		nvidia,i2s-controller = <&tegra_i2s1>;
1191		nvidia,audio-codec = <&wm8903>;
1192
1193		nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
1194		nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
1195		nvidia,mic-det-gpios = <&gpio TEGRA_GPIO(X, 1) GPIO_ACTIVE_LOW>;
1196		nvidia,coupled-mic-hp-det;
1197
1198		clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
1199			 <&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
1200			 <&tegra_car TEGRA20_CLK_CDEV1>;
1201		clock-names = "pll_a", "pll_a_out0", "mclk";
1202	};
1203
1204	thermal-zones {
1205		/*
1206		 * NCT1008 has two sensors:
1207		 *
1208		 *	0: internal that monitors ambient/skin temperature
1209		 *	1: external that is connected to the CPU's diode
1210		 *
1211		 * Ideally we should use userspace thermal governor,
1212		 * but it's a much more complex solution.  The "skin"
1213		 * zone is a simpler solution which prevents TF101 from
1214		 * getting too hot from a user's tactile perspective.
1215		 * The CPU zone is intended to protect silicon from damage.
1216		 */
1217
1218		skin-thermal {
1219			polling-delay-passive = <1000>; /* milliseconds */
1220			polling-delay = <5000>; /* milliseconds */
1221
1222			thermal-sensors = <&nct1008 0>;
1223
1224			trips {
1225				trip0: skin-alert {
1226					/* start throttling at 60C */
1227					temperature = <60000>;
1228					hysteresis = <200>;
1229					type = "passive";
1230				};
1231
1232				trip1: skin-crit {
1233					/* shut down at 70C */
1234					temperature = <70000>;
1235					hysteresis = <2000>;
1236					type = "critical";
1237				};
1238			};
1239
1240			cooling-maps {
1241				map0 {
1242					trip = <&trip0>;
1243					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1244							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
1245				};
1246			};
1247		};
1248
1249		cpu-thermal {
1250			polling-delay-passive = <1000>; /* milliseconds */
1251			polling-delay = <5000>; /* milliseconds */
1252
1253			thermal-sensors = <&nct1008 1>;
1254
1255			trips {
1256				trip2: cpu-alert {
1257					/* throttle at 85C until temperature drops to 84.8C */
1258					temperature = <85000>;
1259					hysteresis = <200>;
1260					type = "passive";
1261				};
1262
1263				trip3: cpu-crit {
1264					/* shut down at 90C */
1265					temperature = <90000>;
1266					hysteresis = <2000>;
1267					type = "critical";
1268				};
1269			};
1270
1271			cooling-maps {
1272				map1 {
1273					trip = <&trip2>;
1274					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1275							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
1276				};
1277			};
1278		};
1279	};
1280
1281	brcm_wifi_pwrseq: wifi-pwrseq {
1282		compatible = "mmc-pwrseq-simple";
1283
1284		clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
1285		clock-names = "ext_clock";
1286
1287		reset-gpios = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_LOW>;
1288		post-power-on-delay-ms = <200>;
1289		power-off-delay-us = <200>;
1290	};
1291};
1292