2 * Device Tree Source for AM33XX SoC
4 * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
11 #include <dt-bindings/bus/ti-sysc.h>
12 #include <dt-bindings/gpio/gpio.h>
13 #include <dt-bindings/pinctrl/am33xx.h>
14 #include <dt-bindings/clock/am3.h>
17 compatible = "ti,am33xx";
18 interrupt-parent = <&intc>;
39 ethernet0 = &cpsw_emac0;
40 ethernet1 = &cpsw_emac1;
49 compatible = "arm,cortex-a8";
50 enable-method = "ti,am3352";
54 operating-points-v2 = <&cpu0_opp_table>;
56 clocks = <&dpll_mpu_ck>;
59 clock-latency = <300000>; /* From omap-cpufreq driver */
60 cpu-idle-states = <&mpu_gate>;
65 compatible = "arm,idle-state";
66 entry-latency-us = <40>;
67 exit-latency-us = <90>;
68 min-residency-us = <300>;
74 cpu0_opp_table: opp-table {
75 compatible = "operating-points-v2-ti-cpu";
79 * The three following nodes are marked with opp-suspend
80 * because the can not be enabled simultaneously on a
84 opp-hz = /bits/ 64 <300000000>;
85 opp-microvolt = <950000 931000 969000>;
86 opp-supported-hw = <0x06 0x0010>;
91 opp-hz = /bits/ 64 <275000000>;
92 opp-microvolt = <1100000 1078000 1122000>;
93 opp-supported-hw = <0x01 0x00FF>;
98 opp-hz = /bits/ 64 <300000000>;
99 opp-microvolt = <1100000 1078000 1122000>;
100 opp-supported-hw = <0x06 0x0020>;
105 opp-hz = /bits/ 64 <500000000>;
106 opp-microvolt = <1100000 1078000 1122000>;
107 opp-supported-hw = <0x01 0xFFFF>;
111 opp-hz = /bits/ 64 <600000000>;
112 opp-microvolt = <1100000 1078000 1122000>;
113 opp-supported-hw = <0x06 0x0040>;
117 opp-hz = /bits/ 64 <600000000>;
118 opp-microvolt = <1200000 1176000 1224000>;
119 opp-supported-hw = <0x01 0xFFFF>;
123 opp-hz = /bits/ 64 <720000000>;
124 opp-microvolt = <1200000 1176000 1224000>;
125 opp-supported-hw = <0x06 0x0080>;
129 opp-hz = /bits/ 64 <720000000>;
130 opp-microvolt = <1260000 1234800 1285200>;
131 opp-supported-hw = <0x01 0xFFFF>;
135 opp-hz = /bits/ 64 <800000000>;
136 opp-microvolt = <1260000 1234800 1285200>;
137 opp-supported-hw = <0x06 0x0100>;
140 oppnitro-1000000000 {
141 opp-hz = /bits/ 64 <1000000000>;
142 opp-microvolt = <1325000 1298500 1351500>;
143 opp-supported-hw = <0x04 0x0200>;
147 target-module@4b000000 {
148 compatible = "ti,sysc-omap4-simple", "ti,sysc";
149 clocks = <&l3_aon_clkctrl AM3_L3_AON_DEBUGSS_CLKCTRL 0>;
151 #address-cells = <1>;
153 ranges = <0x0 0x4b000000 0x1000000>;
156 compatible = "arm,cortex-a8-pmu";
159 ti,hwmods = "debugss";
164 * The soc node represents the soc top level view. It is used for IPs
165 * that are not memory mapped in the MPU view or for the MPU itself.
168 compatible = "ti,omap-infra";
170 compatible = "ti,omap3-mpu";
172 pm-sram = <&pm_sram_code
178 * XXX: Use a flat representation of the AM33XX interconnect.
179 * The real AM33XX interconnect network is quite complex. Since
180 * it will not bring real advantage to represent that in DT
181 * for the moment, just use a fake OCP bus entry to represent
182 * the whole bus hierarchy.
185 compatible = "simple-bus";
186 #address-cells = <1>;
189 ti,hwmods = "l3_main";
191 l4_wkup: interconnect@44c00000 {
193 l4_per: interconnect@48000000 {
195 l4_fw: interconnect@47c00000 {
197 l4_fast: interconnect@4a000000 {
199 l4_mpuss: interconnect@4b140000 {
202 intc: interrupt-controller@48200000 {
203 compatible = "ti,am33xx-intc";
204 interrupt-controller;
205 #interrupt-cells = <1>;
206 reg = <0x48200000 0x1000>;
209 target-module@49000000 {
210 compatible = "ti,sysc-omap4", "ti,sysc";
211 reg = <0x49000000 0x4>;
213 clocks = <&l3_clkctrl AM3_L3_TPCC_CLKCTRL 0>;
215 #address-cells = <1>;
217 ranges = <0x0 0x49000000 0x10000>;
220 compatible = "ti,edma3-tpcc";
222 reg-names = "edma3_cc";
223 interrupts = <12 13 14>;
224 interrupt-names = "edma3_ccint", "edma3_mperr",
229 ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
232 ti,edma-memcpy-channels = <20 21>;
236 target-module@49800000 {
237 compatible = "ti,sysc-omap4", "ti,sysc";
238 reg = <0x49800000 0x4>,
240 reg-names = "rev", "sysc";
241 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
242 ti,sysc-midle = <SYSC_IDLE_FORCE>;
243 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
245 clocks = <&l3_clkctrl AM3_L3_TPTC0_CLKCTRL 0>;
247 #address-cells = <1>;
249 ranges = <0x0 0x49800000 0x100000>;
252 compatible = "ti,edma3-tptc";
255 interrupt-names = "edma3_tcerrint";
259 target-module@49900000 {
260 compatible = "ti,sysc-omap4", "ti,sysc";
261 reg = <0x49900000 0x4>,
263 reg-names = "rev", "sysc";
264 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
265 ti,sysc-midle = <SYSC_IDLE_FORCE>;
266 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
268 clocks = <&l3_clkctrl AM3_L3_TPTC1_CLKCTRL 0>;
270 #address-cells = <1>;
272 ranges = <0x0 0x49900000 0x100000>;
275 compatible = "ti,edma3-tptc";
278 interrupt-names = "edma3_tcerrint";
282 target-module@49a00000 {
283 compatible = "ti,sysc-omap4", "ti,sysc";
284 reg = <0x49a00000 0x4>,
286 reg-names = "rev", "sysc";
287 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
288 ti,sysc-midle = <SYSC_IDLE_FORCE>;
289 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
291 clocks = <&l3_clkctrl AM3_L3_TPTC2_CLKCTRL 0>;
293 #address-cells = <1>;
295 ranges = <0x0 0x49a00000 0x100000>;
298 compatible = "ti,edma3-tptc";
301 interrupt-names = "edma3_tcerrint";
305 target-module@47810000 {
306 compatible = "ti,sysc-omap2", "ti,sysc";
307 reg = <0x478102fc 0x4>,
310 reg-names = "rev", "sysc", "syss";
311 ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
312 SYSC_OMAP2_ENAWAKEUP |
313 SYSC_OMAP2_SOFTRESET |
314 SYSC_OMAP2_AUTOIDLE)>;
315 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
319 clocks = <&l3s_clkctrl AM3_L3S_MMC3_CLKCTRL 0>;
321 #address-cells = <1>;
323 ranges = <0x0 0x47810000 0x1000>;
326 compatible = "ti,am335-sdhci";
327 ti,needs-special-reset;
334 usb: target-module@47400000 {
335 compatible = "ti,sysc-omap4", "ti,sysc";
336 reg = <0x47400000 0x4>,
338 reg-names = "rev", "sysc";
339 ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
340 SYSC_OMAP4_SOFTRESET)>;
341 ti,sysc-midle = <SYSC_IDLE_FORCE>,
344 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
347 <SYSC_IDLE_SMART_WKUP>;
348 clocks = <&l3s_clkctrl AM3_L3S_USB_OTG_HS_CLKCTRL 0>;
350 #address-cells = <1>;
352 ranges = <0x0 0x47400000 0x8000>;
354 usb0_phy: usb-phy@1300 {
355 compatible = "ti,am335x-usb-phy";
356 reg = <0x1300 0x100>;
358 ti,ctrl_mod = <&usb_ctrl_mod>;
363 compatible = "ti,musb-am33xx";
364 reg = <0x1400 0x400>,
366 reg-names = "mc", "control";
369 interrupt-names = "mc";
371 mentor,multipoint = <1>;
372 mentor,num-eps = <16>;
373 mentor,ram-bits = <12>;
374 mentor,power = <500>;
377 dmas = <&cppi41dma 0 0 &cppi41dma 1 0
378 &cppi41dma 2 0 &cppi41dma 3 0
379 &cppi41dma 4 0 &cppi41dma 5 0
380 &cppi41dma 6 0 &cppi41dma 7 0
381 &cppi41dma 8 0 &cppi41dma 9 0
382 &cppi41dma 10 0 &cppi41dma 11 0
383 &cppi41dma 12 0 &cppi41dma 13 0
384 &cppi41dma 14 0 &cppi41dma 0 1
385 &cppi41dma 1 1 &cppi41dma 2 1
386 &cppi41dma 3 1 &cppi41dma 4 1
387 &cppi41dma 5 1 &cppi41dma 6 1
388 &cppi41dma 7 1 &cppi41dma 8 1
389 &cppi41dma 9 1 &cppi41dma 10 1
390 &cppi41dma 11 1 &cppi41dma 12 1
391 &cppi41dma 13 1 &cppi41dma 14 1>;
393 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
394 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
396 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
397 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
401 usb1_phy: usb-phy@1b00 {
402 compatible = "ti,am335x-usb-phy";
403 reg = <0x1b00 0x100>;
405 ti,ctrl_mod = <&usb_ctrl_mod>;
410 compatible = "ti,musb-am33xx";
411 reg = <0x1c00 0x400>,
413 reg-names = "mc", "control";
415 interrupt-names = "mc";
417 mentor,multipoint = <1>;
418 mentor,num-eps = <16>;
419 mentor,ram-bits = <12>;
420 mentor,power = <500>;
423 dmas = <&cppi41dma 15 0 &cppi41dma 16 0
424 &cppi41dma 17 0 &cppi41dma 18 0
425 &cppi41dma 19 0 &cppi41dma 20 0
426 &cppi41dma 21 0 &cppi41dma 22 0
427 &cppi41dma 23 0 &cppi41dma 24 0
428 &cppi41dma 25 0 &cppi41dma 26 0
429 &cppi41dma 27 0 &cppi41dma 28 0
430 &cppi41dma 29 0 &cppi41dma 15 1
431 &cppi41dma 16 1 &cppi41dma 17 1
432 &cppi41dma 18 1 &cppi41dma 19 1
433 &cppi41dma 20 1 &cppi41dma 21 1
434 &cppi41dma 22 1 &cppi41dma 23 1
435 &cppi41dma 24 1 &cppi41dma 25 1
436 &cppi41dma 26 1 &cppi41dma 27 1
437 &cppi41dma 28 1 &cppi41dma 29 1>;
439 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
440 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
442 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
443 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
447 cppi41dma: dma-controller@2000 {
448 compatible = "ti,am3359-cppi41";
449 reg = <0x0000 0x1000>,
453 reg-names = "glue", "controller", "scheduler", "queuemgr";
455 interrupt-names = "glue";
457 #dma-channels = <30>;
458 #dma-requests = <256>;
462 target-module@40300000 {
463 compatible = "ti,sysc-omap4-simple", "ti,sysc";
464 clocks = <&l3_clkctrl AM3_L3_OCMCRAM_CLKCTRL 0>;
467 #address-cells = <1>;
469 ranges = <0 0x40300000 0x10000>;
472 compatible = "mmio-sram";
473 reg = <0 0x10000>; /* 64k */
474 ranges = <0 0 0x10000>;
475 #address-cells = <1>;
478 pm_sram_code: pm-code-sram@0 {
479 compatible = "ti,sram";
484 pm_sram_data: pm-data-sram@1000 {
485 compatible = "ti,sram";
486 reg = <0x1000 0x1000>;
492 target-module@4c000000 {
493 compatible = "ti,sysc-omap4-simple", "ti,sysc";
494 reg = <0x4c000000 0x4>;
496 clocks = <&l3_clkctrl AM3_L3_EMIF_CLKCTRL 0>;
499 #address-cells = <1>;
501 ranges = <0x0 0x4c000000 0x1000000>;
504 compatible = "ti,emif-am3352";
507 sram = <&pm_sram_code
512 target-module@50000000 {
513 compatible = "ti,sysc-omap2", "ti,sysc";
514 reg = <0x50000000 4>,
517 reg-names = "rev", "sysc", "syss";
518 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
522 clocks = <&l3s_clkctrl AM3_L3S_GPMC_CLKCTRL 0>;
524 #address-cells = <1>;
526 ranges = <0x50000000 0x50000000 0x00001000>, /* regs */
527 <0x00000000 0x00000000 0x40000000>; /* data */
529 gpmc: gpmc@50000000 {
530 compatible = "ti,am3352-gpmc";
531 reg = <0x50000000 0x2000>;
536 gpmc,num-waitpins = <2>;
537 #address-cells = <2>;
539 interrupt-controller;
540 #interrupt-cells = <2>;
547 sham_target: target-module@53100000 {
548 compatible = "ti,sysc-omap3-sham", "ti,sysc";
549 reg = <0x53100100 0x4>,
552 reg-names = "rev", "sysc", "syss";
553 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
554 SYSC_OMAP2_AUTOIDLE)>;
555 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
559 /* Domains (P, C): per_pwrdm, l3_clkdm */
560 clocks = <&l3_clkctrl AM3_L3_SHAM_CLKCTRL 0>;
562 #address-cells = <1>;
564 ranges = <0x0 0x53100000 0x1000>;
567 compatible = "ti,omap4-sham";
575 aes_target: target-module@53500000 {
576 compatible = "ti,sysc-omap2", "ti,sysc";
577 reg = <0x53500080 0x4>,
580 reg-names = "rev", "sysc", "syss";
581 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
582 SYSC_OMAP2_AUTOIDLE)>;
583 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
586 <SYSC_IDLE_SMART_WKUP>;
588 /* Domains (P, C): per_pwrdm, l3_clkdm */
589 clocks = <&l3_clkctrl AM3_L3_AES_CLKCTRL 0>;
591 #address-cells = <1>;
593 ranges = <0x0 0x53500000 0x1000>;
596 compatible = "ti,omap4-aes";
601 dma-names = "tx", "rx";
605 target-module@56000000 {
606 compatible = "ti,sysc-omap4", "ti,sysc";
607 reg = <0x5600fe00 0x4>,
609 reg-names = "rev", "sysc";
610 ti,sysc-midle = <SYSC_IDLE_FORCE>,
613 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
616 clocks = <&gfx_l3_clkctrl AM3_GFX_L3_GFX_CLKCTRL 0>;
618 power-domains = <&prm_gfx>;
619 resets = <&prm_gfx 0>;
620 reset-names = "rstctrl";
621 #address-cells = <1>;
623 ranges = <0 0x56000000 0x1000000>;
626 * Closed source PowerVR driver, no child device
627 * binding or driver in mainline
633 #include "am33xx-l4.dtsi"
634 #include "am33xx-clocks.dtsi"
638 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
641 #power-domain-cells = <0>;
645 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
648 #power-domain-cells = <0>;
652 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
654 #power-domain-cells = <0>;
657 prm_device: prm@f00 {
658 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
664 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
665 reg = <0x1000 0x100>;
666 #power-domain-cells = <0>;
670 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
671 reg = <0x1100 0x100>;
672 #power-domain-cells = <0>;
676 prm_cefuse: prm@1200 {
677 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
678 reg = <0x1200 0x100>;
679 #power-domain-cells = <0>;
683 /* Preferred always-on timer for clocksource */
685 clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_TIMER1_CLKCTRL 0>,
686 <&l4_wkup_clkctrl AM3_L4_WKUP_L4_WKUP_CLKCTRL 0>;
687 clock-names = "fck", "ick";
691 assigned-clocks = <&timer1_fck>;
692 assigned-clock-parents = <&sys_clkin_ck>;
696 /* Preferred timer for clockevent */
698 clocks = <&l4ls_clkctrl AM3_L4LS_TIMER2_CLKCTRL 0>,
699 <&l4ls_clkctrl AM3_L4LS_L4_LS_CLKCTRL 0>;
700 clock-names = "fck", "ick";
704 assigned-clocks = <&timer2_fck>;
705 assigned-clock-parents = <&sys_clkin_ck>;