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_clkctrl AM3_L3_L3_INSTR_CLKCTRL 0>;
152 #address-cells = <1>;
154 ranges = <0x0 0x4b000000 0x1000000>;
156 target-module@140000 {
157 compatible = "ti,sysc-omap4-simple", "ti,sysc";
158 clocks = <&l3_aon_clkctrl AM3_L3_AON_DEBUGSS_CLKCTRL 0>;
160 #address-cells = <1>;
162 ranges = <0x0 0x140000 0xec0000>;
165 compatible = "arm,cortex-a8-pmu";
172 * The soc node represents the soc top level view. It is used for IPs
173 * that are not memory mapped in the MPU view or for the MPU itself.
176 compatible = "ti,omap-infra";
180 * XXX: Use a flat representation of the AM33XX interconnect.
181 * The real AM33XX interconnect network is quite complex. Since
182 * it will not bring real advantage to represent that in DT
183 * for the moment, just use a fake OCP bus entry to represent
184 * the whole bus hierarchy.
187 compatible = "simple-bus";
188 #address-cells = <1>;
191 ti,hwmods = "l3_main";
193 l4_wkup: interconnect@44c00000 {
195 l4_per: interconnect@48000000 {
197 l4_fw: interconnect@47c00000 {
199 l4_fast: interconnect@4a000000 {
201 l4_mpuss: interconnect@4b140000 {
204 intc: interrupt-controller@48200000 {
205 compatible = "ti,am33xx-intc";
206 interrupt-controller;
207 #interrupt-cells = <1>;
208 reg = <0x48200000 0x1000>;
211 target-module@49000000 {
212 compatible = "ti,sysc-omap4", "ti,sysc";
213 reg = <0x49000000 0x4>;
215 clocks = <&l3_clkctrl AM3_L3_TPCC_CLKCTRL 0>;
217 #address-cells = <1>;
219 ranges = <0x0 0x49000000 0x10000>;
222 compatible = "ti,edma3-tpcc";
224 reg-names = "edma3_cc";
225 interrupts = <12 13 14>;
226 interrupt-names = "edma3_ccint", "edma3_mperr",
231 ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
234 ti,edma-memcpy-channels = <20 21>;
238 target-module@49800000 {
239 compatible = "ti,sysc-omap4", "ti,sysc";
240 reg = <0x49800000 0x4>,
242 reg-names = "rev", "sysc";
243 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
244 ti,sysc-midle = <SYSC_IDLE_FORCE>;
245 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
247 clocks = <&l3_clkctrl AM3_L3_TPTC0_CLKCTRL 0>;
249 #address-cells = <1>;
251 ranges = <0x0 0x49800000 0x100000>;
254 compatible = "ti,edma3-tptc";
257 interrupt-names = "edma3_tcerrint";
261 target-module@49900000 {
262 compatible = "ti,sysc-omap4", "ti,sysc";
263 reg = <0x49900000 0x4>,
265 reg-names = "rev", "sysc";
266 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
267 ti,sysc-midle = <SYSC_IDLE_FORCE>;
268 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
270 clocks = <&l3_clkctrl AM3_L3_TPTC1_CLKCTRL 0>;
272 #address-cells = <1>;
274 ranges = <0x0 0x49900000 0x100000>;
277 compatible = "ti,edma3-tptc";
280 interrupt-names = "edma3_tcerrint";
284 target-module@49a00000 {
285 compatible = "ti,sysc-omap4", "ti,sysc";
286 reg = <0x49a00000 0x4>,
288 reg-names = "rev", "sysc";
289 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
290 ti,sysc-midle = <SYSC_IDLE_FORCE>;
291 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
293 clocks = <&l3_clkctrl AM3_L3_TPTC2_CLKCTRL 0>;
295 #address-cells = <1>;
297 ranges = <0x0 0x49a00000 0x100000>;
300 compatible = "ti,edma3-tptc";
303 interrupt-names = "edma3_tcerrint";
307 target-module@47810000 {
308 compatible = "ti,sysc-omap2", "ti,sysc";
309 reg = <0x478102fc 0x4>,
312 reg-names = "rev", "sysc", "syss";
313 ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
314 SYSC_OMAP2_ENAWAKEUP |
315 SYSC_OMAP2_SOFTRESET |
316 SYSC_OMAP2_AUTOIDLE)>;
317 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
321 clocks = <&l3s_clkctrl AM3_L3S_MMC3_CLKCTRL 0>;
323 #address-cells = <1>;
325 ranges = <0x0 0x47810000 0x1000>;
328 compatible = "ti,am335-sdhci";
329 ti,needs-special-reset;
336 usb: target-module@47400000 {
337 compatible = "ti,sysc-omap4", "ti,sysc";
338 reg = <0x47400000 0x4>,
340 reg-names = "rev", "sysc";
341 ti,sysc-mask = <(SYSC_OMAP4_FREEEMU |
342 SYSC_OMAP4_SOFTRESET)>;
343 ti,sysc-midle = <SYSC_IDLE_FORCE>,
346 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
349 <SYSC_IDLE_SMART_WKUP>;
350 clocks = <&l3s_clkctrl AM3_L3S_USB_OTG_HS_CLKCTRL 0>;
352 #address-cells = <1>;
354 ranges = <0x0 0x47400000 0x8000>;
356 usb0_phy: usb-phy@1300 {
357 compatible = "ti,am335x-usb-phy";
358 reg = <0x1300 0x100>;
360 ti,ctrl_mod = <&usb_ctrl_mod>;
365 compatible = "ti,musb-am33xx";
366 reg = <0x1400 0x400>,
368 reg-names = "mc", "control";
371 interrupt-names = "mc";
373 mentor,multipoint = <1>;
374 mentor,num-eps = <16>;
375 mentor,ram-bits = <12>;
376 mentor,power = <500>;
379 dmas = <&cppi41dma 0 0 &cppi41dma 1 0
380 &cppi41dma 2 0 &cppi41dma 3 0
381 &cppi41dma 4 0 &cppi41dma 5 0
382 &cppi41dma 6 0 &cppi41dma 7 0
383 &cppi41dma 8 0 &cppi41dma 9 0
384 &cppi41dma 10 0 &cppi41dma 11 0
385 &cppi41dma 12 0 &cppi41dma 13 0
386 &cppi41dma 14 0 &cppi41dma 0 1
387 &cppi41dma 1 1 &cppi41dma 2 1
388 &cppi41dma 3 1 &cppi41dma 4 1
389 &cppi41dma 5 1 &cppi41dma 6 1
390 &cppi41dma 7 1 &cppi41dma 8 1
391 &cppi41dma 9 1 &cppi41dma 10 1
392 &cppi41dma 11 1 &cppi41dma 12 1
393 &cppi41dma 13 1 &cppi41dma 14 1>;
395 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
396 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
398 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
399 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
403 usb1_phy: usb-phy@1b00 {
404 compatible = "ti,am335x-usb-phy";
405 reg = <0x1b00 0x100>;
407 ti,ctrl_mod = <&usb_ctrl_mod>;
412 compatible = "ti,musb-am33xx";
413 reg = <0x1c00 0x400>,
415 reg-names = "mc", "control";
417 interrupt-names = "mc";
419 mentor,multipoint = <1>;
420 mentor,num-eps = <16>;
421 mentor,ram-bits = <12>;
422 mentor,power = <500>;
425 dmas = <&cppi41dma 15 0 &cppi41dma 16 0
426 &cppi41dma 17 0 &cppi41dma 18 0
427 &cppi41dma 19 0 &cppi41dma 20 0
428 &cppi41dma 21 0 &cppi41dma 22 0
429 &cppi41dma 23 0 &cppi41dma 24 0
430 &cppi41dma 25 0 &cppi41dma 26 0
431 &cppi41dma 27 0 &cppi41dma 28 0
432 &cppi41dma 29 0 &cppi41dma 15 1
433 &cppi41dma 16 1 &cppi41dma 17 1
434 &cppi41dma 18 1 &cppi41dma 19 1
435 &cppi41dma 20 1 &cppi41dma 21 1
436 &cppi41dma 22 1 &cppi41dma 23 1
437 &cppi41dma 24 1 &cppi41dma 25 1
438 &cppi41dma 26 1 &cppi41dma 27 1
439 &cppi41dma 28 1 &cppi41dma 29 1>;
441 "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
442 "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
444 "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
445 "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
449 cppi41dma: dma-controller@2000 {
450 compatible = "ti,am3359-cppi41";
451 reg = <0x0000 0x1000>,
455 reg-names = "glue", "controller", "scheduler", "queuemgr";
457 interrupt-names = "glue";
459 #dma-channels = <30>;
460 #dma-requests = <256>;
464 target-module@40300000 {
465 compatible = "ti,sysc-omap4-simple", "ti,sysc";
466 clocks = <&l3_clkctrl AM3_L3_OCMCRAM_CLKCTRL 0>;
469 #address-cells = <1>;
471 ranges = <0 0x40300000 0x10000>;
474 compatible = "mmio-sram";
475 reg = <0 0x10000>; /* 64k */
476 ranges = <0 0 0x10000>;
477 #address-cells = <1>;
480 pm_sram_code: pm-code-sram@0 {
481 compatible = "ti,sram";
486 pm_sram_data: pm-data-sram@1000 {
487 compatible = "ti,sram";
488 reg = <0x1000 0x1000>;
494 target-module@4c000000 {
495 compatible = "ti,sysc-omap4-simple", "ti,sysc";
496 reg = <0x4c000000 0x4>;
498 clocks = <&l3_clkctrl AM3_L3_EMIF_CLKCTRL 0>;
501 #address-cells = <1>;
503 ranges = <0x0 0x4c000000 0x1000000>;
506 compatible = "ti,emif-am3352";
509 sram = <&pm_sram_code
514 target-module@50000000 {
515 compatible = "ti,sysc-omap2", "ti,sysc";
516 reg = <0x50000000 4>,
519 reg-names = "rev", "sysc", "syss";
520 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
524 clocks = <&l3s_clkctrl AM3_L3S_GPMC_CLKCTRL 0>;
526 #address-cells = <1>;
528 ranges = <0x50000000 0x50000000 0x00001000>, /* regs */
529 <0x00000000 0x00000000 0x40000000>; /* data */
531 gpmc: gpmc@50000000 {
532 compatible = "ti,am3352-gpmc";
533 reg = <0x50000000 0x2000>;
538 gpmc,num-waitpins = <2>;
539 #address-cells = <2>;
541 interrupt-controller;
542 #interrupt-cells = <2>;
549 sham_target: target-module@53100000 {
550 compatible = "ti,sysc-omap3-sham", "ti,sysc";
551 reg = <0x53100100 0x4>,
554 reg-names = "rev", "sysc", "syss";
555 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
556 SYSC_OMAP2_AUTOIDLE)>;
557 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
561 /* Domains (P, C): per_pwrdm, l3_clkdm */
562 clocks = <&l3_clkctrl AM3_L3_SHAM_CLKCTRL 0>;
564 #address-cells = <1>;
566 ranges = <0x0 0x53100000 0x1000>;
569 compatible = "ti,omap4-sham";
577 aes_target: target-module@53500000 {
578 compatible = "ti,sysc-omap2", "ti,sysc";
579 reg = <0x53500080 0x4>,
582 reg-names = "rev", "sysc", "syss";
583 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
584 SYSC_OMAP2_AUTOIDLE)>;
585 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
588 <SYSC_IDLE_SMART_WKUP>;
590 /* Domains (P, C): per_pwrdm, l3_clkdm */
591 clocks = <&l3_clkctrl AM3_L3_AES_CLKCTRL 0>;
593 #address-cells = <1>;
595 ranges = <0x0 0x53500000 0x1000>;
598 compatible = "ti,omap4-aes";
603 dma-names = "tx", "rx";
607 target-module@56000000 {
608 compatible = "ti,sysc-omap4", "ti,sysc";
609 reg = <0x5600fe00 0x4>,
611 reg-names = "rev", "sysc";
612 ti,sysc-midle = <SYSC_IDLE_FORCE>,
615 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
618 clocks = <&gfx_l3_clkctrl AM3_GFX_L3_GFX_CLKCTRL 0>;
620 power-domains = <&prm_gfx>;
621 resets = <&prm_gfx 0>;
622 reset-names = "rstctrl";
623 #address-cells = <1>;
625 ranges = <0 0x56000000 0x1000000>;
628 * Closed source PowerVR driver, no child device
629 * binding or driver in mainline
635 #include "am33xx-l4.dtsi"
636 #include "am33xx-clocks.dtsi"
640 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
643 #power-domain-cells = <0>;
647 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
650 #power-domain-cells = <0>;
654 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
656 #power-domain-cells = <0>;
659 prm_device: prm@f00 {
660 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
666 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
667 reg = <0x1000 0x100>;
668 #power-domain-cells = <0>;
672 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
673 reg = <0x1100 0x100>;
674 #power-domain-cells = <0>;
678 prm_cefuse: prm@1200 {
679 compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
680 reg = <0x1200 0x100>;
681 #power-domain-cells = <0>;
685 /* Preferred always-on timer for clocksource */
687 clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_TIMER1_CLKCTRL 0>,
688 <&l4_wkup_clkctrl AM3_L4_WKUP_L4_WKUP_CLKCTRL 0>;
689 clock-names = "fck", "ick";
693 assigned-clocks = <&timer1_fck>;
694 assigned-clock-parents = <&sys_clkin_ck>;
698 /* Preferred timer for clockevent */
700 clocks = <&l4ls_clkctrl AM3_L4LS_TIMER2_CLKCTRL 0>,
701 <&l4ls_clkctrl AM3_L4LS_L4_LS_CLKCTRL 0>;
702 clock-names = "fck", "ick";
706 assigned-clocks = <&timer2_fck>;
707 assigned-clock-parents = <&sys_clkin_ck>;