blob: 65ff4246c01e511618c48ea53afa06178109de44 [file] [log] [blame]
Stephen Warrenc7ba99c2016-05-12 13:32:55 -06001#include "skeleton.dtsi"
Stephen Warren19014202016-07-27 15:24:51 -06002#include <dt-bindings/clock/tegra186-clock.h>
Stephen Warren0388634a2016-07-18 12:15:03 -06003#include <dt-bindings/gpio/tegra186-gpio.h>
Stephen Warrenc7ba99c2016-05-12 13:32:55 -06004#include <dt-bindings/interrupt-controller/arm-gic.h>
Stephen Warren729c2db2016-07-27 15:24:49 -06005#include <dt-bindings/mailbox/tegra186-hsp.h>
Stephen Warren20bbde02016-07-27 15:48:19 -06006#include <dt-bindings/power/tegra186-powergate.h>
Stephen Warren19014202016-07-27 15:24:51 -06007#include <dt-bindings/reset/tegra186-reset.h>
Stephen Warrenc7ba99c2016-05-12 13:32:55 -06008
9/ {
10 compatible = "nvidia,tegra186";
Stephen Warren20bbde02016-07-27 15:48:19 -060011 interrupt-parent = <&gic>;
Stephen Warrenc7ba99c2016-05-12 13:32:55 -060012 #address-cells = <2>;
13 #size-cells = <2>;
14
Stephen Warren19014202016-07-27 15:24:51 -060015 gpio_main: gpio@2200000 {
Stephen Warrenc7ba99c2016-05-12 13:32:55 -060016 compatible = "nvidia,tegra186-gpio";
17 reg-names = "security", "gpio";
18 reg =
19 <0x0 0x2200000 0x0 0x10000>,
20 <0x0 0x2210000 0x0 0x10000>;
21 interrupts =
22 <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
23 <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
24 <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
25 <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
26 <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
27 <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>;
28 gpio-controller;
29 #gpio-cells = <2>;
30 interrupt-controller;
31 #interrupt-cells = <2>;
32 };
33
34 uarta: serial@3100000 {
35 compatible = "nvidia,tegra186-uart", "nvidia,tegra20-uart";
36 reg = <0x0 0x03100000 0x0 0x10000>;
37 reg-shift = <2>;
38 status = "disabled";
39 };
40
Bryan Wu9e613de2016-07-27 15:48:21 -060041 gen1_i2c: i2c@3160000 {
42 compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
43 reg = <0x0 0x3160000 0x0 0x100>;
44 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
45 #address-cells = <1>;
46 #size-cells = <0>;
47 clocks = <&bpmp TEGRA186_CLK_I2C1>;
Stephen Warrenb4ee0812016-08-18 11:08:43 -060048 clock-names = "div-clk";
Bryan Wu9e613de2016-07-27 15:48:21 -060049 resets = <&bpmp TEGRA186_RESET_I2C1>;
50 reset-names = "i2c";
51 status = "disabled";
52 };
53
54 cam_i2c: i2c@3180000 {
55 compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
56 reg = <0x0 0x3180000 0x0 0x100>;
57 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
58 #address-cells = <1>;
59 #size-cells = <0>;
60 clocks = <&bpmp TEGRA186_CLK_I2C3>;
Stephen Warrenb4ee0812016-08-18 11:08:43 -060061 clock-names = "div-clk";
Bryan Wu9e613de2016-07-27 15:48:21 -060062 resets = <&bpmp TEGRA186_RESET_I2C3>;
63 reset-names = "i2c";
64 status = "disabled";
65 };
66
67 dp_aux_ch1_i2c: i2c@3190000 {
68 compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
69 reg = <0x0 0x3190000 0x0 0x100>;
70 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
71 #address-cells = <1>;
72 #size-cells = <0>;
73 clocks = <&bpmp TEGRA186_CLK_I2C4>;
Stephen Warrenb4ee0812016-08-18 11:08:43 -060074 clock-names = "div-clk";
Bryan Wu9e613de2016-07-27 15:48:21 -060075 resets = <&bpmp TEGRA186_RESET_I2C4>;
76 reset-names = "i2c";
77 status = "disabled";
78 };
79
80 dp_aux_ch0_i2c: i2c@31b0000 {
81 compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
82 reg = <0x0 0x31b0000 0x0 0x100>;
83 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
84 #address-cells = <1>;
85 #size-cells = <0>;
86 clocks = <&bpmp TEGRA186_CLK_I2C6>;
Stephen Warrenb4ee0812016-08-18 11:08:43 -060087 clock-names = "div-clk";
Bryan Wu9e613de2016-07-27 15:48:21 -060088 resets = <&bpmp TEGRA186_RESET_I2C6>;
89 reset-names = "i2c";
90 status = "disabled";
91 };
92
93 gen7_i2c: i2c@31c0000 {
94 compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
95 reg = <0x0 0x31c0000 0x0 0x100>;
96 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
97 #address-cells = <1>;
98 #size-cells = <0>;
99 clocks = <&bpmp TEGRA186_CLK_I2C7>;
Stephen Warrenb4ee0812016-08-18 11:08:43 -0600100 clock-names = "div-clk";
Bryan Wu9e613de2016-07-27 15:48:21 -0600101 resets = <&bpmp TEGRA186_RESET_I2C7>;
102 reset-names = "i2c";
103 status = "disabled";
104 };
105
106 gen9_i2c: i2c@31e0000 {
107 compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
108 reg = <0x0 0x31e0000 0x0 0x100>;
109 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
110 #address-cells = <1>;
111 #size-cells = <0>;
112 clocks = <&bpmp TEGRA186_CLK_I2C9>;
Stephen Warrenb4ee0812016-08-18 11:08:43 -0600113 clock-names = "div-clk";
Bryan Wu9e613de2016-07-27 15:48:21 -0600114 resets = <&bpmp TEGRA186_RESET_I2C9>;
115 reset-names = "i2c";
116 status = "disabled";
117 };
118
Stephen Warren19014202016-07-27 15:24:51 -0600119 sdhci@3400000 {
120 compatible = "nvidia,tegra186-sdhci";
121 reg = <0x0 0x03400000 0x0 0x200>;
122 resets = <&bpmp TEGRA186_RESET_SDMMC1>;
Stephen Warreneb3f68a2016-08-18 11:08:44 -0600123 reset-names = "sdhci";
Stephen Warren19014202016-07-27 15:24:51 -0600124 clocks = <&bpmp TEGRA186_CLK_SDMMC1>;
Stephen Warren19014202016-07-27 15:24:51 -0600125 interrupts = <GIC_SPI 62 0x04>;
126 status = "disabled";
127 };
128
Stephen Warrenc7ba99c2016-05-12 13:32:55 -0600129 sdhci@3460000 {
130 compatible = "nvidia,tegra186-sdhci";
131 reg = <0x0 0x03460000 0x0 0x200>;
Stephen Warren19014202016-07-27 15:24:51 -0600132 resets = <&bpmp TEGRA186_RESET_SDMMC4>;
Stephen Warreneb3f68a2016-08-18 11:08:44 -0600133 reset-names = "sdhci";
Stephen Warren19014202016-07-27 15:24:51 -0600134 clocks = <&bpmp TEGRA186_CLK_SDMMC4>;
Stephen Warrenc7ba99c2016-05-12 13:32:55 -0600135 interrupts = <GIC_SPI 31 0x04>;
136 status = "disabled";
137 };
138
Stephen Warren20bbde02016-07-27 15:48:19 -0600139 gic: interrupt-controller@3881000 {
140 compatible = "arm,gic-400";
141 #interrupt-cells = <3>;
142 interrupt-controller;
143 reg = <0x0 0x3881000 0x0 0x1000>,
144 <0x0 0x3882000 0x0 0x2000>,
145 <0x0 0x3884000 0x0 0x2000>,
146 <0x0 0x3886000 0x0 0x2000>;
147 interrupts = <GIC_PPI 9
148 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
149 interrupt-parent = <&gic>;
150 };
151
Stephen Warren0f67e232016-06-17 09:43:57 -0600152 hsp: hsp@3c00000 {
153 compatible = "nvidia,tegra186-hsp";
154 reg = <0x0 0x03c00000 0x0 0xa0000>;
155 interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
Stephen Warren729c2db2016-07-27 15:24:49 -0600156 interrupt-names = "doorbell";
157 #mbox-cells = <2>;
Stephen Warren0f67e232016-06-17 09:43:57 -0600158 };
159
Bryan Wu9e613de2016-07-27 15:48:21 -0600160 gen2_i2c: i2c@c240000 {
161 compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
162 reg = <0x0 0xc240000 0x0 0x100>;
163 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
164 #address-cells = <1>;
165 #size-cells = <0>;
166 clocks = <&bpmp TEGRA186_CLK_I2C2>;
Stephen Warrenb4ee0812016-08-18 11:08:43 -0600167 clock-names = "div-clk";
Bryan Wu9e613de2016-07-27 15:48:21 -0600168 resets = <&bpmp TEGRA186_RESET_I2C2>;
169 reset-names = "i2c";
170 status = "disabled";
171 };
172
173 gen8_i2c: i2c@c250000 {
174 compatible = "nvidia,tegra186-i2c", "nvidia,tegra114-i2c";
175 reg = <0x0 0xc250000 0x0 0x100>;
176 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
177 #address-cells = <1>;
178 #size-cells = <0>;
179 clocks = <&bpmp TEGRA186_CLK_I2C8>;
Stephen Warrenb4ee0812016-08-18 11:08:43 -0600180 clock-names = "div-clk";
Bryan Wu9e613de2016-07-27 15:48:21 -0600181 resets = <&bpmp TEGRA186_RESET_I2C8>;
182 reset-names = "i2c";
183 status = "disabled";
184 };
185
Stephen Warren19014202016-07-27 15:24:51 -0600186 gpio_aon: gpio@c2f0000 {
Stephen Warrenc7ba99c2016-05-12 13:32:55 -0600187 compatible = "nvidia,tegra186-gpio-aon";
188 reg-names = "security", "gpio";
189 reg =
190 <0x0 0xc2f0000 0x0 0x1000>,
191 <0x0 0xc2f1000 0x0 0x1000>;
192 interrupts =
193 <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
194 gpio-controller;
195 #gpio-cells = <2>;
196 interrupt-controller;
197 #interrupt-cells = <2>;
198 };
Stephen Warren19014202016-07-27 15:24:51 -0600199
Stephen Warren20bbde02016-07-27 15:48:19 -0600200 pcie-controller@10003000 {
201 compatible = "nvidia,tegra186-pcie";
202 device_type = "pci";
203 reg = <0x0 0x10003000 0x0 0x00000800 /* PADS registers */
204 0x0 0x10003800 0x0 0x00000800 /* AFI registers */
205 0x0 0x40000000 0x0 0x10000000>; /* configuration space */
206 reg-names = "pads", "afi", "cs";
207 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
208 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>, /* MSI interrupt */
209 <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>; /* Wake interrupt */
210 interrupt-names = "intr", "msi", "wake";
211
212 #interrupt-cells = <1>;
213 interrupt-map-mask = <0 0 0 0>;
214 interrupt-map = <0 0 0 0 &gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
215
216 bus-range = <0x00 0xff>;
217 #address-cells = <3>;
218 #size-cells = <2>;
219
220 ranges = <0x82000000 0 0x10000000 0x0 0x10000000 0 0x00001000 /* port 0 configuration space */
221 0x82000000 0 0x10001000 0x0 0x10001000 0 0x00001000 /* port 1 configuration space */
222 0x82000000 0 0x10004000 0x0 0x10004000 0 0x00001000 /* port 2 configuration space */
223 0x81000000 0 0x0 0x0 0x50000000 0 0x00010000 /* downstream I/O (64 KiB) */
224 0x82000000 0 0x50100000 0x0 0x50100000 0 0x07f00000 /* non-prefetchable memory (127 MiB) */
225 0xc2000000 0 0x58000000 0x0 0x58000000 0 0x28000000>; /* prefetchable memory (640 MiB) */
226
227 clocks = <&bpmp TEGRA186_CLK_PCIE>,
228 <&bpmp TEGRA186_CLK_AFI>;
229 clock-names = "pex", "afi";
230 resets = <&bpmp TEGRA186_RESET_PCIE>,
231 <&bpmp TEGRA186_RESET_AFI>,
232 <&bpmp TEGRA186_RESET_PCIEXCLK>;
233 reset-names = "pex", "afi", "pcie_x";
234 power-domains = <&bpmp TEGRA186_POWER_DOMAIN_PCX>;
235 status = "disabled";
236
237 pci@1,0 {
238 device_type = "pci";
239 assigned-addresses = <0x82000800 0 0x10000000 0 0x1000>;
240 reg = <0x000800 0 0 0 0>;
241 status = "disabled";
242
243 #address-cells = <3>;
244 #size-cells = <2>;
245 ranges;
246
247 nvidia,num-lanes = <2>;
248 };
249
250 pci@2,0 {
251 device_type = "pci";
252 assigned-addresses = <0x82001000 0 0x10001000 0 0x1000>;
253 reg = <0x001000 0 0 0 0>;
254 status = "disabled";
255
256 #address-cells = <3>;
257 #size-cells = <2>;
258 ranges;
259
260 nvidia,num-lanes = <1>;
261 };
262
263 pci@3,0 {
264 device_type = "pci";
265 assigned-addresses = <0x82001800 0 0x10004000 0 0x1000>;
266 reg = <0x001800 0 0 0 0>;
267 status = "disabled";
268
269 #address-cells = <3>;
270 #size-cells = <2>;
271 ranges;
272
273 nvidia,num-lanes = <1>;
274 };
275 };
276
Stephen Warren19014202016-07-27 15:24:51 -0600277 sysram@30000000 {
278 compatible = "nvidia,tegra186-sysram", "mmio-sram";
279 reg = <0x0 0x30000000 0x0 0x50000>;
280 #address-cells = <2>;
281 #size-cells = <2>;
282 ranges = <0 0x0 0x0 0x30000000 0x0 0x50000>;
283
284 sysram_cpu_bpmp_tx: shmem@4e000 {
285 compatible = "nvidia,tegra186-bpmp-shmem";
286 reg = <0x0 0x4e000 0x0 0x1000>;
287 };
288
289 sysram_cpu_bpmp_rx: shmem@4f000 {
290 compatible = "nvidia,tegra186-bpmp-shmem";
291 reg = <0x0 0x4f000 0x0 0x1000>;
292 };
293 };
294
295 bpmp: bpmp {
296 compatible = "nvidia,tegra186-bpmp";
297 mboxes = <&hsp HSP_MBOX_TYPE_DB HSP_DB_MASTER_BPMP>;
298 /*
299 * In theory, these references, and the configuration in the
300 * node these reference point at, are board-specific, since
301 * they depend on the BCT's memory carve-out setup, the
302 * firmware that's actually loaded onto the BPMP, etc. However,
303 * in practice, all boards are likely to use identical values.
304 */
305 shmem = <&sysram_cpu_bpmp_tx &sysram_cpu_bpmp_rx>;
306 #clock-cells = <1>;
307 #power-domain-cells = <1>;
308 #reset-cells = <1>;
Stephen Warren23ab5bd2016-07-29 13:15:04 -0600309
310 bpmp_i2c: i2c {
311 compatible = "nvidia,tegra186-bpmp-i2c";
312 nvidia,bpmp = <&bpmp>;
313 nvidia,bpmp-bus-id = <5>;
314 #address-cells = <1>;
315 #size-cells = <0>;
316 status = "disabled";
317 };
Stephen Warren19014202016-07-27 15:24:51 -0600318 };
Stephen Warrenc7ba99c2016-05-12 13:32:55 -0600319};