1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
|
/*
* Copyright (c) 2012 The FreeBSD Foundation
* All rights reserved.
*
* This software was developed by Semihalf under sponsorship from
* the FreeBSD Foundation.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* Freescale i.MX515 Device Tree Source.
*
* $FreeBSD$
*/
/ {
#address-cells = <1>;
#size-cells = <1>;
aliases {
soc = &SOC;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "ARM,MCIMX515";
reg = <0x0>;
d-cache-line-size = <32>;
i-cache-line-size = <32>;
d-cache-size = <0x8000>;
i-cache-size = <0x8000>;
/* TODO: describe L2 cache also */
timebase-frequency = <0>;
bus-frequency = <0>;
clock-frequency = <0>;
};
};
localbus@e0000000 {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
/* This reflects CPU decode windows setup. */
ranges;
tzic: tz-interrupt-controller@e0000000 {
compatible = "fsl,imx51-tzic", "fsl,tzic";
interrupt-controller;
#interrupt-cells = <1>;
reg = <0xe0000000 0x00004000>;
};
/*
* 60000000 60000FFF 4K Debug ROM
* 60001000 60001FFF 4K ETB
* 60002000 60002FFF 4K ETM
* 60003000 60003FFF 4K TPIU
* 60004000 60004FFF 4K CTI0
* 60005000 60005FFF 4K CTI1
* 60006000 60006FFF 4K CTI2
* 60007000 60007FFF 4K CTI3
* 60008000 60008FFF 4K Cortex Debug Unit
*
* E0000000 E0003FFF 0x4000 TZIC
*/
};
SOC: soc@70000000 {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
interrupt-parent = <&tzic>;
ranges = <0x70000000 0x70000000 0x14000000>;
aips@70000000 { /* AIPS1 */
compatible = "fsl,aips-bus", "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
interrupt-parent = <&tzic>;
ranges;
/* Required by many devices, so better to stay first */
/* 73FD4000 0x4000 CCM */
clock@73fd4000 {
compatible = "fsl,imx51-ccm";
/* 83F80000 0x4000 DPLLIP1 */
/* 83F84000 0x4000 DPLLIP2 */
/* 83F88000 0x4000 DPLLIP3 */
reg = <0x73fd4000 0x4000
0x83F80000 0x4000
0x83F84000 0x4000
0x83F88000 0x4000>;
interrupt-parent = <&tzic>;
interrupts = <71 72>;
status = "disabled";
};
/*
* GPIO modules moved up - to have it attached for
* drivers which rely on GPIO
*/
/* 73F84000 0x4000 GPIO1 */
gpio1: gpio@73f84000 {
compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
reg = <0x73f84000 0x4000>;
interrupt-parent = <&tzic>;
interrupts = <50 51 42 43 44 45 46 47 48 49>;
/* TODO: use <> also */
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <1>;
};
/* 73F88000 0x4000 GPIO2 */
gpio2: gpio@73f88000 {
compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
reg = <0x73f88000 0x4000>;
interrupt-parent = <&tzic>;
interrupts = <52 53>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <1>;
};
/* 73F8C000 0x4000 GPIO3 */
gpio3: gpio@73f8c000 {
compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
reg = <0x73f8c000 0x4000>;
interrupt-parent = <&tzic>;
interrupts = <54 55>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <1>;
};
/* 73F90000 0x4000 GPIO4 */
gpio4: gpio@73f90000 {
compatible = "fsl,imx51-gpio", "fsl,imx31-gpio";
reg = <0x73f90000 0x4000>;
interrupt-parent = <&tzic>;
interrupts = <56 57>;
gpio-controller;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <1>;
};
spba@70000000 {
compatible = "fsl,spba-bus", "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
interrupt-parent = <&tzic>;
ranges;
/* 70004000 0x4000 ESDHC 1 */
esdhc@70004000 {
compatible = "fsl,imx51-esdhc";
reg = <0x70004000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <1>;
status = "disabled";
};
/* 70008000 0x4000 ESDHC 2 */
esdhc@70008000 {
compatible = "fsl,imx51-esdhc";
reg = <0x70008000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <2>;
status = "disabled";
};
/* 7000C000 0x4000 UART 3 */
uart3: serial@7000c000 {
compatible = "fsl,imx51-uart", "fsl,imx-uart";
reg = <0x7000c000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <33>;
status = "disabled";
};
/* 70010000 0x4000 eCSPI1 */
ecspi@70010000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx51-ecspi";
reg = <0x70010000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <36>;
status = "disabled";
};
/* 70014000 0x4000 SSI2 irq30 */
SSI2: ssi@70014000 {
compatible = "fsl,imx51-ssi";
reg = <0x70014000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <30>;
status = "disabled";
};
/* 70020000 0x4000 ESDHC 3 */
esdhc@70020000 {
compatible = "fsl,imx51-esdhc";
reg = <0x70020000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <3>;
status = "disabled";
};
/* 70024000 0x4000 ESDHC 4 */
esdhc@70024000 {
compatible = "fsl,imx51-esdhc";
reg = <0x70024000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <4>;
status = "disabled";
};
/* 70028000 0x4000 SPDIF */
/* 91 SPDIF */
/* 70030000 0x4000 PATA (PORT UDMA) irq70 */
/* 70034000 0x4000 SLM */
/* 70038000 0x4000 HSI2C */ /* 64 HS-I2C */
/* 7003C000 0x4000 SPBA */
};
usbphy0: usbphy@0 {
compatible = "usb-nop-xceiv";
status = "okay";
};
usbotg: usb@73f80000 {
compatible = "fsl,imx51-usb", "fsl,imx27-usb";
reg = <0x73f80000 0x0200>;
interrupts = <18>;
fsl,usbmisc = <&usbmisc 0>;
fsl,usbphy = <&usbphy0>;
status = "disabled";
};
usbh1: usb@73f80200 {
compatible = "fsl,imx51-usb", "fsl,imx27-usb";
reg = <0x73f80200 0x0200>;
interrupts = <14>;
fsl,usbmisc = <&usbmisc 1>;
status = "disabled";
};
usbh2: usb@73f80400 {
compatible = "fsl,imx51-usb", "fsl,imx27-usb";
reg = <0x73f80400 0x0200>;
interrupts = <16>;
fsl,usbmisc = <&usbmisc 2>;
status = "disabled";
};
usbh3: usb@73f80600 {
compatible = "fsl,imx51-usb", "fsl,imx27-usb";
reg = <0x73f80600 0x0200>;
interrupts = <17>;
fsl,usbmisc = <&usbmisc 3>;
status = "disabled";
};
usbmisc: usbmisc@73f80800 {
#index-cells = <1>;
compatible = "fsl,imx51-usbmisc";
reg = <0x73f80800 0x200>;
};
/* 73F98000 0x4000 WDOG1 */
wdog@73f98000 {
compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
reg = <0x73f98000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <58>;
status = "disabled";
};
/* 73F9C000 0x4000 WDOG2 (TZ) */
wdog@73f9c000 {
compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
reg = <0x73f9c000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <59>;
status = "disabled";
};
/* 73F94000 0x4000 KPP */
keyboard@73f94000 {
compatible = "fsl,imx51-kpp";
reg = <0x73f94000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <60>;
status = "disabled";
};
/* 73FA0000 0x4000 GPT */
timer@73fa0000 {
compatible = "fsl,imx51-gpt";
reg = <0x73fa0000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <39>;
status = "disabled";
};
/* 73FA4000 0x4000 SRTC */
rtc@73fa4000 {
compatible = "fsl,imx51-srtc";
reg = <0x73fa4000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <24 25>;
status = "disabled";
};
/* 73FA8000 0x4000 IOMUXC */
iomux@73fa8000 {
compatible = "fsl,imx51-iomux";
reg = <0x73fa8000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <7>;
};
/* 73FAC000 0x4000 EPIT1 */
epit1: timer@73fac000 {
compatible = "fsl,imx51-epit";
reg = <0x73fac000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <40>;
status = "disabled";
};
/* 73FB0000 0x4000 EPIT2 */
epit2: timer@73fb0000 {
compatible = "fsl,imx51-epit";
reg = <0x73fb0000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <41>;
status = "disabled";
};
/* 73FB4000 0x4000 PWM1 */
pwm@73fb4000 {
compatible = "fsl,imx51-pwm";
reg = <0x73fb4000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <61>;
status = "disabled";
};
/* 73FB8000 0x4000 PWM2 */
pwm@73fb8000 {
compatible = "fsl,imx51-pwm";
reg = <0x73fb8000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <94>;
status = "disabled";
};
/* 73FBC000 0x4000 UART 1 */
uart1: serial@73fbc000 {
compatible = "fsl,imx51-uart", "fsl,imx-uart";
reg = <0x73fbc000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <31>;
status = "disabled";
};
/* 73FC0000 0x4000 UART 2 */
uart2: serial@73fc0000 {
compatible = "fsl,imx51-uart", "fsl,imx-uart";
reg = <0x73fc0000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <32>;
status = "disabled";
};
/* 73FC4000 0x4000 USBOH3 */
/* NOTYET
usb@73fc4000 {
compatible = "fsl,imx51-otg";
reg = <0x73fc4000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <>;
status = "disabled";
};
*/
/* 73FD0000 0x4000 SRC */
reset@73fd0000 {
compatible = "fsl,imx51-src";
reg = <0x73fd0000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <75>;
status = "disabled";
};
/* 73FD8000 0x4000 GPC */
power@73fd8000 {
compatible = "fsl,imx51-gpc";
reg = <0x73fd8000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <73 74>;
status = "disabled";
};
};
aips@80000000 { /* AIPS2 */
compatible = "fsl,aips-bus", "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
interrupt-parent = <&tzic>;
ranges;
/* 83F94000 0x4000 AHBMAX */
/* 83F98000 0x4000 IIM */
/*
* 69 IIM Interrupt request to the processor.
* Indicates to the processor that program or
* explicit.
*/
/* 83F9C000 0x4000 CSU */
/*
* 27 CSU Interrupt Request 1. Indicates to the
* processor that one or more alarm inputs were.
*/
/* 83FA0000 0x4000 TIGERP_PLATFORM_NE_32K_256K */
/* irq76 Neon Monitor Interrupt */
/* irq77 Performance Unit Interrupt */
/* irq78 CTI IRQ */
/* irq79 Debug Interrupt, Cross-Trigger Interface 1 */
/* irq80 Debug Interrupt, Cross-Trigger Interface 1 */
/* irq89 Debug Interrupt, Cross-Trigger Interface 2 */
/* irq98 Debug Interrupt, Cross-Trigger Interface 3 */
/* 83FA4000 0x4000 OWIRE irq88 */
/* 83FA8000 0x4000 FIRI irq93 */
/* 83FAC000 0x4000 eCSPI2 */
ecspi@83fac000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx51-ecspi";
reg = <0x83fac000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <37>;
status = "disabled";
};
/* 83FB0000 0x4000 SDMA */
sdma@83fb0000 {
compatible = "fsl,imx51-sdma", "fsl,imx35-sdma";
reg = <0x83fb0000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <6>;
};
/* 83FB4000 0x4000 SCC */
/* 21 SCC Security Monitor High Priority Interrupt. */
/* 22 SCC Secure (TrustZone) Interrupt. */
/* 23 SCC Regular (Non-Secure) Interrupt. */
/* 83FB8000 0x4000 ROMCP */
/* 83FBC000 0x4000 RTIC */
/*
* 26 RTIC RTIC (Trust Zone) Interrupt Request.
* Indicates that the RTIC has completed hashing the
*/
/* 83FC0000 0x4000 CSPI */
cspi@83fc0000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx51-cspi", "fsl,imx35-cspi";
reg = <0x83fc0000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <38>;
status = "disabled";
};
/* 83FC4000 0x4000 I2C2 */
i2c@83fc4000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx51-i2c", "fsl,imx1-i2c", "fsl,imx-i2c";
reg = <0x83fc4000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <63>;
status = "disabled";
};
/* 83FC8000 0x4000 I2C1 */
i2c@83fc8000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx51-i2c", "fsl,imx1-i2c", "fsl,imx-i2c";
reg = <0x83fc8000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <62>;
status = "disabled";
};
/* 83FCC000 0x4000 SSI1 */
/* 29 SSI1 SSI-1 Interrupt Request */
SSI1: ssi@83fcc000 {
compatible = "fsl,imx51-ssi";
reg = <0x83fcc000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <29>;
status = "disabled";
};
/* 83FD0000 0x4000 AUDMUX */
audmux@83fd4000 {
compatible = "fsl,imx51-audmux";
reg = <0x83fd4000 0x4000>;
status = "disabled";
};
/* 83FD8000 0x4000 EMI1 */
/* 8 EMI (NFC) */
/* 15 EMI */
/* 97 EMI Boot sequence completed interrupt */
/*
* 101 EMI Indicates all pages have been transferred
* to NFC during an auto program operation.
*/
/* 83FE0000 0x4000 PATA (PORT PIO) */
/* 70 PATA Parallel ATA host controller interrupt */
ide@83fe0000 {
compatible = "fsl,imx51-ata";
reg = <0x83fe0000 0x4000>;
interrupt-parent = <&tzic>;
interrupts = <70>;
status = "disabled";
};
/* 83FE4000 0x4000 SIM */
/* 67 SIM intr composed of oef, xte, sdi1, and sdi0 */
/* 68 SIM intr composed of tc, etc, tfe, and rdrf */
/* 83FE8000 0x4000 SSI3 */
/* 96 SSI3 SSI-3 Interrupt Request */
SSI3: ssi@83fe8000 {
compatible = "fsl,imx51-ssi";
reg = <0x83fe8000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <96>;
status = "disabled";
};
/* 83FEC000 0x4000 FEC */
ethernet@83fec000 {
compatible = "fsl,imx51-fec";
reg = <0x83fec000 0x4000>;
interrupt-parent = <&tzic>; interrupts = <87>;
status = "disabled";
};
/* 83FF0000 0x4000 TVE */
/* 92 TVE */
/* 83FF4000 0x4000 VPU */
/* 9 VPU */
/* 100 VPU Idle interrupt from VPU */
/* 83FF8000 0x4000 SAHARA Lite */
/* 19 SAHARA SAHARA host 0 (TrustZone) Intr Lite */
/* 20 SAHARA SAHARA host 1 (non-TrustZone) Intr Lite */
};
};
localbus@5e000000 {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges;
vga: ipu3@5e000000 {
compatible = "fsl,ipu3";
reg = <
0x5e000000 0x08000 /* CM */
0x5e008000 0x08000 /* IDMAC */
0x5e018000 0x08000 /* DP */
0x5e020000 0x08000 /* IC */
0x5e028000 0x08000 /* IRT */
0x5e030000 0x08000 /* CSI0 */
0x5e038000 0x08000 /* CSI1 */
0x5e040000 0x08000 /* DI0 */
0x5e048000 0x08000 /* DI1 */
0x5e050000 0x08000 /* SMFC */
0x5e058000 0x08000 /* DC */
0x5e060000 0x08000 /* DMFC */
0x5e068000 0x08000 /* VDI */
0x5f000000 0x20000 /* CPMEM */
0x5f020000 0x20000 /* LUT */
0x5f040000 0x20000 /* SRM */
0x5f060000 0x20000 /* TPM */
0x5f080000 0x20000 /* DCTMPL */
>;
interrupt-parent = <&tzic>;
interrupts = <
10 /* IPUEX Error */
11 /* IPUEX Sync */
>;
status = "disabled";
};
};
};
/*
TODO: Not mapped interrupts
5 DAP
84 GPU2D (OpenVG) general interrupt
85 GPU2D (OpenVG) busy signal (for S/W power gating feasibility)
12 GPU3D
102 GPU3D Idle interrupt from GPU3D (for S/W power gating)
90 SJC
*/
|