1// SPDX-License-Identifier: GPL-2.0
2#include <dt-bindings/clock/tegra30-car.h>
3#include <dt-bindings/gpio/tegra-gpio.h>
4#include <dt-bindings/memory/tegra30-mc.h>
5#include <dt-bindings/pinctrl/pinctrl-tegra.h>
6#include <dt-bindings/interrupt-controller/arm-gic.h>
7
8/ {
9	compatible = "nvidia,tegra30";
10	interrupt-parent = <&lic>;
11	#address-cells = <1>;
12	#size-cells = <1>;
13
14	memory@80000000 {
15		device_type = "memory";
16		reg = <0x80000000 0x0>;
17	};
18
19	pcie@3000 {
20		compatible = "nvidia,tegra30-pcie";
21		device_type = "pci";
22		reg = <0x00003000 0x00000800   /* PADS registers */
23		       0x00003800 0x00000200   /* AFI registers */
24		       0x10000000 0x10000000>; /* configuration space */
25		reg-names = "pads", "afi", "cs";
26		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH   /* controller interrupt */
27			      GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
28		interrupt-names = "intr", "msi";
29
30		#interrupt-cells = <1>;
31		interrupt-map-mask = <0 0 0 0>;
32		interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
33
34		bus-range = <0x00 0xff>;
35		#address-cells = <3>;
36		#size-cells = <2>;
37
38		ranges = <0x82000000 0 0x00000000 0x00000000 0 0x00001000   /* port 0 configuration space */
39			  0x82000000 0 0x00001000 0x00001000 0 0x00001000   /* port 1 configuration space */
40			  0x82000000 0 0x00004000 0x00004000 0 0x00001000   /* port 2 configuration space */
41			  0x81000000 0 0          0x02000000 0 0x00010000   /* downstream I/O */
42			  0x82000000 0 0x20000000 0x20000000 0 0x08000000   /* non-prefetchable memory */
43			  0xc2000000 0 0x28000000 0x28000000 0 0x18000000>; /* prefetchable memory */
44
45		clocks = <&tegra_car TEGRA30_CLK_PCIE>,
46			 <&tegra_car TEGRA30_CLK_AFI>,
47			 <&tegra_car TEGRA30_CLK_PLL_E>,
48			 <&tegra_car TEGRA30_CLK_CML0>;
49		clock-names = "pex", "afi", "pll_e", "cml";
50		resets = <&tegra_car 70>,
51			 <&tegra_car 72>,
52			 <&tegra_car 74>;
53		reset-names = "pex", "afi", "pcie_x";
54		status = "disabled";
55
56		pci@1,0 {
57			device_type = "pci";
58			assigned-addresses = <0x82000800 0 0x00000000 0 0x1000>;
59			reg = <0x000800 0 0 0 0>;
60			bus-range = <0x00 0xff>;
61			status = "disabled";
62
63			#address-cells = <3>;
64			#size-cells = <2>;
65			ranges;
66
67			nvidia,num-lanes = <2>;
68		};
69
70		pci@2,0 {
71			device_type = "pci";
72			assigned-addresses = <0x82001000 0 0x00001000 0 0x1000>;
73			reg = <0x001000 0 0 0 0>;
74			bus-range = <0x00 0xff>;
75			status = "disabled";
76
77			#address-cells = <3>;
78			#size-cells = <2>;
79			ranges;
80
81			nvidia,num-lanes = <2>;
82		};
83
84		pci@3,0 {
85			device_type = "pci";
86			assigned-addresses = <0x82001800 0 0x00004000 0 0x1000>;
87			reg = <0x001800 0 0 0 0>;
88			bus-range = <0x00 0xff>;
89			status = "disabled";
90
91			#address-cells = <3>;
92			#size-cells = <2>;
93			ranges;
94
95			nvidia,num-lanes = <2>;
96		};
97	};
98
99	iram@40000000 {
100		compatible = "mmio-sram";
101		reg = <0x40000000 0x40000>;
102		#address-cells = <1>;
103		#size-cells = <1>;
104		ranges = <0 0x40000000 0x40000>;
105
106		vde_pool: vde@400 {
107			reg = <0x400 0x3fc00>;
108			pool;
109		};
110	};
111
112	host1x@50000000 {
113		compatible = "nvidia,tegra30-host1x", "simple-bus";
114		reg = <0x50000000 0x00024000>;
115		interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, /* syncpt */
116			     <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; /* general */
117		clocks = <&tegra_car TEGRA30_CLK_HOST1X>;
118		resets = <&tegra_car 28>;
119		reset-names = "host1x";
120		iommus = <&mc TEGRA_SWGROUP_HC>;
121
122		#address-cells = <1>;
123		#size-cells = <1>;
124
125		ranges = <0x54000000 0x54000000 0x04000000>;
126
127		mpe@54040000 {
128			compatible = "nvidia,tegra30-mpe";
129			reg = <0x54040000 0x00040000>;
130			interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
131			clocks = <&tegra_car TEGRA30_CLK_MPE>;
132			resets = <&tegra_car 60>;
133			reset-names = "mpe";
134
135			iommus = <&mc TEGRA_SWGROUP_MPE>;
136		};
137
138		vi@54080000 {
139			compatible = "nvidia,tegra30-vi";
140			reg = <0x54080000 0x00040000>;
141			interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
142			clocks = <&tegra_car TEGRA30_CLK_VI>;
143			resets = <&tegra_car 20>;
144			reset-names = "vi";
145
146			iommus = <&mc TEGRA_SWGROUP_VI>;
147		};
148
149		epp@540c0000 {
150			compatible = "nvidia,tegra30-epp";
151			reg = <0x540c0000 0x00040000>;
152			interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
153			clocks = <&tegra_car TEGRA30_CLK_EPP>;
154			resets = <&tegra_car 19>;
155			reset-names = "epp";
156
157			iommus = <&mc TEGRA_SWGROUP_EPP>;
158		};
159
160		isp@54100000 {
161			compatible = "nvidia,tegra30-isp";
162			reg = <0x54100000 0x00040000>;
163			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
164			clocks = <&tegra_car TEGRA30_CLK_ISP>;
165			resets = <&tegra_car 23>;
166			reset-names = "isp";
167
168			iommus = <&mc TEGRA_SWGROUP_ISP>;
169		};
170
171		gr2d@54140000 {
172			compatible = "nvidia,tegra30-gr2d";
173			reg = <0x54140000 0x00040000>;
174			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
175			clocks = <&tegra_car TEGRA30_CLK_GR2D>;
176			resets = <&tegra_car 21>;
177			reset-names = "2d";
178
179			iommus = <&mc TEGRA_SWGROUP_G2>;
180		};
181
182		gr3d@54180000 {
183			compatible = "nvidia,tegra30-gr3d";
184			reg = <0x54180000 0x00040000>;
185			clocks = <&tegra_car TEGRA30_CLK_GR3D
186				  &tegra_car TEGRA30_CLK_GR3D2>;
187			clock-names = "3d", "3d2";
188			resets = <&tegra_car 24>,
189				 <&tegra_car 98>;
190			reset-names = "3d", "3d2";
191
192			iommus = <&mc TEGRA_SWGROUP_NV>,
193				 <&mc TEGRA_SWGROUP_NV2>;
194		};
195
196		dc@54200000 {
197			compatible = "nvidia,tegra30-dc", "nvidia,tegra20-dc";
198			reg = <0x54200000 0x00040000>;
199			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
200			clocks = <&tegra_car TEGRA30_CLK_DISP1>,
201				 <&tegra_car TEGRA30_CLK_PLL_P>;
202			clock-names = "dc", "parent";
203			resets = <&tegra_car 27>;
204			reset-names = "dc";
205
206			iommus = <&mc TEGRA_SWGROUP_DC>;
207
208			nvidia,head = <0>;
209
210			rgb {
211				status = "disabled";
212			};
213		};
214
215		dc@54240000 {
216			compatible = "nvidia,tegra30-dc";
217			reg = <0x54240000 0x00040000>;
218			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
219			clocks = <&tegra_car TEGRA30_CLK_DISP2>,
220				 <&tegra_car TEGRA30_CLK_PLL_P>;
221			clock-names = "dc", "parent";
222			resets = <&tegra_car 26>;
223			reset-names = "dc";
224
225			iommus = <&mc TEGRA_SWGROUP_DCB>;
226
227			nvidia,head = <1>;
228
229			rgb {
230				status = "disabled";
231			};
232		};
233
234		hdmi@54280000 {
235			compatible = "nvidia,tegra30-hdmi";
236			reg = <0x54280000 0x00040000>;
237			interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
238			clocks = <&tegra_car TEGRA30_CLK_HDMI>,
239				 <&tegra_car TEGRA30_CLK_PLL_D2_OUT0>;
240			clock-names = "hdmi", "parent";
241			resets = <&tegra_car 51>;
242			reset-names = "hdmi";
243			status = "disabled";
244		};
245
246		tvo@542c0000 {
247			compatible = "nvidia,tegra30-tvo";
248			reg = <0x542c0000 0x00040000>;
249			interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
250			clocks = <&tegra_car TEGRA30_CLK_TVO>;
251			status = "disabled";
252		};
253
254		dsi@54300000 {
255			compatible = "nvidia,tegra30-dsi";
256			reg = <0x54300000 0x00040000>;
257			clocks = <&tegra_car TEGRA30_CLK_DSIA>;
258			resets = <&tegra_car 48>;
259			reset-names = "dsi";
260			status = "disabled";
261		};
262	};
263
264	timer@50040600 {
265		compatible = "arm,cortex-a9-twd-timer";
266		reg = <0x50040600 0x20>;
267		interrupt-parent = <&intc>;
268		interrupts = <GIC_PPI 13
269			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
270		clocks = <&tegra_car TEGRA30_CLK_TWD>;
271	};
272
273	intc: interrupt-controller@50041000 {
274		compatible = "arm,cortex-a9-gic";
275		reg = <0x50041000 0x1000
276		       0x50040100 0x0100>;
277		interrupt-controller;
278		#interrupt-cells = <3>;
279		interrupt-parent = <&intc>;
280	};
281
282	cache-controller@50043000 {
283		compatible = "arm,pl310-cache";
284		reg = <0x50043000 0x1000>;
285		arm,data-latency = <6 6 2>;
286		arm,tag-latency = <5 5 2>;
287		cache-unified;
288		cache-level = <2>;
289	};
290
291	lic: interrupt-controller@60004000 {
292		compatible = "nvidia,tegra30-ictlr";
293		reg = <0x60004000 0x100>,
294		      <0x60004100 0x50>,
295		      <0x60004200 0x50>,
296		      <0x60004300 0x50>,
297		      <0x60004400 0x50>;
298		interrupt-controller;
299		#interrupt-cells = <3>;
300		interrupt-parent = <&intc>;
301	};
302
303	timer@60005000 {
304		compatible = "nvidia,tegra30-timer", "nvidia,tegra20-timer";
305		reg = <0x60005000 0x400>;
306		interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
307			     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
308			     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
309			     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
310			     <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
311			     <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
312		clocks = <&tegra_car TEGRA30_CLK_TIMER>;
313	};
314
315	tegra_car: clock@60006000 {
316		compatible = "nvidia,tegra30-car";
317		reg = <0x60006000 0x1000>;
318		#clock-cells = <1>;
319		#reset-cells = <1>;
320	};
321
322	flow-controller@60007000 {
323		compatible = "nvidia,tegra30-flowctrl";
324		reg = <0x60007000 0x1000>;
325	};
326
327	apbdma: dma@6000a000 {
328		compatible = "nvidia,tegra30-apbdma", "nvidia,tegra20-apbdma";
329		reg = <0x6000a000 0x1400>;
330		interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
331			     <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
332			     <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
333			     <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
334			     <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
335			     <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
336			     <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
337			     <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
338			     <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
339			     <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
340			     <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
341			     <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
342			     <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
343			     <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
344			     <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
345			     <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
346			     <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
347			     <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
348			     <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
349			     <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
350			     <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
351			     <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
352			     <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
353			     <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
354			     <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
355			     <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
356			     <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
357			     <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>,
358			     <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
359			     <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
360			     <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
361			     <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
362		clocks = <&tegra_car TEGRA30_CLK_APBDMA>;
363		resets = <&tegra_car 34>;
364		reset-names = "dma";
365		#dma-cells = <1>;
366	};
367
368	ahb: ahb@6000c000 {
369		compatible = "nvidia,tegra30-ahb";
370		reg = <0x6000c000 0x150>; /* AHB Arbitration + Gizmo Controller */
371	};
372
373	gpio: gpio@6000d000 {
374		compatible = "nvidia,tegra30-gpio";
375		reg = <0x6000d000 0x1000>;
376		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
377			     <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
378			     <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
379			     <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
380			     <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
381			     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
382			     <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
383			     <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
384		#gpio-cells = <2>;
385		gpio-controller;
386		#interrupt-cells = <2>;
387		interrupt-controller;
388		/*
389		gpio-ranges = <&pinmux 0 0 248>;
390		*/
391	};
392
393	vde@6001a000 {
394		compatible = "nvidia,tegra30-vde", "nvidia,tegra20-vde";
395		reg = <0x6001a000 0x1000   /* Syntax Engine */
396		       0x6001b000 0x1000   /* Video Bitstream Engine */
397		       0x6001c000  0x100   /* Macroblock Engine */
398		       0x6001c200  0x100   /* Post-processing Engine */
399		       0x6001c400  0x100   /* Motion Compensation Engine */
400		       0x6001c600  0x100   /* Transform Engine */
401		       0x6001c800  0x100   /* Pixel prediction block */
402		       0x6001ca00  0x100   /* Video DMA */
403		       0x6001d800  0x400>; /* Video frame controls */
404		reg-names = "sxe", "bsev", "mbe", "ppe", "mce",
405			    "tfe", "ppb", "vdma", "frameid";
406		iram = <&vde_pool>; /* IRAM region */
407		interrupts = <GIC_SPI  9 IRQ_TYPE_LEVEL_HIGH>, /* Sync token interrupt */
408			     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, /* BSE-V interrupt */
409			     <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; /* SXE interrupt */
410		interrupt-names = "sync-token", "bsev", "sxe";
411		clocks = <&tegra_car TEGRA30_CLK_VDE>;
412		reset-names = "vde", "mc";
413		resets = <&tegra_car 61>, <&mc TEGRA30_MC_RESET_VDE>;
414	};
415
416	apbmisc@70000800 {
417		compatible = "nvidia,tegra30-apbmisc", "nvidia,tegra20-apbmisc";
418		reg = <0x70000800 0x64   /* Chip revision */
419		       0x70000008 0x04>; /* Strapping options */
420	};
421
422	pinmux: pinmux@70000868 {
423		compatible = "nvidia,tegra30-pinmux";
424		reg = <0x70000868 0xd4    /* Pad control registers */
425		       0x70003000 0x3e4>; /* Mux registers */
426	};
427
428	/*
429	 * There are two serial driver i.e. 8250 based simple serial
430	 * driver and APB DMA based serial driver for higher baudrate
431	 * and performace. To enable the 8250 based driver, the compatible
432	 * is "nvidia,tegra30-uart", "nvidia,tegra20-uart" and to enable
433	 * the APB DMA based serial driver, the compatible is
434	 * "nvidia,tegra30-hsuart", "nvidia,tegra20-hsuart".
435	 */
436	uarta: serial@70006000 {
437		compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
438		reg = <0x70006000 0x40>;
439		reg-shift = <2>;
440		interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
441		clocks = <&tegra_car TEGRA30_CLK_UARTA>;
442		resets = <&tegra_car 6>;
443		reset-names = "serial";
444		dmas = <&apbdma 8>, <&apbdma 8>;
445		dma-names = "rx", "tx";
446		status = "disabled";
447	};
448
449	uartb: serial@70006040 {
450		compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
451		reg = <0x70006040 0x40>;
452		reg-shift = <2>;
453		interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
454		clocks = <&tegra_car TEGRA30_CLK_UARTB>;
455		resets = <&tegra_car 7>;
456		reset-names = "serial";
457		dmas = <&apbdma 9>, <&apbdma 9>;
458		dma-names = "rx", "tx";
459		status = "disabled";
460	};
461
462	uartc: serial@70006200 {
463		compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
464		reg = <0x70006200 0x100>;
465		reg-shift = <2>;
466		interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
467		clocks = <&tegra_car TEGRA30_CLK_UARTC>;
468		resets = <&tegra_car 55>;
469		reset-names = "serial";
470		dmas = <&apbdma 10>, <&apbdma 10>;
471		dma-names = "rx", "tx";
472		status = "disabled";
473	};
474
475	uartd: serial@70006300 {
476		compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
477		reg = <0x70006300 0x100>;
478		reg-shift = <2>;
479		interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
480		clocks = <&tegra_car TEGRA30_CLK_UARTD>;
481		resets = <&tegra_car 65>;
482		reset-names = "serial";
483		dmas = <&apbdma 19>, <&apbdma 19>;
484		dma-names = "rx", "tx";
485		status = "disabled";
486	};
487
488	uarte: serial@70006400 {
489		compatible = "nvidia,tegra30-uart", "nvidia,tegra20-uart";
490		reg = <0x70006400 0x100>;
491		reg-shift = <2>;
492		interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
493		clocks = <&tegra_car TEGRA30_CLK_UARTE>;
494		resets = <&tegra_car 66>;
495		reset-names = "serial";
496		dmas = <&apbdma 20>, <&apbdma 20>;
497		dma-names = "rx", "tx";
498		status = "disabled";
499	};
500
501	gmi@70009000 {
502		compatible = "nvidia,tegra30-gmi";
503		reg = <0x70009000 0x1000>;
504		#address-cells = <2>;
505		#size-cells = <1>;
506		ranges = <0 0 0x48000000 0x7ffffff>;
507		clocks = <&tegra_car TEGRA30_CLK_NOR>;
508		clock-names = "gmi";
509		resets = <&tegra_car 42>;
510		reset-names = "gmi";
511		status = "disabled";
512	};
513
514	pwm: pwm@7000a000 {
515		compatible = "nvidia,tegra30-pwm", "nvidia,tegra20-pwm";
516		reg = <0x7000a000 0x100>;
517		#pwm-cells = <2>;
518		clocks = <&tegra_car TEGRA30_CLK_PWM>;
519		resets = <&tegra_car 17>;
520		reset-names = "pwm";
521		status = "disabled";
522	};
523
524	rtc@7000e000 {
525		compatible = "nvidia,tegra30-rtc", "nvidia,tegra20-rtc";
526		reg = <0x7000e000 0x100>;
527		interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
528		clocks = <&tegra_car TEGRA30_CLK_RTC>;
529	};
530
531	i2c@7000c000 {
532		compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
533		reg = <0x7000c000 0x100>;
534		interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
535		#address-cells = <1>;
536		#size-cells = <0>;
537		clocks = <&tegra_car TEGRA30_CLK_I2C1>,
538			 <&tegra_car TEGRA30_CLK_PLL_P_OUT3>;
539		clock-names = "div-clk", "fast-clk";
540		resets = <&tegra_car 12>;
541		reset-names = "i2c";
542		dmas = <&apbdma 21>, <&apbdma 21>;
543		dma-names = "rx", "tx";
544		status = "disabled";
545	};
546
547	i2c@7000c400 {
548		compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
549		reg = <0x7000c400 0x100>;
550		interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
551		#address-cells = <1>;
552		#size-cells = <0>;
553		clocks = <&tegra_car TEGRA30_CLK_I2C2>,
554			 <&tegra_car TEGRA30_CLK_PLL_P_OUT3>;
555		clock-names = "div-clk", "fast-clk";
556		resets = <&tegra_car 54>;
557		reset-names = "i2c";
558		dmas = <&apbdma 22>, <&apbdma 22>;
559		dma-names = "rx", "tx";
560		status = "disabled";
561	};
562
563	i2c@7000c500 {
564		compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
565		reg = <0x7000c500 0x100>;
566		interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
567		#address-cells = <1>;
568		#size-cells = <0>;
569		clocks = <&tegra_car TEGRA30_CLK_I2C3>,
570			 <&tegra_car TEGRA30_CLK_PLL_P_OUT3>;
571		clock-names = "div-clk", "fast-clk";
572		resets = <&tegra_car 67>;
573		reset-names = "i2c";
574		dmas = <&apbdma 23>, <&apbdma 23>;
575		dma-names = "rx", "tx";
576		status = "disabled";
577	};
578
579	i2c@7000c700 {
580		compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
581		reg = <0x7000c700 0x100>;
582		interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
583		#address-cells = <1>;
584		#size-cells = <0>;
585		clocks = <&tegra_car TEGRA30_CLK_I2C4>,
586			 <&tegra_car TEGRA30_CLK_PLL_P_OUT3>;
587		resets = <&tegra_car 103>;
588		reset-names = "i2c";
589		clock-names = "div-clk", "fast-clk";
590		dmas = <&apbdma 26>, <&apbdma 26>;
591		dma-names = "rx", "tx";
592		status = "disabled";
593	};
594
595	i2c@7000d000 {
596		compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
597		reg = <0x7000d000 0x100>;
598		interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
599		#address-cells = <1>;
600		#size-cells = <0>;
601		clocks = <&tegra_car TEGRA30_CLK_I2C5>,
602			 <&tegra_car TEGRA30_CLK_PLL_P_OUT3>;
603		clock-names = "div-clk", "fast-clk";
604		resets = <&tegra_car 47>;
605		reset-names = "i2c";
606		dmas = <&apbdma 24>, <&apbdma 24>;
607		dma-names = "rx", "tx";
608		status = "disabled";
609	};
610
611	spi@7000d400 {
612		compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink";
613		reg = <0x7000d400 0x200>;
614		interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
615		#address-cells = <1>;
616		#size-cells = <0>;
617		clocks = <&tegra_car TEGRA30_CLK_SBC1>;
618		resets = <&tegra_car 41>;
619		reset-names = "spi";
620		dmas = <&apbdma 15>, <&apbdma 15>;
621		dma-names = "rx", "tx";
622		status = "disabled";
623	};
624
625	spi@7000d600 {
626		compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink";
627		reg = <0x7000d600 0x200>;
628		interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
629		#address-cells = <1>;
630		#size-cells = <0>;
631		clocks = <&tegra_car TEGRA30_CLK_SBC2>;
632		resets = <&tegra_car 44>;
633		reset-names = "spi";
634		dmas = <&apbdma 16>, <&apbdma 16>;
635		dma-names = "rx", "tx";
636		status = "disabled";
637	};
638
639	spi@7000d800 {
640		compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink";
641		reg = <0x7000d800 0x200>;
642		interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
643		#address-cells = <1>;
644		#size-cells = <0>;
645		clocks = <&tegra_car TEGRA30_CLK_SBC3>;
646		resets = <&tegra_car 46>;
647		reset-names = "spi";
648		dmas = <&apbdma 17>, <&apbdma 17>;
649		dma-names = "rx", "tx";
650		status = "disabled";
651	};
652
653	spi@7000da00 {
654		compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink";
655		reg = <0x7000da00 0x200>;
656		interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
657		#address-cells = <1>;
658		#size-cells = <0>;
659		clocks = <&tegra_car TEGRA30_CLK_SBC4>;
660		resets = <&tegra_car 68>;
661		reset-names = "spi";
662		dmas = <&apbdma 18>, <&apbdma 18>;
663		dma-names = "rx", "tx";
664		status = "disabled";
665	};
666
667	spi@7000dc00 {
668		compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink";
669		reg = <0x7000dc00 0x200>;
670		interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
671		#address-cells = <1>;
672		#size-cells = <0>;
673		clocks = <&tegra_car TEGRA30_CLK_SBC5>;
674		resets = <&tegra_car 104>;
675		reset-names = "spi";
676		dmas = <&apbdma 27>, <&apbdma 27>;
677		dma-names = "rx", "tx";
678		status = "disabled";
679	};
680
681	spi@7000de00 {
682		compatible = "nvidia,tegra30-slink", "nvidia,tegra20-slink";
683		reg = <0x7000de00 0x200>;
684		interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
685		#address-cells = <1>;
686		#size-cells = <0>;
687		clocks = <&tegra_car TEGRA30_CLK_SBC6>;
688		resets = <&tegra_car 106>;
689		reset-names = "spi";
690		dmas = <&apbdma 28>, <&apbdma 28>;
691		dma-names = "rx", "tx";
692		status = "disabled";
693	};
694
695	kbc@7000e200 {
696		compatible = "nvidia,tegra30-kbc", "nvidia,tegra20-kbc";
697		reg = <0x7000e200 0x100>;
698		interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
699		clocks = <&tegra_car TEGRA30_CLK_KBC>;
700		resets = <&tegra_car 36>;
701		reset-names = "kbc";
702		status = "disabled";
703	};
704
705	pmc@7000e400 {
706		compatible = "nvidia,tegra30-pmc";
707		reg = <0x7000e400 0x400>;
708		clocks = <&tegra_car TEGRA30_CLK_PCLK>, <&clk32k_in>;
709		clock-names = "pclk", "clk32k_in";
710	};
711
712	mc: memory-controller@7000f000 {
713		compatible = "nvidia,tegra30-mc";
714		reg = <0x7000f000 0x400>;
715		clocks = <&tegra_car TEGRA30_CLK_MC>;
716		clock-names = "mc";
717
718		interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
719
720		#iommu-cells = <1>;
721		#reset-cells = <1>;
722	};
723
724	fuse@7000f800 {
725		compatible = "nvidia,tegra30-efuse";
726		reg = <0x7000f800 0x400>;
727		clocks = <&tegra_car TEGRA30_CLK_FUSE>;
728		clock-names = "fuse";
729		resets = <&tegra_car 39>;
730		reset-names = "fuse";
731	};
732
733	hda@70030000 {
734		compatible = "nvidia,tegra30-hda";
735		reg = <0x70030000 0x10000>;
736		interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
737		clocks = <&tegra_car TEGRA30_CLK_HDA>,
738			 <&tegra_car TEGRA30_CLK_HDA2HDMI>,
739			 <&tegra_car TEGRA30_CLK_HDA2CODEC_2X>;
740		clock-names = "hda", "hda2hdmi", "hda2codec_2x";
741		resets = <&tegra_car 125>, /* hda */
742			 <&tegra_car 128>, /* hda2hdmi */
743			 <&tegra_car 111>; /* hda2codec_2x */
744		reset-names = "hda", "hda2hdmi", "hda2codec_2x";
745		status = "disabled";
746	};
747
748	ahub@70080000 {
749		compatible = "nvidia,tegra30-ahub";
750		reg = <0x70080000 0x200
751		       0x70080200 0x100>;
752		interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
753		clocks = <&tegra_car TEGRA30_CLK_D_AUDIO>,
754			 <&tegra_car TEGRA30_CLK_APBIF>;
755		clock-names = "d_audio", "apbif";
756		resets = <&tegra_car 106>, /* d_audio */
757			 <&tegra_car 107>, /* apbif */
758			 <&tegra_car 30>,  /* i2s0 */
759			 <&tegra_car 11>,  /* i2s1 */
760			 <&tegra_car 18>,  /* i2s2 */
761			 <&tegra_car 101>, /* i2s3 */
762			 <&tegra_car 102>, /* i2s4 */
763			 <&tegra_car 108>, /* dam0 */
764			 <&tegra_car 109>, /* dam1 */
765			 <&tegra_car 110>, /* dam2 */
766			 <&tegra_car 10>;  /* spdif */
767		reset-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2",
768			      "i2s3", "i2s4", "dam0", "dam1", "dam2",
769			      "spdif";
770		dmas = <&apbdma 1>, <&apbdma 1>,
771		       <&apbdma 2>, <&apbdma 2>,
772		       <&apbdma 3>, <&apbdma 3>,
773		       <&apbdma 4>, <&apbdma 4>;
774		dma-names = "rx0", "tx0", "rx1", "tx1", "rx2", "tx2",
775			    "rx3", "tx3";
776		ranges;
777		#address-cells = <1>;
778		#size-cells = <1>;
779
780		tegra_i2s0: i2s@70080300 {
781			compatible = "nvidia,tegra30-i2s";
782			reg = <0x70080300 0x100>;
783			nvidia,ahub-cif-ids = <4 4>;
784			clocks = <&tegra_car TEGRA30_CLK_I2S0>;
785			resets = <&tegra_car 30>;
786			reset-names = "i2s";
787			status = "disabled";
788		};
789
790		tegra_i2s1: i2s@70080400 {
791			compatible = "nvidia,tegra30-i2s";
792			reg = <0x70080400 0x100>;
793			nvidia,ahub-cif-ids = <5 5>;
794			clocks = <&tegra_car TEGRA30_CLK_I2S1>;
795			resets = <&tegra_car 11>;
796			reset-names = "i2s";
797			status = "disabled";
798		};
799
800		tegra_i2s2: i2s@70080500 {
801			compatible = "nvidia,tegra30-i2s";
802			reg = <0x70080500 0x100>;
803			nvidia,ahub-cif-ids = <6 6>;
804			clocks = <&tegra_car TEGRA30_CLK_I2S2>;
805			resets = <&tegra_car 18>;
806			reset-names = "i2s";
807			status = "disabled";
808		};
809
810		tegra_i2s3: i2s@70080600 {
811			compatible = "nvidia,tegra30-i2s";
812			reg = <0x70080600 0x100>;
813			nvidia,ahub-cif-ids = <7 7>;
814			clocks = <&tegra_car TEGRA30_CLK_I2S3>;
815			resets = <&tegra_car 101>;
816			reset-names = "i2s";
817			status = "disabled";
818		};
819
820		tegra_i2s4: i2s@70080700 {
821			compatible = "nvidia,tegra30-i2s";
822			reg = <0x70080700 0x100>;
823			nvidia,ahub-cif-ids = <8 8>;
824			clocks = <&tegra_car TEGRA30_CLK_I2S4>;
825			resets = <&tegra_car 102>;
826			reset-names = "i2s";
827			status = "disabled";
828		};
829	};
830
831	sdhci@78000000 {
832		compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci";
833		reg = <0x78000000 0x200>;
834		interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
835		clocks = <&tegra_car TEGRA30_CLK_SDMMC1>;
836		resets = <&tegra_car 14>;
837		reset-names = "sdhci";
838		status = "disabled";
839	};
840
841	sdhci@78000200 {
842		compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci";
843		reg = <0x78000200 0x200>;
844		interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
845		clocks = <&tegra_car TEGRA30_CLK_SDMMC2>;
846		resets = <&tegra_car 9>;
847		reset-names = "sdhci";
848		status = "disabled";
849	};
850
851	sdhci@78000400 {
852		compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci";
853		reg = <0x78000400 0x200>;
854		interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
855		clocks = <&tegra_car TEGRA30_CLK_SDMMC3>;
856		resets = <&tegra_car 69>;
857		reset-names = "sdhci";
858		status = "disabled";
859	};
860
861	sdhci@78000600 {
862		compatible = "nvidia,tegra30-sdhci", "nvidia,tegra20-sdhci";
863		reg = <0x78000600 0x200>;
864		interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
865		clocks = <&tegra_car TEGRA30_CLK_SDMMC4>;
866		resets = <&tegra_car 15>;
867		reset-names = "sdhci";
868		status = "disabled";
869	};
870
871	usb@7d000000 {
872		compatible = "nvidia,tegra30-ehci", "usb-ehci";
873		reg = <0x7d000000 0x4000>;
874		interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
875		phy_type = "utmi";
876		clocks = <&tegra_car TEGRA30_CLK_USBD>;
877		resets = <&tegra_car 22>;
878		reset-names = "usb";
879		nvidia,needs-double-reset;
880		nvidia,phy = <&phy1>;
881		status = "disabled";
882	};
883
884	phy1: usb-phy@7d000000 {
885		compatible = "nvidia,tegra30-usb-phy";
886		reg = <0x7d000000 0x4000 0x7d000000 0x4000>;
887		phy_type = "utmi";
888		clocks = <&tegra_car TEGRA30_CLK_USBD>,
889			 <&tegra_car TEGRA30_CLK_PLL_U>,
890			 <&tegra_car TEGRA30_CLK_USBD>;
891		clock-names = "reg", "pll_u", "utmi-pads";
892		resets = <&tegra_car 22>, <&tegra_car 22>;
893		reset-names = "usb", "utmi-pads";
894		nvidia,hssync-start-delay = <9>;
895		nvidia,idle-wait-delay = <17>;
896		nvidia,elastic-limit = <16>;
897		nvidia,term-range-adj = <6>;
898		nvidia,xcvr-setup = <51>;
899		nvidia.xcvr-setup-use-fuses;
900		nvidia,xcvr-lsfslew = <1>;
901		nvidia,xcvr-lsrslew = <1>;
902		nvidia,xcvr-hsslew = <32>;
903		nvidia,hssquelch-level = <2>;
904		nvidia,hsdiscon-level = <5>;
905		nvidia,has-utmi-pad-registers;
906		status = "disabled";
907	};
908
909	usb@7d004000 {
910		compatible = "nvidia,tegra30-ehci", "usb-ehci";
911		reg = <0x7d004000 0x4000>;
912		interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
913		phy_type = "utmi";
914		clocks = <&tegra_car TEGRA30_CLK_USB2>;
915		resets = <&tegra_car 58>;
916		reset-names = "usb";
917		nvidia,phy = <&phy2>;
918		status = "disabled";
919	};
920
921	phy2: usb-phy@7d004000 {
922		compatible = "nvidia,tegra30-usb-phy";
923		reg = <0x7d004000 0x4000 0x7d000000 0x4000>;
924		phy_type = "utmi";
925		clocks = <&tegra_car TEGRA30_CLK_USB2>,
926			 <&tegra_car TEGRA30_CLK_PLL_U>,
927			 <&tegra_car TEGRA30_CLK_USBD>;
928		clock-names = "reg", "pll_u", "utmi-pads";
929		resets = <&tegra_car 58>, <&tegra_car 22>;
930		reset-names = "usb", "utmi-pads";
931		nvidia,hssync-start-delay = <9>;
932		nvidia,idle-wait-delay = <17>;
933		nvidia,elastic-limit = <16>;
934		nvidia,term-range-adj = <6>;
935		nvidia,xcvr-setup = <51>;
936		nvidia.xcvr-setup-use-fuses;
937		nvidia,xcvr-lsfslew = <2>;
938		nvidia,xcvr-lsrslew = <2>;
939		nvidia,xcvr-hsslew = <32>;
940		nvidia,hssquelch-level = <2>;
941		nvidia,hsdiscon-level = <5>;
942		status = "disabled";
943	};
944
945	usb@7d008000 {
946		compatible = "nvidia,tegra30-ehci", "usb-ehci";
947		reg = <0x7d008000 0x4000>;
948		interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
949		phy_type = "utmi";
950		clocks = <&tegra_car TEGRA30_CLK_USB3>;
951		resets = <&tegra_car 59>;
952		reset-names = "usb";
953		nvidia,phy = <&phy3>;
954		status = "disabled";
955	};
956
957	phy3: usb-phy@7d008000 {
958		compatible = "nvidia,tegra30-usb-phy";
959		reg = <0x7d008000 0x4000 0x7d000000 0x4000>;
960		phy_type = "utmi";
961		clocks = <&tegra_car TEGRA30_CLK_USB3>,
962			 <&tegra_car TEGRA30_CLK_PLL_U>,
963			 <&tegra_car TEGRA30_CLK_USBD>;
964		clock-names = "reg", "pll_u", "utmi-pads";
965		resets = <&tegra_car 59>, <&tegra_car 22>;
966		reset-names = "usb", "utmi-pads";
967		nvidia,hssync-start-delay = <0>;
968		nvidia,idle-wait-delay = <17>;
969		nvidia,elastic-limit = <16>;
970		nvidia,term-range-adj = <6>;
971		nvidia,xcvr-setup = <51>;
972		nvidia.xcvr-setup-use-fuses;
973		nvidia,xcvr-lsfslew = <2>;
974		nvidia,xcvr-lsrslew = <2>;
975		nvidia,xcvr-hsslew = <32>;
976		nvidia,hssquelch-level = <2>;
977		nvidia,hsdiscon-level = <5>;
978		status = "disabled";
979	};
980
981	cpus {
982		#address-cells = <1>;
983		#size-cells = <0>;
984
985		cpu@0 {
986			device_type = "cpu";
987			compatible = "arm,cortex-a9";
988			reg = <0>;
989		};
990
991		cpu@1 {
992			device_type = "cpu";
993			compatible = "arm,cortex-a9";
994			reg = <1>;
995		};
996
997		cpu@2 {
998			device_type = "cpu";
999			compatible = "arm,cortex-a9";
1000			reg = <2>;
1001		};
1002
1003		cpu@3 {
1004			device_type = "cpu";
1005			compatible = "arm,cortex-a9";
1006			reg = <3>;
1007		};
1008	};
1009
1010	pmu {
1011		compatible = "arm,cortex-a9-pmu";
1012		interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
1013			     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
1014			     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
1015			     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
1016	};
1017};
1018