1// SPDX-License-Identifier: GPL-2.0
2#include <dt-bindings/input/input.h>
3#include "tegra30.dtsi"
4
5/**
6 * This file contains common DT entry for all fab version of Cardhu.
7 * There is multiple fab version of Cardhu starting from A01 to A07.
8 * Cardhu fab version A01 and A03 are not supported. Cardhu fab version
9 * A02 will have different sets of GPIOs for fixed regulator compare to
10 * Cardhu fab version A04. The Cardhu fab version A05, A06, A07 are
11 * compatible with fab version A04. Based on Cardhu fab version, the
12 * related dts file need to be chosen like for Cardhu fab version A02,
13 * use tegra30-cardhu-a02.dts, Cardhu fab version A04 and later, use
14 * tegra30-cardhu-a04.dts.
15 * The identification of board is done in two ways, by looking the sticker
16 * on PCB and by reading board id eeprom.
17 * The sticker will have number like 600-81291-1000-002 C.3. In this 4th
18 * number is the fab version like here it is 002 and hence fab version A02.
19 * The (downstream internal) U-Boot of Cardhu display the board-id as
20 * follows:
21 * BoardID: 0C5B, SKU: 0A01, Fab: 02, Rev: 45.00
22 * In this Fab version is 02 i.e. A02.
23 * The BoardID I2C eeprom is interfaced through i2c5 (pwr_i2c address 0x56).
24 * The location 0x8 of this eeprom contains the Fab version. It is 1 byte
25 * wide.
26 */
27
28/ {
29	model = "NVIDIA Tegra30 Cardhu evaluation board";
30	compatible = "nvidia,cardhu", "nvidia,tegra30";
31
32	aliases {
33		rtc0 = "/i2c@7000d000/tps65911@2d";
34		rtc1 = "/rtc@7000e000";
35		serial0 = &uarta;
36		serial1 = &uartc;
37	};
38
39	chosen {
40		stdout-path = "serial0:115200n8";
41	};
42
43	memory@80000000 {
44		reg = <0x80000000 0x40000000>;
45	};
46
47	pcie@3000 {
48		status = "okay";
49
50		/* AVDD_PEXA and VDD_PEXA inputs are grounded on Cardhu. */
51		avdd-pexb-supply = <&ldo1_reg>;
52		vdd-pexb-supply = <&ldo1_reg>;
53		avdd-pex-pll-supply = <&ldo1_reg>;
54		hvdd-pex-supply = <&pex_hvdd_3v3_reg>;
55		vddio-pex-ctl-supply = <&sys_3v3_reg>;
56		avdd-plle-supply = <&ldo2_reg>;
57
58		pci@1,0 {
59			nvidia,num-lanes = <4>;
60		};
61
62		pci@2,0 {
63			nvidia,num-lanes = <1>;
64		};
65
66		pci@3,0 {
67			status = "okay";
68			nvidia,num-lanes = <1>;
69		};
70	};
71
72	host1x@50000000 {
73		dc@54200000 {
74			rgb {
75				status = "okay";
76
77				nvidia,panel = <&panel>;
78			};
79		};
80	};
81
82	pinmux@70000868 {
83		pinctrl-names = "default";
84		pinctrl-0 = <&state_default>;
85
86		state_default: pinmux {
87			sdmmc1_clk_pz0 {
88				nvidia,pins = "sdmmc1_clk_pz0";
89				nvidia,function = "sdmmc1";
90				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
91				nvidia,tristate = <TEGRA_PIN_DISABLE>;
92			};
93			sdmmc1_cmd_pz1 {
94				nvidia,pins =	"sdmmc1_cmd_pz1",
95						"sdmmc1_dat0_py7",
96						"sdmmc1_dat1_py6",
97						"sdmmc1_dat2_py5",
98						"sdmmc1_dat3_py4";
99				nvidia,function = "sdmmc1";
100				nvidia,pull = <TEGRA_PIN_PULL_UP>;
101				nvidia,tristate = <TEGRA_PIN_DISABLE>;
102			};
103			sdmmc3_clk_pa6 {
104				nvidia,pins = "sdmmc3_clk_pa6";
105				nvidia,function = "sdmmc3";
106				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
107				nvidia,tristate = <TEGRA_PIN_DISABLE>;
108			};
109			sdmmc3_cmd_pa7 {
110				nvidia,pins =	"sdmmc3_cmd_pa7",
111						"sdmmc3_dat0_pb7",
112						"sdmmc3_dat1_pb6",
113						"sdmmc3_dat2_pb5",
114						"sdmmc3_dat3_pb4";
115				nvidia,function = "sdmmc3";
116				nvidia,pull = <TEGRA_PIN_PULL_UP>;
117				nvidia,tristate = <TEGRA_PIN_DISABLE>;
118			};
119			sdmmc4_clk_pcc4 {
120				nvidia,pins =	"sdmmc4_clk_pcc4",
121						"sdmmc4_rst_n_pcc3";
122				nvidia,function = "sdmmc4";
123				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
124				nvidia,tristate = <TEGRA_PIN_DISABLE>;
125			};
126			sdmmc4_dat0_paa0 {
127				nvidia,pins =	"sdmmc4_dat0_paa0",
128						"sdmmc4_dat1_paa1",
129						"sdmmc4_dat2_paa2",
130						"sdmmc4_dat3_paa3",
131						"sdmmc4_dat4_paa4",
132						"sdmmc4_dat5_paa5",
133						"sdmmc4_dat6_paa6",
134						"sdmmc4_dat7_paa7";
135				nvidia,function = "sdmmc4";
136				nvidia,pull = <TEGRA_PIN_PULL_UP>;
137				nvidia,tristate = <TEGRA_PIN_DISABLE>;
138			};
139			dap2_fs_pa2 {
140				nvidia,pins =	"dap2_fs_pa2",
141						"dap2_sclk_pa3",
142						"dap2_din_pa4",
143						"dap2_dout_pa5";
144				nvidia,function = "i2s1";
145				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
146				nvidia,tristate = <TEGRA_PIN_DISABLE>;
147			};
148			sdio3 {
149				nvidia,pins = "drive_sdio3";
150				nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
151				nvidia,schmitt = <TEGRA_PIN_DISABLE>;
152				nvidia,pull-down-strength = <46>;
153				nvidia,pull-up-strength = <42>;
154				nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FAST>;
155				nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FAST>;
156			};
157			uart3_txd_pw6 {
158				nvidia,pins =	"uart3_txd_pw6",
159						"uart3_cts_n_pa1",
160						"uart3_rts_n_pc0",
161						"uart3_rxd_pw7";
162				nvidia,function = "uartc";
163				nvidia,pull = <TEGRA_PIN_PULL_NONE>;
164				nvidia,tristate = <TEGRA_PIN_DISABLE>;
165			};
166		};
167	};
168
169	serial@70006000 {
170		status = "okay";
171	};
172
173	serial@70006200 {
174		compatible = "nvidia,tegra30-hsuart";
175		status = "okay";
176	};
177
178	pwm@7000a000 {
179		status = "okay";
180	};
181
182	panelddc: i2c@7000c000 {
183		status = "okay";
184		clock-frequency = <100000>;
185	};
186
187	i2c@7000c400 {
188		status = "okay";
189		clock-frequency = <100000>;
190	};
191
192	i2c@7000c500 {
193		status = "okay";
194		clock-frequency = <100000>;
195
196		/* ALS and Proximity sensor */
197		isl29028@44 {
198			compatible = "isil,isl29028";
199			reg = <0x44>;
200			interrupt-parent = <&gpio>;
201			interrupts = <TEGRA_GPIO(L, 0) IRQ_TYPE_LEVEL_HIGH>;
202		};
203
204		i2cmux@70 {
205			compatible = "nxp,pca9546";
206			#address-cells = <1>;
207			#size-cells = <0>;
208			reg = <0x70>;
209			reset-gpio = <&gpio TEGRA_GPIO(BB, 0) GPIO_ACTIVE_LOW>;
210		};
211	};
212
213	i2c@7000c700 {
214		status = "okay";
215		clock-frequency = <100000>;
216	};
217
218	i2c@7000d000 {
219		status = "okay";
220		clock-frequency = <100000>;
221
222		wm8903: wm8903@1a {
223			compatible = "wlf,wm8903";
224			reg = <0x1a>;
225			interrupt-parent = <&gpio>;
226			interrupts = <TEGRA_GPIO(W, 3) IRQ_TYPE_LEVEL_HIGH>;
227
228			gpio-controller;
229			#gpio-cells = <2>;
230
231			micdet-cfg = <0>;
232			micdet-delay = <100>;
233			gpio-cfg = <0xffffffff 0xffffffff 0 0xffffffff 0xffffffff>;
234		};
235
236		pmic: tps65911@2d {
237			compatible = "ti,tps65911";
238			reg = <0x2d>;
239
240			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
241			#interrupt-cells = <2>;
242			interrupt-controller;
243
244			ti,system-power-controller;
245
246			#gpio-cells = <2>;
247			gpio-controller;
248
249			vcc1-supply = <&vdd_ac_bat_reg>;
250			vcc2-supply = <&vdd_ac_bat_reg>;
251			vcc3-supply = <&vio_reg>;
252			vcc4-supply = <&vdd_5v0_reg>;
253			vcc5-supply = <&vdd_ac_bat_reg>;
254			vcc6-supply = <&vdd2_reg>;
255			vcc7-supply = <&vdd_ac_bat_reg>;
256			vccio-supply = <&vdd_ac_bat_reg>;
257
258			regulators {
259				vdd1_reg: vdd1 {
260					regulator-name = "vddio_ddr_1v2";
261					regulator-min-microvolt = <1200000>;
262					regulator-max-microvolt = <1200000>;
263					regulator-always-on;
264				};
265
266				vdd2_reg: vdd2 {
267					regulator-name = "vdd_1v5_gen";
268					regulator-min-microvolt = <1500000>;
269					regulator-max-microvolt = <1500000>;
270					regulator-always-on;
271				};
272
273				vddctrl_reg: vddctrl {
274					regulator-name = "vdd_cpu,vdd_sys";
275					regulator-min-microvolt = <1000000>;
276					regulator-max-microvolt = <1000000>;
277					regulator-always-on;
278				};
279
280				vio_reg: vio {
281					regulator-name = "vdd_1v8_gen";
282					regulator-min-microvolt = <1800000>;
283					regulator-max-microvolt = <1800000>;
284					regulator-always-on;
285				};
286
287				ldo1_reg: ldo1 {
288					regulator-name = "vdd_pexa,vdd_pexb";
289					regulator-min-microvolt = <1050000>;
290					regulator-max-microvolt = <1050000>;
291				};
292
293				ldo2_reg: ldo2 {
294					regulator-name = "vdd_sata,avdd_plle";
295					regulator-min-microvolt = <1050000>;
296					regulator-max-microvolt = <1050000>;
297				};
298
299				/* LDO3 is not connected to anything */
300
301				ldo4_reg: ldo4 {
302					regulator-name = "vdd_rtc";
303					regulator-min-microvolt = <1200000>;
304					regulator-max-microvolt = <1200000>;
305					regulator-always-on;
306				};
307
308				ldo5_reg: ldo5 {
309					regulator-name = "vddio_sdmmc,avdd_vdac";
310					regulator-min-microvolt = <3300000>;
311					regulator-max-microvolt = <3300000>;
312					regulator-always-on;
313				};
314
315				ldo6_reg: ldo6 {
316					regulator-name = "avdd_dsi_csi,pwrdet_mipi";
317					regulator-min-microvolt = <1200000>;
318					regulator-max-microvolt = <1200000>;
319				};
320
321				ldo7_reg: ldo7 {
322					regulator-name = "vdd_pllm,x,u,a_p_c_s";
323					regulator-min-microvolt = <1200000>;
324					regulator-max-microvolt = <1200000>;
325					regulator-always-on;
326				};
327
328				ldo8_reg: ldo8 {
329					regulator-name = "vdd_ddr_hs";
330					regulator-min-microvolt = <1000000>;
331					regulator-max-microvolt = <1000000>;
332					regulator-always-on;
333				};
334			};
335		};
336
337		temperature-sensor@4c {
338			compatible = "onnn,nct1008";
339			reg = <0x4c>;
340			vcc-supply = <&sys_3v3_reg>;
341			interrupt-parent = <&gpio>;
342			interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_LEVEL_LOW>;
343		};
344
345		tps62361@60 {
346			compatible = "ti,tps62361";
347			reg = <0x60>;
348
349			regulator-name = "tps62361-vout";
350			regulator-min-microvolt = <500000>;
351			regulator-max-microvolt = <1500000>;
352			regulator-boot-on;
353			regulator-always-on;
354			ti,vsel0-state-high;
355			ti,vsel1-state-high;
356		};
357	};
358
359	spi@7000da00 {
360		status = "okay";
361		spi-max-frequency = <25000000>;
362		spi-flash@1 {
363			compatible = "winbond,w25q32";
364			reg = <1>;
365			spi-max-frequency = <20000000>;
366		};
367	};
368
369	pmc@7000e400 {
370		status = "okay";
371		nvidia,invert-interrupt;
372		nvidia,suspend-mode = <1>;
373		nvidia,cpu-pwr-good-time = <2000>;
374		nvidia,cpu-pwr-off-time = <200>;
375		nvidia,core-pwr-good-time = <3845 3845>;
376		nvidia,core-pwr-off-time = <0>;
377		nvidia,core-power-req-active-high;
378		nvidia,sys-clock-req-active-high;
379	};
380
381	ahub@70080000 {
382		i2s@70080400 {
383			status = "okay";
384		};
385	};
386
387	sdhci@78000000 {
388		status = "okay";
389		cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
390		wp-gpios = <&gpio TEGRA_GPIO(T, 3) GPIO_ACTIVE_HIGH>;
391		power-gpios = <&gpio TEGRA_GPIO(D, 7) GPIO_ACTIVE_HIGH>;
392		bus-width = <4>;
393	};
394
395	sdhci@78000600 {
396		status = "okay";
397		bus-width = <8>;
398		non-removable;
399	};
400
401	usb@7d008000 {
402		status = "okay";
403	};
404
405	usb-phy@7d008000 {
406		vbus-supply = <&usb3_vbus_reg>;
407		status = "okay";
408	};
409
410	backlight: backlight {
411		compatible = "pwm-backlight";
412
413		enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
414		power-supply = <&vdd_bl_reg>;
415		pwms = <&pwm 0 5000000>;
416
417		brightness-levels = <0 4 8 16 32 64 128 255>;
418		default-brightness-level = <6>;
419	};
420
421	clocks {
422		compatible = "simple-bus";
423		#address-cells = <1>;
424		#size-cells = <0>;
425
426		clk32k_in: clock@0 {
427			compatible = "fixed-clock";
428			reg = <0>;
429			#clock-cells = <0>;
430			clock-frequency = <32768>;
431		};
432	};
433
434	panel: panel {
435		compatible = "chunghwa,claa101wb01", "simple-panel";
436		ddc-i2c-bus = <&panelddc>;
437
438		power-supply = <&vdd_pnl1_reg>;
439		enable-gpios = <&gpio TEGRA_GPIO(L, 2) GPIO_ACTIVE_HIGH>;
440
441		backlight = <&backlight>;
442	};
443
444	regulators {
445		compatible = "simple-bus";
446		#address-cells = <1>;
447		#size-cells = <0>;
448
449		vdd_ac_bat_reg: regulator@0 {
450			compatible = "regulator-fixed";
451			reg = <0>;
452			regulator-name = "vdd_ac_bat";
453			regulator-min-microvolt = <5000000>;
454			regulator-max-microvolt = <5000000>;
455			regulator-always-on;
456		};
457
458		cam_1v8_reg: regulator@1 {
459			compatible = "regulator-fixed";
460			reg = <1>;
461			regulator-name = "cam_1v8";
462			regulator-min-microvolt = <1800000>;
463			regulator-max-microvolt = <1800000>;
464			enable-active-high;
465			gpio = <&gpio TEGRA_GPIO(BB, 4) GPIO_ACTIVE_HIGH>;
466			vin-supply = <&vio_reg>;
467		};
468
469		cp_5v_reg: regulator@2 {
470			compatible = "regulator-fixed";
471			reg = <2>;
472			regulator-name = "cp_5v";
473			regulator-min-microvolt = <5000000>;
474			regulator-max-microvolt = <5000000>;
475			regulator-boot-on;
476			regulator-always-on;
477			enable-active-high;
478			gpio = <&pmic 0 GPIO_ACTIVE_HIGH>;
479		};
480
481		emmc_3v3_reg: regulator@3 {
482			compatible = "regulator-fixed";
483			reg = <3>;
484			regulator-name = "emmc_3v3";
485			regulator-min-microvolt = <3300000>;
486			regulator-max-microvolt = <3300000>;
487			regulator-always-on;
488			regulator-boot-on;
489			enable-active-high;
490			gpio = <&gpio TEGRA_GPIO(D, 1) GPIO_ACTIVE_HIGH>;
491			vin-supply = <&sys_3v3_reg>;
492		};
493
494		modem_3v3_reg: regulator@4 {
495			compatible = "regulator-fixed";
496			reg = <4>;
497			regulator-name = "modem_3v3";
498			regulator-min-microvolt = <3300000>;
499			regulator-max-microvolt = <3300000>;
500			enable-active-high;
501			gpio = <&gpio TEGRA_GPIO(D, 6) GPIO_ACTIVE_HIGH>;
502		};
503
504		pex_hvdd_3v3_reg: regulator@5 {
505			compatible = "regulator-fixed";
506			reg = <5>;
507			regulator-name = "pex_hvdd_3v3";
508			regulator-min-microvolt = <3300000>;
509			regulator-max-microvolt = <3300000>;
510			enable-active-high;
511			gpio = <&gpio TEGRA_GPIO(L, 7) GPIO_ACTIVE_HIGH>;
512			vin-supply = <&sys_3v3_reg>;
513		};
514
515		vdd_cam1_ldo_reg: regulator@6 {
516			compatible = "regulator-fixed";
517			reg = <6>;
518			regulator-name = "vdd_cam1_ldo";
519			regulator-min-microvolt = <2800000>;
520			regulator-max-microvolt = <2800000>;
521			enable-active-high;
522			gpio = <&gpio TEGRA_GPIO(R, 6) GPIO_ACTIVE_HIGH>;
523			vin-supply = <&sys_3v3_reg>;
524		};
525
526		vdd_cam2_ldo_reg: regulator@7 {
527			compatible = "regulator-fixed";
528			reg = <7>;
529			regulator-name = "vdd_cam2_ldo";
530			regulator-min-microvolt = <2800000>;
531			regulator-max-microvolt = <2800000>;
532			enable-active-high;
533			gpio = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
534			vin-supply = <&sys_3v3_reg>;
535		};
536
537		vdd_cam3_ldo_reg: regulator@8 {
538			compatible = "regulator-fixed";
539			reg = <8>;
540			regulator-name = "vdd_cam3_ldo";
541			regulator-min-microvolt = <3300000>;
542			regulator-max-microvolt = <3300000>;
543			enable-active-high;
544			gpio = <&gpio TEGRA_GPIO(S, 0) GPIO_ACTIVE_HIGH>;
545			vin-supply = <&sys_3v3_reg>;
546		};
547
548		vdd_com_reg: regulator@9 {
549			compatible = "regulator-fixed";
550			reg = <9>;
551			regulator-name = "vdd_com";
552			regulator-min-microvolt = <3300000>;
553			regulator-max-microvolt = <3300000>;
554			regulator-always-on;
555			regulator-boot-on;
556			enable-active-high;
557			gpio = <&gpio TEGRA_GPIO(D, 0) GPIO_ACTIVE_HIGH>;
558			vin-supply = <&sys_3v3_reg>;
559		};
560
561		vdd_fuse_3v3_reg: regulator@10 {
562			compatible = "regulator-fixed";
563			reg = <10>;
564			regulator-name = "vdd_fuse_3v3";
565			regulator-min-microvolt = <3300000>;
566			regulator-max-microvolt = <3300000>;
567			enable-active-high;
568			gpio = <&gpio TEGRA_GPIO(L, 6) GPIO_ACTIVE_HIGH>;
569			vin-supply = <&sys_3v3_reg>;
570		};
571
572		vdd_pnl1_reg: regulator@11 {
573			compatible = "regulator-fixed";
574			reg = <11>;
575			regulator-name = "vdd_pnl1";
576			regulator-min-microvolt = <3300000>;
577			regulator-max-microvolt = <3300000>;
578			regulator-always-on;
579			regulator-boot-on;
580			enable-active-high;
581			gpio = <&gpio TEGRA_GPIO(L, 4) GPIO_ACTIVE_HIGH>;
582			vin-supply = <&sys_3v3_reg>;
583		};
584
585		vdd_vid_reg: regulator@12 {
586			compatible = "regulator-fixed";
587			reg = <12>;
588			regulator-name = "vddio_vid";
589			regulator-min-microvolt = <5000000>;
590			regulator-max-microvolt = <5000000>;
591			enable-active-high;
592			gpio = <&gpio TEGRA_GPIO(T, 0) GPIO_ACTIVE_HIGH>;
593			gpio-open-drain;
594			vin-supply = <&vdd_5v0_reg>;
595		};
596	};
597
598	sound {
599		compatible = "nvidia,tegra-audio-wm8903-cardhu",
600			     "nvidia,tegra-audio-wm8903";
601		nvidia,model = "NVIDIA Tegra Cardhu";
602
603		nvidia,audio-routing =
604			"Headphone Jack", "HPOUTR",
605			"Headphone Jack", "HPOUTL",
606			"Int Spk", "ROP",
607			"Int Spk", "RON",
608			"Int Spk", "LOP",
609			"Int Spk", "LON",
610			"Mic Jack", "MICBIAS",
611			"IN1L", "Mic Jack";
612
613		nvidia,i2s-controller = <&tegra_i2s1>;
614		nvidia,audio-codec = <&wm8903>;
615
616		nvidia,spkr-en-gpios = <&wm8903 2 GPIO_ACTIVE_HIGH>;
617		nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(W, 2)
618			GPIO_ACTIVE_HIGH>;
619
620		clocks = <&tegra_car TEGRA30_CLK_PLL_A>,
621			 <&tegra_car TEGRA30_CLK_PLL_A_OUT0>,
622			 <&tegra_car TEGRA30_CLK_EXTERN1>;
623		clock-names = "pll_a", "pll_a_out0", "mclk";
624	};
625
626	gpio-keys {
627		compatible = "gpio-keys";
628
629		power {
630			label = "Power";
631			interrupt-parent = <&pmic>;
632			interrupts = <2 0>;
633			linux,code = <KEY_POWER>;
634			debounce-interval = <100>;
635			wakeup-source;
636		};
637
638		volume-down {
639			label = "Volume Down";
640			gpios = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_LOW>;
641			linux,code = <KEY_VOLUMEDOWN>;
642			debounce-interval = <10>;
643		};
644
645		volume-up {
646			label = "Volume Up";
647			gpios = <&gpio TEGRA_GPIO(R, 1) GPIO_ACTIVE_LOW>;
648			linux,code = <KEY_VOLUMEUP>;
649			debounce-interval = <10>;
650		};
651	};
652};
653