1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (C) 2011 Texas Instruments Incorporated - https://www.ti.com/
6 #include <dt-bindings/bus/ti-sysc.h>
7 #include <dt-bindings/clock/omap4.h>
8 #include <dt-bindings/gpio/gpio.h>
9 #include <dt-bindings/interrupt-controller/arm-gic.h>
10 #include <dt-bindings/pinctrl/omap.h>
11 #include <dt-bindings/clock/omap4.h>
14 compatible = "ti,omap4430", "ti,omap4";
15 interrupt-parent = <&wakeupgen>;
38 compatible = "arm,cortex-a9";
40 next-level-cache = <&L2>;
43 clocks = <&dpll_mpu_ck>;
46 clock-latency = <300000>; /* From omap-cpufreq driver */
49 compatible = "arm,cortex-a9";
51 next-level-cache = <&L2>;
57 * Note that 4430 needs cross trigger interface (CTI) supported
58 * before we can configure the interrupts. This means sampling
59 * events are not supported for pmu. Note that 4460 does not use
60 * CTI, see also 4460.dtsi.
63 compatible = "arm,cortex-a9-pmu";
64 ti,hwmods = "debugss";
67 gic: interrupt-controller@48241000 {
68 compatible = "arm,cortex-a9-gic";
70 #interrupt-cells = <3>;
71 reg = <0x48241000 0x1000>,
73 interrupt-parent = <&gic>;
76 L2: cache-controller@48242000 {
77 compatible = "arm,pl310-cache";
78 reg = <0x48242000 0x1000>;
83 local-timer@48240600 {
84 compatible = "arm,cortex-a9-twd-timer";
85 clocks = <&mpu_periphclk>;
86 reg = <0x48240600 0x20>;
87 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(3) | IRQ_TYPE_EDGE_RISING)>;
88 interrupt-parent = <&gic>;
91 wakeupgen: interrupt-controller@48281000 {
92 compatible = "ti,omap4-wugen-mpu";
94 #interrupt-cells = <3>;
95 reg = <0x48281000 0x1000>;
96 interrupt-parent = <&gic>;
100 * The soc node represents the soc top level view. It is used for IPs
101 * that are not memory mapped in the MPU view or for the MPU itself.
104 compatible = "ti,omap-infra";
106 compatible = "ti,omap4-mpu";
113 * XXX: Use a flat representation of the OMAP4 interconnect.
114 * The real OMAP interconnect network is quite complex.
115 * Since it will not bring real advantage to represent that in DT for
116 * the moment, just use a fake OCP bus entry to represent the whole bus
120 compatible = "ti,omap4-l3-noc", "simple-bus";
121 #address-cells = <1>;
124 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
125 reg = <0x44000000 0x1000>,
128 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
129 <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
131 l4_wkup: interconnect@4a300000 {
134 l4_cfg: interconnect@4a000000 {
137 l4_per: interconnect@48000000 {
140 l4_abe: interconnect@40100000 {
143 ocmcram: sram@40304000 {
144 compatible = "mmio-sram";
145 reg = <0x40304000 0xa000>; /* 40k */
148 target-module@50000000 {
149 compatible = "ti,sysc-omap2", "ti,sysc";
150 reg = <0x50000000 4>,
153 reg-names = "rev", "sysc", "syss";
154 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
159 clocks = <&l3_2_clkctrl OMAP4_GPMC_CLKCTRL 0>;
161 #address-cells = <1>;
163 ranges = <0x50000000 0x50000000 0x00001000>, /* regs */
164 <0x00000000 0x00000000 0x40000000>; /* data */
166 gpmc: gpmc@50000000 {
167 compatible = "ti,omap4430-gpmc";
168 reg = <0x50000000 0x1000>;
169 #address-cells = <2>;
171 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
175 gpmc,num-waitpins = <4>;
176 clocks = <&l3_div_ck>;
178 interrupt-controller;
179 #interrupt-cells = <2>;
185 target-module@52000000 {
186 compatible = "ti,sysc-omap4", "ti,sysc";
188 reg = <0x52000000 0x4>,
190 reg-names = "rev", "sysc";
191 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
192 ti,sysc-midle = <SYSC_IDLE_FORCE>,
195 <SYSC_IDLE_SMART_WKUP>;
196 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
199 <SYSC_IDLE_SMART_WKUP>;
200 ti,sysc-delay-us = <2>;
201 clocks = <&iss_clkctrl OMAP4_ISS_CLKCTRL 0>;
203 #address-cells = <1>;
205 ranges = <0 0x52000000 0x1000000>;
207 /* No child device binding, driver in staging */
210 target-module@55082000 {
211 compatible = "ti,sysc-omap2", "ti,sysc";
212 reg = <0x55082000 0x4>,
215 reg-names = "rev", "sysc", "syss";
216 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
219 ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
220 SYSC_OMAP2_SOFTRESET |
221 SYSC_OMAP2_AUTOIDLE)>;
222 clocks = <&ducati_clkctrl OMAP4_IPU_CLKCTRL 0>;
224 resets = <&prm_core 2>;
225 reset-names = "rstctrl";
226 ranges = <0x0 0x55082000 0x100>;
228 #address-cells = <1>;
231 compatible = "ti,omap4-iommu";
233 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
235 ti,iommu-bus-err-back;
239 target-module@4012c000 {
240 compatible = "ti,sysc-omap4", "ti,sysc";
241 reg = <0x4012c000 0x4>,
243 reg-names = "rev", "sysc";
244 ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
245 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
248 <SYSC_IDLE_SMART_WKUP>;
249 clocks = <&abe_clkctrl OMAP4_SLIMBUS1_CLKCTRL 0>;
251 #address-cells = <1>;
253 ranges = <0x00000000 0x4012c000 0x1000>, /* MPU */
254 <0x4902c000 0x4902c000 0x1000>; /* L3 */
256 /* No child device binding or driver in mainline */
260 compatible = "ti,omap4-dmm";
261 reg = <0x4e000000 0x800>;
262 interrupts = <0 113 0x4>;
266 emif1: emif@4c000000 {
267 compatible = "ti,emif-4d";
268 reg = <0x4c000000 0x100>;
269 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
273 hw-caps-read-idle-ctrl;
274 hw-caps-ll-interface;
278 emif2: emif@4d000000 {
279 compatible = "ti,emif-4d";
280 reg = <0x4d000000 0x100>;
281 interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
285 hw-caps-read-idle-ctrl;
286 hw-caps-ll-interface;
291 compatible = "ti,omap4-dsp";
292 ti,bootreg = <&scm_conf 0x304 0>;
294 resets = <&prm_tesla 0>;
295 clocks = <&tesla_clkctrl OMAP4_DSP_CLKCTRL 0>;
296 firmware-name = "omap4-dsp-fw.xe64T";
297 mboxes = <&mailbox &mbox_dsp>;
302 compatible = "ti,omap4-ipu";
303 reg = <0x55020000 0x10000>;
306 resets = <&prm_core 0>, <&prm_core 1>;
307 clocks = <&ducati_clkctrl OMAP4_IPU_CLKCTRL 0>;
308 firmware-name = "omap4-ipu-fw.xem3";
309 mboxes = <&mailbox &mbox_ipu>;
313 aes1_target: target-module@4b501000 {
314 compatible = "ti,sysc-omap2", "ti,sysc";
315 reg = <0x4b501080 0x4>,
318 reg-names = "rev", "sysc", "syss";
319 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
320 SYSC_OMAP2_AUTOIDLE)>;
321 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
324 <SYSC_IDLE_SMART_WKUP>;
326 /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */
327 clocks = <&l4_secure_clkctrl OMAP4_AES1_CLKCTRL 0>;
329 #address-cells = <1>;
331 ranges = <0x0 0x4b501000 0x1000>;
334 compatible = "ti,omap4-aes";
336 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
337 dmas = <&sdma 111>, <&sdma 110>;
338 dma-names = "tx", "rx";
342 aes2_target: target-module@4b701000 {
343 compatible = "ti,sysc-omap2", "ti,sysc";
344 reg = <0x4b701080 0x4>,
347 reg-names = "rev", "sysc", "syss";
348 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
349 SYSC_OMAP2_AUTOIDLE)>;
350 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
353 <SYSC_IDLE_SMART_WKUP>;
355 /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */
356 clocks = <&l4_secure_clkctrl OMAP4_AES2_CLKCTRL 0>;
358 #address-cells = <1>;
360 ranges = <0x0 0x4b701000 0x1000>;
363 compatible = "ti,omap4-aes";
365 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
366 dmas = <&sdma 114>, <&sdma 113>;
367 dma-names = "tx", "rx";
371 sham_target: target-module@4b100000 {
372 compatible = "ti,sysc-omap3-sham", "ti,sysc";
373 reg = <0x4b100100 0x4>,
376 reg-names = "rev", "sysc", "syss";
377 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
378 SYSC_OMAP2_AUTOIDLE)>;
379 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
383 /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */
384 clocks = <&l4_secure_clkctrl OMAP4_SHA2MD5_CLKCTRL 0>;
386 #address-cells = <1>;
388 ranges = <0x0 0x4b100000 0x1000>;
391 compatible = "ti,omap4-sham";
393 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
399 abb_mpu: regulator-abb-mpu {
400 compatible = "ti,abb-v2";
401 regulator-name = "abb_mpu";
402 #address-cells = <0>;
404 ti,tranxdone-status-mask = <0x80>;
405 clocks = <&sys_clkin_ck>;
406 ti,settling-time = <50>;
407 ti,clock-cycles = <16>;
412 abb_iva: regulator-abb-iva {
413 compatible = "ti,abb-v2";
414 regulator-name = "abb_iva";
415 #address-cells = <0>;
417 ti,tranxdone-status-mask = <0x80000000>;
418 clocks = <&sys_clkin_ck>;
419 ti,settling-time = <50>;
420 ti,clock-cycles = <16>;
425 sgx_module: target-module@56000000 {
426 compatible = "ti,sysc-omap4", "ti,sysc";
427 reg = <0x5600fe00 0x4>,
429 reg-names = "rev", "sysc";
430 ti,sysc-midle = <SYSC_IDLE_FORCE>,
433 <SYSC_IDLE_SMART_WKUP>;
434 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
437 <SYSC_IDLE_SMART_WKUP>;
438 clocks = <&l3_gfx_clkctrl OMAP4_GPU_CLKCTRL 0>;
440 #address-cells = <1>;
442 ranges = <0 0x56000000 0x2000000>;
445 * Closed source PowerVR driver, no child device
446 * binding or driver in mainline
451 * DSS is only using l3 mapping without l4 as noted in the TRM
452 * "10.1.3 DSS Register Manual" for omap4460.
454 target-module@58000000 {
455 compatible = "ti,sysc-omap2", "ti,sysc";
456 reg = <0x58000000 4>,
458 reg-names = "rev", "syss";
460 power-domains = <&prm_dss>;
461 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 0>,
462 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 9>,
463 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>,
464 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 11>;
465 clock-names = "fck", "hdmi_clk", "sys_clk", "tv_clk";
466 #address-cells = <1>;
468 ranges = <0 0x58000000 0x1000000>;
471 compatible = "ti,omap4-dss";
474 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>;
476 #address-cells = <1>;
478 ranges = <0 0 0x1000000>;
481 compatible = "ti,sysc-omap2", "ti,sysc";
485 reg-names = "rev", "sysc", "syss";
486 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
489 ti,sysc-midle = <SYSC_IDLE_FORCE>,
492 ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
493 SYSC_OMAP2_ENAWAKEUP |
494 SYSC_OMAP2_SOFTRESET |
495 SYSC_OMAP2_AUTOIDLE)>;
497 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>,
498 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>;
499 clock-names = "fck", "sys_clk";
500 #address-cells = <1>;
502 ranges = <0 0x1000 0x1000>;
505 compatible = "ti,omap4-dispc";
507 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
508 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>;
514 compatible = "ti,sysc-omap2", "ti,sysc";
518 reg-names = "rev", "sysc", "syss";
519 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
522 ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
523 SYSC_OMAP2_AUTOIDLE)>;
525 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>,
526 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>;
527 clock-names = "fck", "sys_clk";
528 #address-cells = <1>;
530 ranges = <0 0x2000 0x1000>;
535 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>, <&l3_div_ck>;
536 clock-names = "fck", "ick";
541 compatible = "ti,sysc-omap2", "ti,sysc";
544 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>;
545 clock-names = "sys_clk";
546 #address-cells = <1>;
548 ranges = <0 0x3000 0x1000>;
551 compatible = "ti,omap4-venc";
554 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 11>;
560 compatible = "ti,sysc-omap2", "ti,sysc";
564 reg-names = "rev", "sysc", "syss";
565 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
568 ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
569 SYSC_OMAP2_ENAWAKEUP |
570 SYSC_OMAP2_SOFTRESET |
571 SYSC_OMAP2_AUTOIDLE)>;
573 #address-cells = <1>;
575 ranges = <0 0x4000 0x1000>;
578 compatible = "ti,omap4-dsi";
582 reg-names = "proto", "phy", "pll";
583 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
585 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>,
586 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>;
587 clock-names = "fck", "sys_clk";
589 #address-cells = <1>;
595 compatible = "ti,sysc-omap2", "ti,sysc";
599 reg-names = "rev", "sysc", "syss";
600 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
603 ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
604 SYSC_OMAP2_ENAWAKEUP |
605 SYSC_OMAP2_SOFTRESET |
606 SYSC_OMAP2_AUTOIDLE)>;
608 #address-cells = <1>;
610 ranges = <0 0x5000 0x1000>;
613 compatible = "ti,omap4-dsi";
617 reg-names = "proto", "phy", "pll";
618 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
620 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>,
621 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>;
622 clock-names = "fck", "sys_clk";
624 #address-cells = <1>;
630 compatible = "ti,sysc-omap4", "ti,sysc";
633 reg-names = "rev", "sysc";
635 * Has SYSC_IDLE_SMART and SYSC_IDLE_SMART_WKUP
636 * but HDMI audio will fail with them.
638 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
640 ti,sysc-mask = <(SYSC_OMAP4_SOFTRESET)>;
641 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 9>,
642 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>;
643 clock-names = "fck", "dss_clk";
644 #address-cells = <1>;
646 ranges = <0 0x6000 0x2000>;
649 compatible = "ti,omap4-hdmi";
654 reg-names = "wp", "pll", "phy", "core";
655 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
657 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 9>,
658 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>;
659 clock-names = "fck", "sys_clk";
661 dma-names = "audio_tx";
667 iva_hd_target: target-module@5a000000 {
668 compatible = "ti,sysc-omap4", "ti,sysc";
669 reg = <0x5a05a400 0x4>,
671 reg-names = "rev", "sysc";
672 ti,sysc-midle = <SYSC_IDLE_FORCE>,
675 ti,sysc-sidle = <SYSC_IDLE_FORCE>,
678 power-domains = <&prm_ivahd>;
679 resets = <&prm_ivahd 2>;
680 reset-names = "rstctrl";
681 clocks = <&ivahd_clkctrl OMAP4_IVA_CLKCTRL 0>;
683 #address-cells = <1>;
685 ranges = <0x5a000000 0x5a000000 0x1000000>,
686 <0x5b000000 0x5b000000 0x1000000>;
689 compatible = "ti,ivahd";
695 #include "omap4-l4.dtsi"
696 #include "omap4-l4-abe.dtsi"
697 #include "omap44xx-clocks.dtsi"
701 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
703 #power-domain-cells = <0>;
707 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
710 #power-domain-cells = <0>;
714 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
716 #power-domain-cells = <0>;
719 prm_always_on_core: prm@600 {
720 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
722 #power-domain-cells = <0>;
726 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
729 #power-domain-cells = <0>;
733 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
736 #power-domain-cells = <0>;
740 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
741 reg = <0x1000 0x100>;
742 #power-domain-cells = <0>;
746 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
747 reg = <0x1100 0x100>;
748 #power-domain-cells = <0>;
752 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
753 reg = <0x1200 0x100>;
754 #power-domain-cells = <0>;
757 prm_l3init: prm@1300 {
758 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
759 reg = <0x1300 0x100>;
760 #power-domain-cells = <0>;
763 prm_l4per: prm@1400 {
764 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
765 reg = <0x1400 0x100>;
766 #power-domain-cells = <0>;
769 prm_cefuse: prm@1600 {
770 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
771 reg = <0x1600 0x100>;
772 #power-domain-cells = <0>;
776 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
777 reg = <0x1700 0x100>;
778 #power-domain-cells = <0>;
782 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
783 reg = <0x1900 0x100>;
784 #power-domain-cells = <0>;
788 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
790 #power-domain-cells = <0>;
793 prm_device: prm@1b00 {
794 compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
800 /* Preferred always-on timer for clockevent */
805 assigned-clocks = <&l4_wkup_clkctrl OMAP4_TIMER1_CLKCTRL 24>;
806 assigned-clock-parents = <&sys_32k_ck>;