1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/;
3
4#include <dt-bindings/input/linux-event-codes.h>
5#include <dt-bindings/input/gpio-keys.h>
6#include <dt-bindings/sound/rt5640.h>
7#include "tegra234-p3701-0008.dtsi"
8
9/ {
10	model = "NVIDIA IGX Orin Development Kit";
11	compatible = "nvidia,p3740-0002+p3701-0008", "nvidia,p3701-0008", "nvidia,tegra234";
12
13	aliases {
14		serial0 = &tcu;
15		serial1 = &uarta;
16	};
17
18	chosen {
19		stdout-path = "serial0:115200n8";
20	};
21
22	bus@0 {
23		aconnect@2900000 {
24			ahub@2900800 {
25				i2s@2901300 {
26					ports {
27						port@1 {
28							endpoint {
29								dai-format = "i2s";
30								remote-endpoint = <&rt5640_ep>;
31							};
32						};
33					};
34				};
35
36				i2s@2901500 {
37					ports {
38						port@1 {
39							endpoint {
40								bitclock-master;
41								frame-master;
42							};
43						};
44					};
45				};
46			};
47		};
48
49		serial@3100000 {
50			compatible = "nvidia,tegra194-hsuart";
51			reset-names = "serial";
52			status = "okay";
53		};
54
55		i2c@3160000 {
56			status = "okay";
57		};
58
59		i2c@3180000 {
60			status = "okay";
61		};
62
63		i2c@3190000 {
64			status = "okay";
65		};
66
67		i2c@31b0000 {
68			status = "okay";
69		};
70
71		i2c@31c0000 {
72			status = "okay";
73
74			rt5640: audio-codec@1c {
75				compatible = "realtek,rt5640";
76				reg = <0x1c>;
77				interrupt-parent = <&gpio>;
78				interrupts = <TEGRA234_MAIN_GPIO(F, 3) GPIO_ACTIVE_HIGH>;
79				clocks = <&bpmp TEGRA234_CLK_AUD_MCLK>;
80				clock-names = "mclk";
81
82				realtek,dmic1-data-pin = <RT5640_DMIC1_DATA_PIN_NONE>;
83				realtek,dmic2-data-pin = <RT5640_DMIC2_DATA_PIN_NONE>;
84				realtek,jack-detect-source = <RT5640_JD_SRC_HDA_HEADER>;
85
86				sound-name-prefix = "CVB-RT";
87
88				port {
89					rt5640_ep: endpoint {
90						remote-endpoint = <&i2s4_dap>;
91						mclk-fs = <256>;
92					};
93				};
94			};
95
96			/* carrier board ID EEPROM */
97			eeprom@55 {
98				compatible = "atmel,24c02";
99				reg = <0x55>;
100
101				label = "system";
102				vcc-supply = <&vdd_1v8_ls>;
103				address-width = <8>;
104				pagesize = <8>;
105				size = <256>;
106				read-only;
107			};
108		};
109
110		i2c@31e0000 {
111			status = "okay";
112		};
113
114		spi@3270000 {
115			status = "okay";
116		};
117
118		hda@3510000 {
119			nvidia,model = "NVIDIA IGX Orin HDA";
120			status = "okay";
121		};
122
123		padctl@3520000 {
124			status = "okay";
125
126			pads {
127				usb2 {
128					lanes {
129						usb2-0 {
130							nvidia,function = "xusb";
131							status = "okay";
132						};
133
134						usb2-1 {
135							nvidia,function = "xusb";
136							status = "okay";
137						};
138
139						usb2-2 {
140							nvidia,function = "xusb";
141							status = "okay";
142						};
143
144						usb2-3 {
145							nvidia,function = "xusb";
146							status = "okay";
147						};
148					};
149				};
150
151				usb3 {
152					lanes {
153						usb3-0 {
154							nvidia,function = "xusb";
155							status = "okay";
156						};
157
158						usb3-1 {
159							nvidia,function = "xusb";
160							status = "okay";
161						};
162
163						usb3-2 {
164							nvidia,function = "xusb";
165							status = "okay";
166						};
167					};
168				};
169			};
170
171			ports {
172				usb2-0 {
173					mode = "otg";
174					usb-role-switch;
175					status = "okay";
176				};
177
178				usb2-1 {
179					mode = "host";
180					status = "okay";
181				};
182
183				usb2-2 {
184					mode = "host";
185					status = "okay";
186				};
187
188				usb2-3 {
189					mode = "host";
190					status = "okay";
191				};
192
193				usb3-0 {
194					nvidia,usb2-companion = <2>;
195					status = "okay";
196				};
197
198				usb3-1 {
199					nvidia,usb2-companion = <0>;
200					status = "okay";
201				};
202
203				usb3-2 {
204					nvidia,usb2-companion = <1>;
205					status = "okay";
206				};
207			};
208		};
209
210		usb@3550000 {
211			status = "okay";
212
213			phys = <&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
214				<&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>;
215			phy-names = "usb2-0", "usb3-0";
216		};
217
218		usb@3610000 {
219			status = "okay";
220
221			phys =	<&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-0}>,
222				<&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-1}>,
223				<&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-2}>,
224				<&{/bus@0/padctl@3520000/pads/usb2/lanes/usb2-3}>,
225				<&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-0}>,
226				<&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-1}>,
227				<&{/bus@0/padctl@3520000/pads/usb3/lanes/usb3-2}>;
228			phy-names = "usb2-0", "usb2-1", "usb2-2", "usb2-3",
229				"usb3-0", "usb3-1", "usb3-2";
230		};
231
232		fuse@3810000 {
233			status = "okay";
234		};
235
236		i2c@c240000 {
237			status = "okay";
238		};
239
240		i2c@c250000 {
241			status = "okay";
242
243			power-sensor@41 {
244				compatible = "ti,ina3221";
245				reg = <0x41>;
246				#address-cells = <1>;
247				#size-cells = <0>;
248
249				input@0 {
250					reg = <0x0>;
251					label = "CVB_ATX_12V";
252					shunt-resistor-micro-ohms = <2000>;
253				};
254
255				input@1 {
256					reg = <0x1>;
257					label = "CVB_ATX_3V3";
258					shunt-resistor-micro-ohms = <2000>;
259				};
260
261				input@2 {
262					reg = <0x2>;
263					label = "CVB_ATX_5V";
264					shunt-resistor-micro-ohms = <2000>;
265				};
266			};
267
268			power-sensor@44 {
269				compatible = "ti,ina219";
270				reg = <0x44>;
271				shunt-resistor = <2000>;
272			};
273		};
274
275		host1x@13e00000 {
276			nvdec@15480000 {
277				status = "okay";
278			};
279		};
280
281		pcie@140e0000 {
282			status = "okay";
283			vddio-pex-ctl-supply = <&vdd_1v8_ls>;
284			phys = <&p2u_gbe_4>, <&p2u_gbe_5>;
285			phy-names = "p2u-0", "p2u-1";
286		};
287
288		pcie@14100000 {
289			status = "okay";
290			vddio-pex-ctl-supply = <&vdd_1v8_ao>;
291			vpcie3v3-supply = <&vdd_3v3_wifi>;
292			phys = <&p2u_hsio_3>;
293			phy-names = "p2u-0";
294		};
295
296		pcie@14160000 {
297			status = "okay";
298			vddio-pex-ctl-supply = <&vdd_1v8_ao>;
299			phys = <&p2u_hsio_7>, <&p2u_hsio_6>, <&p2u_hsio_5>,
300			       <&p2u_hsio_4>;
301			phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3";
302		};
303
304		pcie@141a0000 {
305			reg = <0x00 0x141a0000 0x0 0x00020000   /* appl registers (128K)      */
306			       0x00 0x3a000000 0x0 0x00040000   /* configuration space (256K) */
307			       0x00 0x3a040000 0x0 0x00040000   /* iATU_DMA reg space (256K)  */
308			       0x00 0x3a080000 0x0 0x00040000   /* DBI reg space (256K)       */
309			       0x2e 0x20000000 0x0 0x10000000>; /* ECAM (256MB)               */
310
311			ranges = <0x81000000 0x00 0x3a100000 0x00 0x3a100000 0x0 0x00100000      /* downstream I/O (1MB) */
312				  0x82000000 0x00 0x40000000 0x2e 0x30000000 0x0 0x08000000      /* non-prefetchable memory (128MB) */
313				  0xc3000000 0x28 0x00000000 0x28 0x00000000 0x6 0x20000000>;    /* prefetchable memory (25088MB) */
314
315			status = "okay";
316			vddio-pex-ctl-supply = <&vdd_1v8_ls>;
317			phys = <&p2u_nvhs_0>, <&p2u_nvhs_1>, <&p2u_nvhs_2>,
318				<&p2u_nvhs_3>, <&p2u_nvhs_4>, <&p2u_nvhs_5>,
319				<&p2u_nvhs_6>, <&p2u_nvhs_7>;
320			phy-names = "p2u-0", "p2u-1", "p2u-2", "p2u-3", "p2u-4",
321				    "p2u-5", "p2u-6", "p2u-7";
322		};
323
324		pcie@141e0000 {
325			status = "okay";
326			vddio-pex-ctl-supply = <&vdd_1v8_ls>;
327			phys = <&p2u_gbe_0>, <&p2u_gbe_1>;
328			phy-names = "p2u-0", "p2u-1";
329		};
330	};
331
332	gpio-keys {
333		compatible = "gpio-keys";
334		status = "okay";
335
336		key-force-recovery {
337			label = "Force Recovery";
338			gpios = <&gpio TEGRA234_MAIN_GPIO(G, 0) GPIO_ACTIVE_LOW>;
339			linux,input-type = <EV_KEY>;
340			linux,code = <BTN_1>;
341		};
342
343		key-power {
344			label = "Power";
345			gpios = <&gpio_aon TEGRA234_AON_GPIO(EE, 4) GPIO_ACTIVE_LOW>;
346			linux,input-type = <EV_KEY>;
347			linux,code = <KEY_POWER>;
348			wakeup-event-action = <EV_ACT_ASSERTED>;
349			wakeup-source;
350		};
351
352		key-suspend {
353			label = "Suspend";
354			gpios = <&gpio TEGRA234_MAIN_GPIO(G, 2) GPIO_ACTIVE_LOW>;
355			linux,input-type = <EV_KEY>;
356			linux,code = <KEY_SLEEP>;
357		};
358	};
359
360	serial {
361		status = "okay";
362	};
363
364	sound {
365		status = "okay";
366
367		compatible = "nvidia,tegra186-audio-graph-card";
368
369		dais = /* ADMAIF (FE) Ports */
370		       <&admaif0_port>, <&admaif1_port>, <&admaif2_port>, <&admaif3_port>,
371		       <&admaif4_port>, <&admaif5_port>, <&admaif6_port>, <&admaif7_port>,
372		       <&admaif8_port>, <&admaif9_port>, <&admaif10_port>, <&admaif11_port>,
373		       <&admaif12_port>, <&admaif13_port>, <&admaif14_port>, <&admaif15_port>,
374		       <&admaif16_port>, <&admaif17_port>, <&admaif18_port>, <&admaif19_port>,
375		       /* XBAR Ports */
376		       <&xbar_i2s1_port>, <&xbar_i2s2_port>, <&xbar_i2s4_port>,
377		       <&xbar_i2s6_port>, <&xbar_dmic3_port>,
378		       <&xbar_sfc1_in_port>, <&xbar_sfc2_in_port>,
379		       <&xbar_sfc3_in_port>, <&xbar_sfc4_in_port>,
380		       <&xbar_mvc1_in_port>, <&xbar_mvc2_in_port>,
381		       <&xbar_amx1_in1_port>, <&xbar_amx1_in2_port>,
382		       <&xbar_amx1_in3_port>, <&xbar_amx1_in4_port>,
383		       <&xbar_amx2_in1_port>, <&xbar_amx2_in2_port>,
384		       <&xbar_amx2_in3_port>, <&xbar_amx2_in4_port>,
385		       <&xbar_amx3_in1_port>, <&xbar_amx3_in2_port>,
386		       <&xbar_amx3_in3_port>, <&xbar_amx3_in4_port>,
387		       <&xbar_amx4_in1_port>, <&xbar_amx4_in2_port>,
388		       <&xbar_amx4_in3_port>, <&xbar_amx4_in4_port>,
389		       <&xbar_adx1_in_port>, <&xbar_adx2_in_port>,
390		       <&xbar_adx3_in_port>, <&xbar_adx4_in_port>,
391		       <&xbar_mix_in1_port>, <&xbar_mix_in2_port>,
392		       <&xbar_mix_in3_port>, <&xbar_mix_in4_port>,
393		       <&xbar_mix_in5_port>, <&xbar_mix_in6_port>,
394		       <&xbar_mix_in7_port>, <&xbar_mix_in8_port>,
395		       <&xbar_mix_in9_port>, <&xbar_mix_in10_port>,
396		       <&xbar_asrc_in1_port>, <&xbar_asrc_in2_port>,
397		       <&xbar_asrc_in3_port>, <&xbar_asrc_in4_port>,
398		       <&xbar_asrc_in5_port>, <&xbar_asrc_in6_port>,
399		       <&xbar_asrc_in7_port>,
400		       <&xbar_ope1_in_port>,
401		       /* HW accelerators */
402		       <&sfc1_out_port>, <&sfc2_out_port>,
403		       <&sfc3_out_port>, <&sfc4_out_port>,
404		       <&mvc1_out_port>, <&mvc2_out_port>,
405		       <&amx1_out_port>, <&amx2_out_port>,
406		       <&amx3_out_port>, <&amx4_out_port>,
407		       <&adx1_out1_port>, <&adx1_out2_port>,
408		       <&adx1_out3_port>, <&adx1_out4_port>,
409		       <&adx2_out1_port>, <&adx2_out2_port>,
410		       <&adx2_out3_port>, <&adx2_out4_port>,
411		       <&adx3_out1_port>, <&adx3_out2_port>,
412		       <&adx3_out3_port>, <&adx3_out4_port>,
413		       <&adx4_out1_port>, <&adx4_out2_port>,
414		       <&adx4_out3_port>, <&adx4_out4_port>,
415		       <&mix_out1_port>, <&mix_out2_port>, <&mix_out3_port>,
416		       <&mix_out4_port>, <&mix_out5_port>,
417		       <&asrc_out1_port>, <&asrc_out2_port>, <&asrc_out3_port>,
418		       <&asrc_out4_port>, <&asrc_out5_port>, <&asrc_out6_port>,
419		       <&ope1_out_port>,
420		       /* BE I/O Ports */
421		       <&i2s1_port>, <&i2s2_port>, <&i2s4_port>, <&i2s6_port>,
422		       <&dmic3_port>;
423
424		label = "NVIDIA IGX Orin APE";
425
426		widgets = "Microphone",	"CVB-RT MIC Jack",
427			  "Microphone",	"CVB-RT MIC",
428			  "Headphone",	"CVB-RT HP Jack",
429			  "Speaker",	"CVB-RT SPK";
430
431		routing = /* I2S4 <-> RT5640 */
432			  "CVB-RT AIF1 Playback",	"I2S4 DAP-Playback",
433			  "I2S4 DAP-Capture",		"CVB-RT AIF1 Capture",
434			  /* RT5640 codec controls */
435			  "CVB-RT HP Jack",		"CVB-RT HPOL",
436			  "CVB-RT HP Jack",		"CVB-RT HPOR",
437			  "CVB-RT IN1P",		"CVB-RT MIC Jack",
438			  "CVB-RT IN2P",		"CVB-RT MIC Jack",
439			  "CVB-RT IN2N",		"CVB-RT MIC Jack",
440			  "CVB-RT IN3P",		"CVB-RT MIC Jack",
441			  "CVB-RT SPK",			"CVB-RT SPOLP",
442			  "CVB-RT SPK",			"CVB-RT SPORP",
443			  "CVB-RT SPK",			"CVB-RT LOUTL",
444			  "CVB-RT SPK",			"CVB-RT LOUTR",
445			  "CVB-RT DMIC1",		"CVB-RT MIC",
446			  "CVB-RT DMIC2",		"CVB-RT MIC";
447	};
448
449	vdd_3v3_dp: regulator-vdd-3v3-dp {
450		compatible = "regulator-fixed";
451		regulator-name = "VDD_3V3_DP";
452		regulator-min-microvolt = <3300000>;
453		regulator-max-microvolt = <3300000>;
454		vin-supply = <&vdd_3v3_sys>;
455		gpio = <&gpio TEGRA234_MAIN_GPIO(H, 6) 0>;
456		enable-active-high;
457		regulator-always-on;
458	};
459
460	vdd_3v3_sys: regulator-vdd-3v3-sys {
461		compatible = "regulator-fixed";
462		regulator-name = "VDD_3V3_SYS";
463		regulator-min-microvolt = <3300000>;
464		regulator-max-microvolt = <3300000>;
465	};
466
467	vdd_3v3_wifi: regulator-vdd-3v3-wifi {
468		compatible = "regulator-fixed";
469		regulator-name = "VDD_3V3_WIFI";
470		regulator-min-microvolt = <3300000>;
471		regulator-max-microvolt = <3300000>;
472		gpio = <&gpio TEGRA234_MAIN_GPIO(G, 3) GPIO_ACTIVE_HIGH>;
473		regulator-boot-on;
474		enable-active-high;
475	};
476};
477