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_port1;
40 ethernet1 = &cpsw_port2;
52 compatible = "arm,cortex-a8";
53 enable-method = "ti,am3352";
57 operating-points-v2 = <&cpu0_opp_table>;
59 clocks = <&dpll_mpu_ck>;
62 clock-latency = <300000>; /* From omap-cpufreq driver */
63 cpu-idle-states = <&mpu_gate>;
68 compatible = "arm,idle-state";
69 entry-latency-us = <40>;
70 exit-latency-us = <90>;
71 min-residency-us = <300>;
77 cpu0_opp_table: opp-table {
78 compatible = "operating-points-v2-ti-cpu";
82 * The three following nodes are marked with opp-suspend
83 * because the can not be enabled simultaneously on a
87 opp-hz = /bits/ 64 <300000000>;
88 opp-microvolt = <950000 931000 969000>;
89 opp-supported-hw = <0x06 0x0010>;
94 opp-hz = /bits/ 64 <275000000>;
95 opp-microvolt = <1100000 1078000 1122000>;
96 opp-supported-hw = <0x01 0x00FF>;
101 opp-hz = /bits/ 64 <300000000>;
102 opp-microvolt = <1100000 1078000 1122000>;
103 opp-supported-hw = <0x06 0x0020>;
108 opp-hz = /bits/ 64 <500000000>;
109 opp-microvolt = <1100000 1078000 1122000>;
110 opp-supported-hw = <0x01 0xFFFF>;
114 opp-hz = /bits/ 64 <600000000>;
115 opp-microvolt = <1100000 1078000 1122000>;
116 opp-supported-hw = <0x06 0x0040>;
120 opp-hz = /bits/ 64 <600000000>;
121 opp-microvolt = <1200000 1176000 1224000>;
122 opp-supported-hw = <0x01 0xFFFF>;
126 opp-hz = /bits/ 64 <720000000>;
127 opp-microvolt = <1200000 1176000 1224000>;
128 opp-supported-hw = <0x06 0x0080>;
132 opp-hz = /bits/ 64 <720000000>;
133 opp-microvolt = <1260000 1234800 1285200>;
134 opp-supported-hw = <0x01 0xFFFF>;
138 opp-hz = /bits/ 64 <800000000>;
139 opp-microvolt = <1260000 1234800 1285200>;
140 opp-supported-hw = <0x06 0x0100>;
143 oppnitro-1000000000 {
144 opp-hz = /bits/ 64 <1000000000>;
145 opp-microvolt = <1325000 1298500 1351500>;
146 opp-supported-hw = <0x04 0x0200>;
150 target-module@4b000000 {
151 compatible = "ti,sysc-omap4-simple", "ti,sysc";
152 clocks = <&l3_clkctrl AM3_L3_L3_INSTR_CLKCTRL 0>;
155 #address-cells = <1>;
157 ranges = <0x0 0x4b000000 0x1000000>;
159 target-module@140000 {
160 compatible = "ti,sysc-omap4-simple", "ti,sysc";
161 clocks = <&l3_aon_clkctrl AM3_L3_AON_DEBUGSS_CLKCTRL 0>;
163 #address-cells = <1>;
165 ranges = <0x0 0x140000 0xec0000>;
168 compatible = "arm,cortex-a8-pmu";
175 * The soc node represents the soc top level view. It is used for IPs
176 * that are not memory mapped in the MPU view or for the MPU itself.
179 compatible = "ti,omap-infra";
183 * XXX: Use a flat representation of the AM33XX interconnect.
184 * The real AM33XX interconnect network is quite complex. Since
185 * it will not bring real advantage to represent that in DT
186 * for the moment, just use a fake OCP bus entry to represent
187 * the whole bus hierarchy.
190 compatible = "simple-pm-bus";
191 power-domains = <&prm_per>;
192 clocks = <&l3_clkctrl AM3_L3_L3_MAIN_CLKCTRL 0>;
194 #address-cells = <1>;
198 l4_wkup: interconnect@44c00000 {
200 l4_per: interconnect@48000000 {
202 l4_fw: interconnect@47c00000 {
204 l4_fast: interconnect@4a000000 {
206 l4_mpuss: interconnect@4b140000 {
209 intc: interrupt-controller@48200000 {
210 compatible = "ti,am33xx-intc";
211 interrupt-controller;
212 #interrupt-cells = <1>;
213 reg = <0x48200000 0x1000>;
216 target-module@49000000 {
217 compatible = "ti,sysc-omap4", "ti,sysc";
218 reg = <0x49000000 0x4>;
220 clocks = <&l3_clkctrl AM3_L3_TPCC_CLKCTRL 0>;
222 #address-cells = <1>;
224 ranges = <0x0 0x49000000 0x10000>;
227 compatible = "ti,edma3-tpcc";
229 reg-names = "edma3_cc";
230 interrupts = <12 13 14>;
231 interrupt-names = "edma3_ccint", "edma3_mperr",
236 ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
239 ti,edma-memcpy-channels = <20 21>;
243 target-module@49800000 {
244 compatible = "ti,sysc-omap4", "ti,sysc";
245 reg = <0x49800000 0x4>,
247 reg-names = "rev", "sysc";
248 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
249 ti,sysc-midle = <SYSC_IDLE_FORCE>;
250 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
252 clocks = <&l3_clkctrl AM3_L3_TPTC0_CLKCTRL 0>;
254 #address-cells = <1>;
256 ranges = <0x0 0x49800000 0x100000>;
259 compatible = "ti,edma3-tptc";
262 interrupt-names = "edma3_tcerrint";
266 target-module@49900000 {
267 compatible = "ti,sysc-omap4", "ti,sysc";
268 reg = <0x49900000 0x4>,
270 reg-names = "rev", "sysc";
271 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
272 ti,sysc-midle = <SYSC_IDLE_FORCE>;
273 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
275 clocks = <&l3_clkctrl AM3_L3_TPTC1_CLKCTRL 0>;
277 #address-cells = <1>;
279 ranges = <0x0 0x49900000 0x100000>;
282 compatible = "ti,edma3-tptc";
285 interrupt-names = "edma3_tcerrint";
289 target-module@49a00000 {
290 compatible = "ti,sysc-omap4", "ti,sysc";
291 reg = <0x49a00000 0x4>,
293 reg-names = "rev", "sysc";
294 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
295 ti,sysc-midle = <SYSC_IDLE_FORCE>;
296 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
298 clocks = <&l3_clkctrl AM3_L3_TPTC2_CLKCTRL 0>;
300 #address-cells = <1>;
302 ranges = <0x0 0x49a00000 0x100000>;
305 compatible = "ti,edma3-tptc";
308 interrupt-names = "edma3_tcerrint";
312 target-module@47810000 {
313 compatible = "ti,sysc-omap2", "ti,sysc";
314 reg = <0x478102fc 0x4>,
317 reg-names = "rev", "sysc", "syss";
318 ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
319 SYSC_OMAP2_ENAWAKEUP |
320 SYSC_OMAP2_SOFTRESET |
321 SYSC_OMAP2_AUTOIDLE)>;
322 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
326 clocks = <&l3s_clkctrl AM3_L3S_MMC3_CLKCTRL 0>;
328 #address-cells = <1>;
330 ranges = <0x0 0x47810000 0x1000>;
333 compatible = "ti,am335-sdhci";
334 ti,needs-special-reset;
341 usb: target-module@47400000 {
342 compatible = "ti,sysc-omap4", "ti,sysc";
343 reg = <0x47400000 0x4>,
345 reg-names = "rev", "sysc";
346 ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
347 SYSC_OMAP4_SOFTRESET)>;
348 ti,sysc-midle = <SYSC_IDLE_FORCE>,
351 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
354 <SYSC_IDLE_SMART_WKUP>;
355 clocks = <&l3s_clkctrl AM3_L3S_USB_OTG_HS_CLKCTRL 0>;
357 #address-cells = <1>;
359 ranges = <0x0 0x47400000 0x8000>;
361 usb0_phy: usb-phy@1300 {
362 compatible = "ti,am335x-usb-phy";
363 reg = <0x1300 0x100>;
365 ti,ctrl_mod = <&usb_ctrl_mod>;
370 compatible = "ti,musb-am33xx";
371 reg = <0x1400 0x400>,
373 reg-names = "mc", "control";
376 interrupt-names = "mc";
378 mentor,multipoint = <1>;
379 mentor,num-eps = <16>;
380 mentor,ram-bits = <12>;
381 mentor,power = <500>;
384 dmas = <&cppi41dma 0 0 &cppi41dma 1 0
385 &cppi41dma 2 0 &cppi41dma 3 0
386 &cppi41dma 4 0 &cppi41dma 5 0
387 &cppi41dma 6 0 &cppi41dma 7 0
388 &cppi41dma 8 0 &cppi41dma 9 0
389 &cppi41dma 10 0 &cppi41dma 11 0
390 &cppi41dma 12 0 &cppi41dma 13 0
391 &cppi41dma 14 0 &cppi41dma 0 1
392 &cppi41dma 1 1 &cppi41dma 2 1
393 &cppi41dma 3 1 &cppi41dma 4 1
394 &cppi41dma 5 1 &cppi41dma 6 1
395 &cppi41dma 7 1 &cppi41dma 8 1
396 &cppi41dma 9 1 &cppi41dma 10 1
397 &cppi41dma 11 1 &cppi41dma 12 1
398 &cppi41dma 13 1 &cppi41dma 14 1>;
400 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
401 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
403 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
404 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
408 usb1_phy: usb-phy@1b00 {
409 compatible = "ti,am335x-usb-phy";
410 reg = <0x1b00 0x100>;
412 ti,ctrl_mod = <&usb_ctrl_mod>;
417 compatible = "ti,musb-am33xx";
418 reg = <0x1c00 0x400>,
420 reg-names = "mc", "control";
422 interrupt-names = "mc";
424 mentor,multipoint = <1>;
425 mentor,num-eps = <16>;
426 mentor,ram-bits = <12>;
427 mentor,power = <500>;
430 dmas = <&cppi41dma 15 0 &cppi41dma 16 0
431 &cppi41dma 17 0 &cppi41dma 18 0
432 &cppi41dma 19 0 &cppi41dma 20 0
433 &cppi41dma 21 0 &cppi41dma 22 0
434 &cppi41dma 23 0 &cppi41dma 24 0
435 &cppi41dma 25 0 &cppi41dma 26 0
436 &cppi41dma 27 0 &cppi41dma 28 0
437 &cppi41dma 29 0 &cppi41dma 15 1
438 &cppi41dma 16 1 &cppi41dma 17 1
439 &cppi41dma 18 1 &cppi41dma 19 1
440 &cppi41dma 20 1 &cppi41dma 21 1
441 &cppi41dma 22 1 &cppi41dma 23 1
442 &cppi41dma 24 1 &cppi41dma 25 1
443 &cppi41dma 26 1 &cppi41dma 27 1
444 &cppi41dma 28 1 &cppi41dma 29 1>;
446 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
447 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
449 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
450 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
454 cppi41dma: dma-controller@2000 {
455 compatible = "ti,am3359-cppi41";
456 reg = <0x0000 0x1000>,
460 reg-names = "glue", "controller", "scheduler", "queuemgr";
462 interrupt-names = "glue";
464 /* For backwards compatibility: */
465 #dma-channels = <30>;
467 #dma-requests = <256>;
468 dma-requests = <256>;
472 target-module@40300000 {
473 compatible = "ti,sysc-omap4-simple", "ti,sysc";
474 clocks = <&l3_clkctrl AM3_L3_OCMCRAM_CLKCTRL 0>;
477 #address-cells = <1>;
479 ranges = <0 0x40300000 0x10000>;
482 compatible = "mmio-sram";
483 reg = <0 0x10000>; /* 64k */
484 ranges = <0 0 0x10000>;
485 #address-cells = <1>;
488 pm_sram_code: pm-code-sram@0 {
489 compatible = "ti,sram";
494 pm_sram_data: pm-data-sram@1000 {
495 compatible = "ti,sram";
496 reg = <0x1000 0x1000>;
502 target-module@4c000000 {
503 compatible = "ti,sysc-omap4-simple", "ti,sysc";
504 reg = <0x4c000000 0x4>;
506 clocks = <&l3_clkctrl AM3_L3_EMIF_CLKCTRL 0>;
509 #address-cells = <1>;
511 ranges = <0x0 0x4c000000 0x1000000>;
514 compatible = "ti,emif-am3352";
517 sram = <&pm_sram_code
522 target-module@50000000 {
523 compatible = "ti,sysc-omap2", "ti,sysc";
524 reg = <0x50000000 4>,
527 reg-names = "rev", "sysc", "syss";
528 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
532 clocks = <&l3s_clkctrl AM3_L3S_GPMC_CLKCTRL 0>;
534 #address-cells = <1>;
536 ranges = <0x50000000 0x50000000 0x00001000>, /* regs */
537 <0x00000000 0x00000000 0x40000000>; /* data */
539 gpmc: gpmc@50000000 {
540 compatible = "ti,am3352-gpmc";
541 reg = <0x50000000 0x2000>;
546 gpmc,num-waitpins = <2>;
547 #address-cells = <2>;
549 interrupt-controller;
550 #interrupt-cells = <2>;
557 sham_target: target-module@53100000 {
558 compatible = "ti,sysc-omap3-sham", "ti,sysc";
559 reg = <0x53100100 0x4>,
562 reg-names = "rev", "sysc", "syss";
563 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
564 SYSC_OMAP2_AUTOIDLE)>;
565 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
569 /* Domains (P, C): per_pwrdm, l3_clkdm */
570 clocks = <&l3_clkctrl AM3_L3_SHAM_CLKCTRL 0>;
572 #address-cells = <1>;
574 ranges = <0x0 0x53100000 0x1000>;
577 compatible = "ti,omap4-sham";
585 aes_target: target-module@53500000 {
586 compatible = "ti,sysc-omap2", "ti,sysc";
587 reg = <0x53500080 0x4>,
590 reg-names = "rev", "sysc", "syss";
591 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
592 SYSC_OMAP2_AUTOIDLE)>;
593 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
596 <SYSC_IDLE_SMART_WKUP>;
598 /* Domains (P, C): per_pwrdm, l3_clkdm */
599 clocks = <&l3_clkctrl AM3_L3_AES_CLKCTRL 0>;
601 #address-cells = <1>;
603 ranges = <0x0 0x53500000 0x1000>;
606 compatible = "ti,omap4-aes";
611 dma-names = "tx", "rx";
615 target-module@56000000 {
616 compatible = "ti,sysc-omap4", "ti,sysc";
617 reg = <0x5600fe00 0x4>,
619 reg-names = "rev", "sysc";
620 ti,sysc-midle = <SYSC_IDLE_FORCE>,
623 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
626 clocks = <&gfx_l3_clkctrl AM3_GFX_L3_GFX_CLKCTRL 0>;
628 power-domains = <&prm_gfx>;
629 resets = <&prm_gfx 0>;
630 reset-names = "rstctrl";
631 #address-cells = <1>;
633 ranges = <0 0x56000000 0x1000000>;
636 * Closed source PowerVR driver, no child device
637 * binding or driver in mainline
643 #include "am33xx-l4.dtsi"
644 #include "am33xx-clocks.dtsi"
648 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
651 #power-domain-cells = <0>;
655 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
658 #power-domain-cells = <0>;
662 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
664 #power-domain-cells = <0>;
667 prm_device: prm@f00 {
668 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
674 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
675 reg = <0x1000 0x100>;
676 #power-domain-cells = <0>;
680 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
681 reg = <0x1100 0x100>;
682 #power-domain-cells = <0>;
686 prm_cefuse: prm@1200 {
687 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
688 reg = <0x1200 0x100>;
689 #power-domain-cells = <0>;
693 /* Preferred always-on timer for clocksource */
695 clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_TIMER1_CLKCTRL 0>,
696 <&l4_wkup_clkctrl AM3_L4_WKUP_L4_WKUP_CLKCTRL 0>;
697 clock-names = "fck", "ick";
701 assigned-clocks = <&timer1_fck>;
702 assigned-clock-parents = <&sys_clkin_ck>;
706 /* Preferred timer for clockevent */
708 clocks = <&l4ls_clkctrl AM3_L4LS_TIMER2_CLKCTRL 0>,
709 <&l4ls_clkctrl AM3_L4LS_L4_LS_CLKCTRL 0>;
710 clock-names = "fck", "ick";
714 assigned-clocks = <&timer2_fck>;
715 assigned-clock-parents = <&sys_clkin_ck>;