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		/delete-property/ dmas;
486		/delete-property/ dma-names;
487		status = "okay";
488	};
489
490	pwm@7000a000 {
491		status = "okay";
492	};
493
494	i2c@7000c000 {
495		status = "okay";
496		clock-frequency = <400000>;
497
498		/* Aichi AMI306 digital compass */
499		magnetometer@e {
500			compatible = "asahi-kasei,ak8974";
501			reg = <0xe>;
502
503			avdd-supply = <&vdd_3v3_sys>;
504			dvdd-supply = <&vdd_1v8_sys>;
505
506			mount-matrix = "-1",  "0",  "0",
507					"0",  "1",  "0",
508					"0",  "0", "-1";
509		};
510
511		wm8903: audio-codec@1a {
512			compatible = "wlf,wm8903";
513			reg = <0x1a>;
514
515			interrupt-parent = <&gpio>;
516			interrupts = <TEGRA_GPIO(X, 1) IRQ_TYPE_EDGE_BOTH>;
517
518			gpio-controller;
519			#gpio-cells = <2>;
520
521			micdet-cfg = <0x83>;
522			micdet-delay = <100>;
523
524			gpio-cfg = <
525				0x00000600 /* DMIC_LR, output */
526				0x00000680 /* DMIC_DAT, input */
527				0x00000000 /* Speaker-enable GPIO, output, low */
528				0xffffffff /* don't touch */
529				0xffffffff /* don't touch */
530			>;
531
532			AVDD-supply  = <&vdd_1v8_sys>;
533			CPVDD-supply = <&vdd_1v8_sys>;
534			DBVDD-supply = <&vdd_1v8_sys>;
535			DCVDD-supply = <&vdd_1v8_sys>;
536		};
537
538		/* Atmel MXT1386 Touchscreen */
539		touchscreen@5b {
540			compatible = "atmel,maxtouch";
541			reg = <0x5b>;
542
543			interrupt-parent = <&gpio>;
544			interrupts = <TEGRA_GPIO(V, 6) IRQ_TYPE_LEVEL_LOW>;
545
546			reset-gpios = <&gpio TEGRA_GPIO(Q, 7) GPIO_ACTIVE_LOW>;
547
548			vdda-supply = <&vdd_3v3_sys>;
549			vdd-supply  = <&vdd_3v3_sys>;
550
551			atmel,wakeup-method = <ATMEL_MXT_WAKEUP_I2C_SCL>;
552		};
553
554		gyroscope@68 {
555			compatible = "invensense,mpu3050";
556			reg = <0x68>;
557
558			interrupt-parent = <&gpio>;
559			interrupts = <TEGRA_GPIO(Z, 4) IRQ_TYPE_EDGE_RISING>;
560
561			vdd-supply    = <&vdd_3v3_sys>;
562			vlogic-supply = <&vdd_1v8_sys>;
563
564			mount-matrix =	 "0",  "1",  "0",
565					"-1",  "0",  "0",
566					 "0",  "0",  "1";
567
568			i2c-gate {
569				#address-cells = <1>;
570				#size-cells = <0>;
571
572				accelerometer@f {
573					compatible = "kionix,kxtf9";
574					reg = <0xf>;
575
576					interrupt-parent = <&gpio>;
577					interrupts = <TEGRA_GPIO(N, 4) IRQ_TYPE_EDGE_RISING>;
578
579					vdd-supply = <&vdd_1v8_sys>;
580					vddio-supply = <&vdd_1v8_sys>;
581
582					mount-matrix =	"-1",  "0",  "0",
583							 "0", "-1",  "0",
584							 "0",  "0", "-1";
585				};
586			};
587		};
588	};
589
590	i2c2: i2c@7000c400 {
591		status = "okay";
592		clock-frequency = <100000>;
593	};
594
595	i2c@7000c500 {
596		status = "okay";
597		clock-frequency = <400000>;
598	};
599
600	i2c@7000d000 {
601		status = "okay";
602		clock-frequency = <400000>;
603
604		pmic: pmic@34 {
605			compatible = "ti,tps6586x";
606			reg = <0x34>;
607			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
608
609			ti,system-power-controller;
610
611			#gpio-cells = <2>;
612			gpio-controller;
613
614			sys-supply = <&vdd_5v0_sys>;
615			vin-sm0-supply = <&sys_reg>;
616			vin-sm1-supply = <&sys_reg>;
617			vin-sm2-supply = <&sys_reg>;
618			vinldo01-supply = <&sm2_reg>;
619			vinldo23-supply = <&sm2_reg>;
620			vinldo4-supply = <&sm2_reg>;
621			vinldo678-supply = <&sm2_reg>;
622			vinldo9-supply = <&sm2_reg>;
623
624			regulators {
625				sys_reg: sys {
626					regulator-name = "vdd_sys";
627					regulator-always-on;
628				};
629
630				vdd_core: sm0 {
631					regulator-name = "vdd_sm0,vdd_core";
632					regulator-min-microvolt = <950000>;
633					regulator-max-microvolt = <1300000>;
634					regulator-coupled-with = <&rtc_vdd &vdd_cpu>;
635					regulator-coupled-max-spread = <170000 550000>;
636					regulator-always-on;
637					regulator-boot-on;
638
639					nvidia,tegra-core-regulator;
640				};
641
642				vdd_cpu: sm1 {
643					regulator-name = "vdd_sm1,vdd_cpu";
644					regulator-min-microvolt = <750000>;
645					regulator-max-microvolt = <1125000>;
646					regulator-coupled-with = <&vdd_core &rtc_vdd>;
647					regulator-coupled-max-spread = <550000 550000>;
648					regulator-always-on;
649					regulator-boot-on;
650
651					nvidia,tegra-cpu-regulator;
652				};
653
654				sm2_reg: sm2 {
655					regulator-name = "vdd_sm2,vin_ldo*";
656					regulator-min-microvolt = <3700000>;
657					regulator-max-microvolt = <3700000>;
658					regulator-always-on;
659				};
660
661				/* LDO0 is not connected to anything */
662
663				ldo1 {
664					regulator-name = "vdd_ldo1,avdd_pll*";
665					regulator-min-microvolt = <1100000>;
666					regulator-max-microvolt = <1100000>;
667					regulator-always-on;
668				};
669
670				rtc_vdd: ldo2 {
671					regulator-name = "vdd_ldo2,vdd_rtc";
672					regulator-min-microvolt = <950000>;
673					regulator-max-microvolt = <1300000>;
674					regulator-coupled-with = <&vdd_core &vdd_cpu>;
675					regulator-coupled-max-spread = <170000 550000>;
676					regulator-always-on;
677					regulator-boot-on;
678
679					nvidia,tegra-rtc-regulator;
680				};
681
682				ldo3 {
683					regulator-name = "vdd_ldo3,avdd_usb*";
684					regulator-min-microvolt = <3300000>;
685					regulator-max-microvolt = <3300000>;
686					regulator-always-on;
687				};
688
689				ldo4 {
690					regulator-name = "vdd_ldo4,avdd_osc,vddio_sys";
691					regulator-min-microvolt = <1800000>;
692					regulator-max-microvolt = <1800000>;
693					regulator-always-on;
694				};
695
696				vcore_emmc: ldo5 {
697					regulator-name = "vdd_ldo5,vcore_mmc";
698					regulator-min-microvolt = <2850000>;
699					regulator-max-microvolt = <2850000>;
700					regulator-always-on;
701				};
702
703				ldo6 {
704					regulator-name = "vdd_ldo6,avdd_vdac";
705					regulator-min-microvolt = <1800000>;
706					regulator-max-microvolt = <1800000>;
707				};
708
709				hdmi_vdd_reg: ldo7 {
710					regulator-name = "vdd_ldo7,avdd_hdmi,vdd_fuse";
711					regulator-min-microvolt = <3300000>;
712					regulator-max-microvolt = <3300000>;
713				};
714
715				hdmi_pll_reg: ldo8 {
716					regulator-name = "vdd_ldo8,avdd_hdmi_pll";
717					regulator-min-microvolt = <1800000>;
718					regulator-max-microvolt = <1800000>;
719				};
720
721				ldo9 {
722					regulator-name = "vdd_ldo9,avdd_2v85,vdd_ddr_rx";
723					regulator-min-microvolt = <2850000>;
724					regulator-max-microvolt = <2850000>;
725					regulator-always-on;
726				};
727
728				ldo_rtc {
729					regulator-name = "vdd_rtc_out,vdd_cell";
730					regulator-min-microvolt = <3300000>;
731					regulator-max-microvolt = <3300000>;
732					regulator-always-on;
733				};
734			};
735		};
736
737		nct1008: temperature-sensor@4c {
738			compatible = "onnn,nct1008";
739			reg = <0x4c>;
740			vcc-supply = <&vdd_3v3_sys>;
741
742			interrupt-parent = <&gpio>;
743			interrupts = <TEGRA_GPIO(N, 6) IRQ_TYPE_EDGE_FALLING>;
744
745			#thermal-sensor-cells = <1>;
746		};
747	};
748
749	pmc@7000e400 {
750		nvidia,invert-interrupt;
751		nvidia,suspend-mode = <1>;
752		nvidia,cpu-pwr-good-time = <2000>;
753		nvidia,cpu-pwr-off-time = <100>;
754		nvidia,core-pwr-good-time = <3845 3845>;
755		nvidia,core-pwr-off-time = <458>;
756		nvidia,sys-clock-req-active-high;
757		core-supply = <&vdd_core>;
758	};
759
760	memory-controller@7000f400 {
761		nvidia,use-ram-code;
762
763		emc-tables@3 {
764			reg = <0x3>;
765
766			#address-cells = <1>;
767			#size-cells = <0>;
768
769			emc-table@25000 {
770				reg = <25000>;
771				compatible = "nvidia,tegra20-emc-table";
772				clock-frequency = <25000>;
773				nvidia,emc-registers = <0x00000002 0x00000006
774					0x00000003 0x00000003 0x00000006 0x00000004
775					0x00000002 0x00000009 0x00000003 0x00000003
776					0x00000002 0x00000002 0x00000002 0x00000004
777					0x00000003 0x00000008 0x0000000b 0x0000004d
778					0x00000000 0x00000003 0x00000003 0x00000003
779					0x00000008 0x00000001 0x0000000a 0x00000004
780					0x00000003 0x00000008 0x00000004 0x00000006
781					0x00000002 0x00000068 0x00000000 0x00000003
782					0x00000000 0x00000000 0x00000282 0xa0ae04ae
783					0x00070000 0x00000000 0x00000000 0x00000003
784					0x00000000 0x00000000 0x00000000 0x00000000>;
785			};
786
787			emc-table@50000 {
788				reg = <50000>;
789				compatible = "nvidia,tegra20-emc-table";
790				clock-frequency = <50000>;
791				nvidia,emc-registers = <0x00000003 0x00000007
792					0x00000003 0x00000003 0x00000006 0x00000004
793					0x00000002 0x00000009 0x00000003 0x00000003
794					0x00000002 0x00000002 0x00000002 0x00000005
795					0x00000003 0x00000008 0x0000000b 0x0000009f
796					0x00000000 0x00000003 0x00000003 0x00000003
797					0x00000008 0x00000001 0x0000000a 0x00000007
798					0x00000003 0x00000008 0x00000004 0x00000006
799					0x00000002 0x000000d0 0x00000000 0x00000000
800					0x00000000 0x00000000 0x00000282 0xa0ae04ae
801					0x00070000 0x00000000 0x00000000 0x00000005
802					0x00000000 0x00000000 0x00000000 0x00000000>;
803			};
804
805			emc-table@75000 {
806				reg = <75000>;
807				compatible = "nvidia,tegra20-emc-table";
808				clock-frequency = <75000>;
809				nvidia,emc-registers = <0x00000005 0x0000000a
810					0x00000004 0x00000003 0x00000006 0x00000004
811					0x00000002 0x00000009 0x00000003 0x00000003
812					0x00000002 0x00000002 0x00000002 0x00000005
813					0x00000003 0x00000008 0x0000000b 0x000000ff
814					0x00000000 0x00000003 0x00000003 0x00000003
815					0x00000008 0x00000001 0x0000000a 0x0000000b
816					0x00000003 0x00000008 0x00000004 0x00000006
817					0x00000002 0x00000138 0x00000000 0x00000000
818					0x00000000 0x00000000 0x00000282 0xa0ae04ae
819					0x00070000 0x00000000 0x00000000 0x00000007
820					0x00000000 0x00000000 0x00000000 0x00000000>;
821			};
822
823			emc-table@150000 {
824				reg = <150000>;
825				compatible = "nvidia,tegra20-emc-table";
826				clock-frequency = <150000>;
827				nvidia,emc-registers = <0x00000009 0x00000014
828					0x00000007 0x00000003 0x00000006 0x00000004
829					0x00000002 0x00000009 0x00000003 0x00000003
830					0x00000002 0x00000002 0x00000002 0x00000005
831					0x00000003 0x00000008 0x0000000b 0x0000021f
832					0x00000000 0x00000003 0x00000003 0x00000003
833					0x00000008 0x00000001 0x0000000a 0x00000015
834					0x00000003 0x00000008 0x00000004 0x00000006
835					0x00000002 0x00000270 0x00000000 0x00000001
836					0x00000000 0x00000000 0x00000282 0xa07c04ae
837					0x007dc010 0x00000000 0x00000000 0x0000000e
838					0x00000000 0x00000000 0x00000000 0x00000000>;
839			};
840
841			emc-table@300000 {
842				reg = <300000>;
843				compatible = "nvidia,tegra20-emc-table";
844				clock-frequency = <300000>;
845				nvidia,emc-registers = <0x00000012 0x00000027
846					0x0000000d 0x00000006 0x00000007 0x00000005
847					0x00000003 0x00000009 0x00000006 0x00000006
848					0x00000003 0x00000003 0x00000002 0x00000006
849					0x00000003 0x00000009 0x0000000c 0x0000045f
850					0x00000000 0x00000004 0x00000004 0x00000006
851					0x00000008 0x00000001 0x0000000e 0x0000002a
852					0x00000003 0x0000000f 0x00000007 0x00000005
853					0x00000002 0x000004e0 0x00000005 0x00000002
854					0x00000000 0x00000000 0x00000282 0xe059048b
855					0x007e0010 0x00000000 0x00000000 0x0000001b
856					0x00000000 0x00000000 0x00000000 0x00000000>;
857			};
858
859			lpddr2 {
860				compatible = "elpida,B8132B2PB-6D-F", "jedec,lpddr2-s4";
861				revision-id = <1 0>;
862				density = <2048>;
863				io-width = <16>;
864			};
865		};
866	};
867
868	/* Peripheral USB via ASUS connector */
869	usb@c5000000 {
870		compatible = "nvidia,tegra20-udc";
871		status = "okay";
872		dr_mode = "peripheral";
873	};
874
875	usb-phy@c5000000 {
876		status = "okay";
877		dr_mode = "peripheral";
878		nvidia,xcvr-setup-use-fuses;
879		nvidia,xcvr-lsfslew = <2>;
880		nvidia,xcvr-lsrslew = <2>;
881		vbus-supply = <&vdd_5v0_sys>;
882	};
883
884	/* Dock's USB port */
885	usb@c5008000 {
886		status = "okay";
887	};
888
889	usb-phy@c5008000 {
890		status = "okay";
891		nvidia,xcvr-setup-use-fuses;
892		vbus-supply = <&vdd_5v0_sys>;
893	};
894
895	sdmmc1: mmc@c8000000 {
896		status = "okay";
897
898		#address-cells = <1>;
899		#size-cells = <0>;
900
901		assigned-clocks = <&tegra_car TEGRA20_CLK_SDMMC1>;
902		assigned-clock-parents = <&tegra_car TEGRA20_CLK_PLL_C>;
903		assigned-clock-rates = <40000000>;
904
905		max-frequency = <40000000>;
906		keep-power-in-suspend;
907		bus-width = <4>;
908		non-removable;
909
910		mmc-pwrseq = <&brcm_wifi_pwrseq>;
911		vmmc-supply = <&vdd_3v3_sys>;
912		vqmmc-supply = <&vdd_3v3_sys>;
913
914		/* Azurewave AW-NH615 BCM4329B1 */
915		wifi@1 {
916			compatible = "brcm,bcm4329-fmac";
917			reg = <1>;
918
919			interrupt-parent = <&gpio>;
920			interrupts = <TEGRA_GPIO(S, 0) IRQ_TYPE_LEVEL_HIGH>;
921			interrupt-names = "host-wake";
922		};
923	};
924
925	sdmmc3: mmc@c8000400 {
926		status = "okay";
927		bus-width = <4>;
928		cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
929		wp-gpios = <&gpio TEGRA_GPIO(H, 1) GPIO_ACTIVE_HIGH>;
930		power-gpios = <&gpio TEGRA_GPIO(I, 6) GPIO_ACTIVE_HIGH>;
931		vmmc-supply = <&vdd_3v3_sys>;
932		vqmmc-supply = <&vdd_3v3_sys>;
933	};
934
935	sdmmc4: mmc@c8000600 {
936		status = "okay";
937		bus-width = <8>;
938		vmmc-supply = <&vcore_emmc>;
939		vqmmc-supply = <&vdd_3v3_sys>;
940		non-removable;
941	};
942
943	mains: ac-adapter-detect {
944		compatible = "gpio-charger";
945		charger-type = "mains";
946		gpios = <&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_LOW>;
947	};
948
949	backlight: backlight {
950		compatible = "pwm-backlight";
951
952		enable-gpios = <&gpio TEGRA_GPIO(D, 4) GPIO_ACTIVE_HIGH>;
953		power-supply = <&vdd_3v3_sys>;
954		pwms = <&pwm 2 4000000>;
955
956		brightness-levels = <7 255>;
957		num-interpolated-steps = <248>;
958		default-brightness-level = <20>;
959	};
960
961	/* PMIC has a built-in 32KHz oscillator which is used by PMC */
962	clk32k_in: clock-32k-in {
963		compatible = "fixed-clock";
964		clock-frequency = <32768>;
965		#clock-cells = <0>;
966	};
967
968	cpus {
969		cpu0: cpu@0 {
970			cpu-supply = <&vdd_cpu>;
971			operating-points-v2 = <&cpu0_opp_table>;
972			#cooling-cells = <2>;
973		};
974
975		cpu1: cpu@1 {
976			cpu-supply = <&vdd_cpu>;
977			operating-points-v2 = <&cpu0_opp_table>;
978			#cooling-cells = <2>;
979		};
980	};
981
982	display-panel {
983		compatible = "auo,b101ew05", "panel-lvds";
984
985		/* AUO B101EW05 using custom timings */
986
987		backlight = <&backlight>;
988		ddc-i2c-bus = <&lvds_ddc>;
989		power-supply = <&vdd_pnl_reg>;
990
991		width-mm = <218>;
992		height-mm = <135>;
993
994		data-mapping = "jeida-18";
995
996		panel-timing {
997			clock-frequency = <71200000>;
998			hactive = <1280>;
999			vactive = <800>;
1000			hfront-porch = <8>;
1001			hback-porch = <18>;
1002			hsync-len = <184>;
1003			vsync-len = <3>;
1004			vfront-porch = <4>;
1005			vback-porch = <8>;
1006		};
1007
1008		port {
1009			panel_input: endpoint {
1010				remote-endpoint = <&lvds_encoder_output>;
1011			};
1012		};
1013	};
1014
1015	gpio-keys {
1016		compatible = "gpio-keys";
1017
1018		key-power {
1019			label = "Power";
1020			gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
1021			linux,code = <KEY_POWER>;
1022			debounce-interval = <10>;
1023			wakeup-event-action = <EV_ACT_ASSERTED>;
1024			wakeup-source;
1025		};
1026
1027		key-volume-down {
1028			label = "Volume Down";
1029			gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
1030			linux,code = <KEY_VOLUMEDOWN>;
1031			debounce-interval = <10>;
1032			wakeup-event-action = <EV_ACT_ASSERTED>;
1033			wakeup-source;
1034		};
1035
1036		key-volume-up {
1037			label = "Volume Up";
1038			gpios = <&gpio TEGRA_GPIO(Q, 5) GPIO_ACTIVE_LOW>;
1039			linux,code = <KEY_VOLUMEUP>;
1040			debounce-interval = <10>;
1041			wakeup-event-action = <EV_ACT_ASSERTED>;
1042			wakeup-source;
1043		};
1044
1045		switch-dock-hall-sensor {
1046			label = "Lid";
1047			gpios = <&gpio TEGRA_GPIO(S, 4) GPIO_ACTIVE_LOW>;
1048			linux,input-type = <EV_SW>;
1049			linux,code = <SW_LID>;
1050			debounce-interval = <500>;
1051			wakeup-event-action = <EV_ACT_ASSERTED>;
1052			wakeup-source;
1053		};
1054	};
1055
1056	i2cmux {
1057		compatible = "i2c-mux-pinctrl";
1058		#address-cells = <1>;
1059		#size-cells = <0>;
1060
1061		i2c-parent = <&i2c2>;
1062
1063		pinctrl-names = "ddc", "pta", "idle";
1064		pinctrl-0 = <&state_i2cmux_ddc>;
1065		pinctrl-1 = <&state_i2cmux_pta>;
1066		pinctrl-2 = <&state_i2cmux_idle>;
1067
1068		hdmi_ddc: i2c@0 {
1069			reg = <0>;
1070			#address-cells = <1>;
1071			#size-cells = <0>;
1072		};
1073
1074		lvds_ddc: i2c@1 {
1075			reg = <1>;
1076			#address-cells = <1>;
1077			#size-cells = <0>;
1078
1079			smart-battery@b {
1080				compatible = "ti,bq20z75", "sbs,sbs-battery";
1081				reg = <0xb>;
1082				sbs,i2c-retry-count = <2>;
1083				sbs,poll-retry-count = <10>;
1084				power-supplies = <&mains>;
1085			};
1086		};
1087	};
1088
1089	lvds-encoder {
1090		compatible = "ti,sn75lvds83", "lvds-encoder";
1091
1092		powerdown-gpios = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_LOW>;
1093		power-supply = <&vdd_3v3_sys>;
1094
1095		ports {
1096			#address-cells = <1>;
1097			#size-cells = <0>;
1098
1099			port@0 {
1100				reg = <0>;
1101
1102				lvds_encoder_input: endpoint {
1103					remote-endpoint = <&lcd_output>;
1104				};
1105			};
1106
1107			port@1 {
1108				reg = <1>;
1109
1110				lvds_encoder_output: endpoint {
1111					remote-endpoint = <&panel_input>;
1112				};
1113			};
1114		};
1115	};
1116
1117	opp-table-emc {
1118		/delete-node/ opp-666000000;
1119		/delete-node/ opp-760000000;
1120	};
1121
1122	vdd_5v0_sys: regulator-5v0 {
1123		compatible = "regulator-fixed";
1124		regulator-name = "vdd_5v0";
1125		regulator-min-microvolt = <5000000>;
1126		regulator-max-microvolt = <5000000>;
1127		regulator-always-on;
1128	};
1129
1130	vdd_3v3_sys: regulator-3v3 {
1131		compatible = "regulator-fixed";
1132		regulator-name = "vdd_3v3_vs";
1133		regulator-min-microvolt = <3300000>;
1134		regulator-max-microvolt = <3300000>;
1135		regulator-always-on;
1136		vin-supply = <&vdd_5v0_sys>;
1137	};
1138
1139	regulator-pcie {
1140		compatible = "regulator-fixed";
1141		regulator-name = "pcie_vdd";
1142		regulator-min-microvolt = <1500000>;
1143		regulator-max-microvolt = <1500000>;
1144		gpio = <&pmic 0 GPIO_ACTIVE_HIGH>;
1145		regulator-always-on;
1146	};
1147
1148	vdd_pnl_reg: regulator-panel {
1149		compatible = "regulator-fixed";
1150		regulator-name = "vdd_pnl";
1151		regulator-min-microvolt = <2800000>;
1152		regulator-max-microvolt = <2800000>;
1153		gpio = <&gpio TEGRA_GPIO(C, 6) GPIO_ACTIVE_HIGH>;
1154		enable-active-high;
1155	};
1156
1157	vdd_1v8_sys: regulator-1v8 {
1158		compatible = "regulator-fixed";
1159		regulator-name = "vdd_1v8_vs";
1160		regulator-min-microvolt = <1800000>;
1161		regulator-max-microvolt = <1800000>;
1162		regulator-always-on;
1163		vin-supply = <&vdd_5v0_sys>;
1164	};
1165
1166	vdd_hdmi_en: regulator-hdmi {
1167		compatible = "regulator-fixed";
1168		regulator-name = "vdd_5v0_hdmi_en";
1169		regulator-min-microvolt = <5000000>;
1170		regulator-max-microvolt = <5000000>;
1171		regulator-always-on;
1172		vin-supply = <&vdd_5v0_sys>;
1173		gpio = <&gpio TEGRA_GPIO(V, 5) GPIO_ACTIVE_HIGH>;
1174		enable-active-high;
1175	};
1176
1177	sound {
1178		compatible = "asus,tegra-audio-wm8903-tf101",
1179			     "nvidia,tegra-audio-wm8903";
1180		nvidia,model = "Asus EeePad Transformer WM8903";
1181
1182		nvidia,audio-routing =
1183			"Headphone Jack", "HPOUTR",
1184			"Headphone Jack", "HPOUTL",
1185			"Int Spk", "ROP",
1186			"Int Spk", "RON",
1187			"Int Spk", "LOP",
1188			"Int Spk", "LON",
1189			"IN2L", "Mic Jack",
1190			"DMICDAT", "Int Mic";
1191
1192		nvidia,i2s-controller = <&tegra_i2s1>;
1193		nvidia,audio-codec = <&wm8903>;
1194
1195		nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
1196		nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2) GPIO_ACTIVE_LOW>;
1197		nvidia,mic-det-gpios = <&gpio TEGRA_GPIO(X, 1) GPIO_ACTIVE_LOW>;
1198		nvidia,coupled-mic-hp-det;
1199
1200		clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
1201			 <&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
1202			 <&tegra_car TEGRA20_CLK_CDEV1>;
1203		clock-names = "pll_a", "pll_a_out0", "mclk";
1204	};
1205
1206	thermal-zones {
1207		/*
1208		 * NCT1008 has two sensors:
1209		 *
1210		 *	0: internal that monitors ambient/skin temperature
1211		 *	1: external that is connected to the CPU's diode
1212		 *
1213		 * Ideally we should use userspace thermal governor,
1214		 * but it's a much more complex solution.  The "skin"
1215		 * zone is a simpler solution which prevents TF101 from
1216		 * getting too hot from a user's tactile perspective.
1217		 * The CPU zone is intended to protect silicon from damage.
1218		 */
1219
1220		skin-thermal {
1221			polling-delay-passive = <1000>; /* milliseconds */
1222			polling-delay = <5000>; /* milliseconds */
1223
1224			thermal-sensors = <&nct1008 0>;
1225
1226			trips {
1227				trip0: skin-alert {
1228					/* start throttling at 60C */
1229					temperature = <60000>;
1230					hysteresis = <200>;
1231					type = "passive";
1232				};
1233
1234				trip1: skin-crit {
1235					/* shut down at 70C */
1236					temperature = <70000>;
1237					hysteresis = <2000>;
1238					type = "critical";
1239				};
1240			};
1241
1242			cooling-maps {
1243				map0 {
1244					trip = <&trip0>;
1245					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1246							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
1247				};
1248			};
1249		};
1250
1251		cpu-thermal {
1252			polling-delay-passive = <1000>; /* milliseconds */
1253			polling-delay = <5000>; /* milliseconds */
1254
1255			thermal-sensors = <&nct1008 1>;
1256
1257			trips {
1258				trip2: cpu-alert {
1259					/* throttle at 85C until temperature drops to 84.8C */
1260					temperature = <85000>;
1261					hysteresis = <200>;
1262					type = "passive";
1263				};
1264
1265				trip3: cpu-crit {
1266					/* shut down at 90C */
1267					temperature = <90000>;
1268					hysteresis = <2000>;
1269					type = "critical";
1270				};
1271			};
1272
1273			cooling-maps {
1274				map1 {
1275					trip = <&trip2>;
1276					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
1277							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
1278				};
1279			};
1280		};
1281	};
1282
1283	brcm_wifi_pwrseq: wifi-pwrseq {
1284		compatible = "mmc-pwrseq-simple";
1285
1286		clocks = <&tegra_pmc TEGRA_PMC_CLK_BLINK>;
1287		clock-names = "ext_clock";
1288
1289		reset-gpios = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_LOW>;
1290		post-power-on-delay-ms = <200>;
1291		power-off-delay-us = <200>;
1292	};
1293};
1294