am4372.dtsi 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Device Tree Source for AM4372 SoC
  4. *
  5. * Copyright (C) 2013 Texas Instruments Incorporated - https://www.ti.com/
  6. */
  7. #include <dt-bindings/bus/ti-sysc.h>
  8. #include <dt-bindings/gpio/gpio.h>
  9. #include <dt-bindings/interrupt-controller/arm-gic.h>
  10. #include <dt-bindings/clock/am4.h>
  11. / {
  12. compatible = "ti,am4372", "ti,am43";
  13. interrupt-parent = <&wakeupgen>;
  14. #address-cells = <1>;
  15. #size-cells = <1>;
  16. chosen { };
  17. memory@0 {
  18. device_type = "memory";
  19. reg = <0 0>;
  20. };
  21. aliases {
  22. i2c0 = &i2c0;
  23. i2c1 = &i2c1;
  24. i2c2 = &i2c2;
  25. serial0 = &uart0;
  26. serial1 = &uart1;
  27. serial2 = &uart2;
  28. serial3 = &uart3;
  29. serial4 = &uart4;
  30. serial5 = &uart5;
  31. ethernet0 = &cpsw_port1;
  32. ethernet1 = &cpsw_port2;
  33. spi0 = &qspi;
  34. };
  35. cpus {
  36. #address-cells = <1>;
  37. #size-cells = <0>;
  38. cpu: cpu@0 {
  39. compatible = "arm,cortex-a9";
  40. enable-method = "ti,am4372";
  41. device_type = "cpu";
  42. reg = <0>;
  43. clocks = <&dpll_mpu_ck>;
  44. clock-names = "cpu";
  45. operating-points-v2 = <&cpu0_opp_table>;
  46. clock-latency = <300000>; /* From omap-cpufreq driver */
  47. cpu-idle-states = <&mpu_gate>;
  48. };
  49. idle-states {
  50. mpu_gate: mpu_gate {
  51. compatible = "arm,idle-state";
  52. entry-latency-us = <40>;
  53. exit-latency-us = <100>;
  54. min-residency-us = <300>;
  55. local-timer-stop;
  56. };
  57. };
  58. };
  59. cpu0_opp_table: opp-table {
  60. compatible = "operating-points-v2-ti-cpu";
  61. syscon = <&scm_conf>;
  62. opp50-300000000 {
  63. opp-hz = /bits/ 64 <300000000>;
  64. opp-microvolt = <950000 931000 969000>;
  65. opp-supported-hw = <0xFF 0x01>;
  66. opp-suspend;
  67. };
  68. opp100-600000000 {
  69. opp-hz = /bits/ 64 <600000000>;
  70. opp-microvolt = <1100000 1078000 1122000>;
  71. opp-supported-hw = <0xFF 0x04>;
  72. };
  73. opp120-720000000 {
  74. opp-hz = /bits/ 64 <720000000>;
  75. opp-microvolt = <1200000 1176000 1224000>;
  76. opp-supported-hw = <0xFF 0x08>;
  77. };
  78. oppturbo-800000000 {
  79. opp-hz = /bits/ 64 <800000000>;
  80. opp-microvolt = <1260000 1234800 1285200>;
  81. opp-supported-hw = <0xFF 0x10>;
  82. };
  83. oppnitro-1000000000 {
  84. opp-hz = /bits/ 64 <1000000000>;
  85. opp-microvolt = <1325000 1298500 1351500>;
  86. opp-supported-hw = <0xFF 0x20>;
  87. };
  88. };
  89. soc {
  90. compatible = "ti,omap-infra";
  91. };
  92. gic: interrupt-controller@48241000 {
  93. compatible = "arm,cortex-a9-gic";
  94. interrupt-controller;
  95. #interrupt-cells = <3>;
  96. reg = <0x48241000 0x1000>,
  97. <0x48240100 0x0100>;
  98. interrupt-parent = <&gic>;
  99. };
  100. wakeupgen: interrupt-controller@48281000 {
  101. compatible = "ti,omap4-wugen-mpu";
  102. interrupt-controller;
  103. #interrupt-cells = <3>;
  104. reg = <0x48281000 0x1000>;
  105. interrupt-parent = <&gic>;
  106. };
  107. scu: scu@48240000 {
  108. compatible = "arm,cortex-a9-scu";
  109. reg = <0x48240000 0x100>;
  110. };
  111. global_timer: timer@48240200 {
  112. compatible = "arm,cortex-a9-global-timer";
  113. reg = <0x48240200 0x100>;
  114. interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
  115. interrupt-parent = <&gic>;
  116. clocks = <&mpu_periphclk>;
  117. };
  118. local_timer: timer@48240600 {
  119. compatible = "arm,cortex-a9-twd-timer";
  120. reg = <0x48240600 0x100>;
  121. interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE_RISING>;
  122. interrupt-parent = <&gic>;
  123. clocks = <&mpu_periphclk>;
  124. };
  125. cache-controller@48242000 {
  126. compatible = "arm,pl310-cache";
  127. reg = <0x48242000 0x1000>;
  128. cache-unified;
  129. cache-level = <2>;
  130. };
  131. ocp@44000000 {
  132. compatible = "simple-pm-bus";
  133. power-domains = <&prm_per>;
  134. clocks = <&l3_clkctrl AM4_L3_L3_MAIN_CLKCTRL 0>;
  135. clock-names = "fck";
  136. #address-cells = <1>;
  137. #size-cells = <1>;
  138. ranges;
  139. ti,no-idle;
  140. l3-noc@44000000 {
  141. compatible = "ti,am4372-l3-noc";
  142. reg = <0x44000000 0x400000>,
  143. <0x44800000 0x400000>;
  144. interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
  145. <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  146. };
  147. l4_wkup: interconnect@44c00000 {
  148. };
  149. l4_per: interconnect@48000000 {
  150. };
  151. l4_fast: interconnect@4a000000 {
  152. };
  153. target-module@4c000000 {
  154. compatible = "ti,sysc-omap4-simple", "ti,sysc";
  155. reg = <0x4c000000 0x4>;
  156. reg-names = "rev";
  157. clocks = <&emif_clkctrl AM4_EMIF_EMIF_CLKCTRL 0>;
  158. clock-names = "fck";
  159. ti,no-idle;
  160. #address-cells = <1>;
  161. #size-cells = <1>;
  162. ranges = <0x0 0x4c000000 0x1000000>;
  163. emif: emif@0 {
  164. compatible = "ti,emif-am4372";
  165. reg = <0 0x1000000>;
  166. interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
  167. sram = <&pm_sram_code
  168. &pm_sram_data>;
  169. };
  170. };
  171. target-module@49000000 {
  172. compatible = "ti,sysc-omap4", "ti,sysc";
  173. reg = <0x49000000 0x4>;
  174. reg-names = "rev";
  175. clocks = <&l3_clkctrl AM4_L3_TPCC_CLKCTRL 0>;
  176. clock-names = "fck";
  177. #address-cells = <1>;
  178. #size-cells = <1>;
  179. ranges = <0x0 0x49000000 0x10000>;
  180. edma: dma@0 {
  181. compatible = "ti,edma3-tpcc";
  182. reg = <0 0x10000>;
  183. reg-names = "edma3_cc";
  184. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
  185. <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
  186. <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
  187. interrupt-names = "edma3_ccint", "edma3_mperr",
  188. "edma3_ccerrint";
  189. dma-requests = <64>;
  190. #dma-cells = <2>;
  191. ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
  192. <&edma_tptc2 0>;
  193. ti,edma-memcpy-channels = <58 59>;
  194. };
  195. };
  196. target-module@49800000 {
  197. compatible = "ti,sysc-omap4", "ti,sysc";
  198. reg = <0x49800000 0x4>,
  199. <0x49800010 0x4>;
  200. reg-names = "rev", "sysc";
  201. ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
  202. ti,sysc-midle = <SYSC_IDLE_FORCE>;
  203. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  204. <SYSC_IDLE_SMART>;
  205. clocks = <&l3_clkctrl AM4_L3_TPTC0_CLKCTRL 0>;
  206. clock-names = "fck";
  207. #address-cells = <1>;
  208. #size-cells = <1>;
  209. ranges = <0x0 0x49800000 0x100000>;
  210. edma_tptc0: dma@0 {
  211. compatible = "ti,edma3-tptc";
  212. reg = <0 0x100000>;
  213. interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
  214. interrupt-names = "edma3_tcerrint";
  215. };
  216. };
  217. target-module@49900000 {
  218. compatible = "ti,sysc-omap4", "ti,sysc";
  219. reg = <0x49900000 0x4>,
  220. <0x49900010 0x4>;
  221. reg-names = "rev", "sysc";
  222. ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
  223. ti,sysc-midle = <SYSC_IDLE_FORCE>;
  224. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  225. <SYSC_IDLE_SMART>;
  226. clocks = <&l3_clkctrl AM4_L3_TPTC1_CLKCTRL 0>;
  227. clock-names = "fck";
  228. #address-cells = <1>;
  229. #size-cells = <1>;
  230. ranges = <0x0 0x49900000 0x100000>;
  231. edma_tptc1: dma@0 {
  232. compatible = "ti,edma3-tptc";
  233. reg = <0 0x100000>;
  234. interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
  235. interrupt-names = "edma3_tcerrint";
  236. };
  237. };
  238. target-module@49a00000 {
  239. compatible = "ti,sysc-omap4", "ti,sysc";
  240. reg = <0x49a00000 0x4>,
  241. <0x49a00010 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>,
  246. <SYSC_IDLE_SMART>;
  247. clocks = <&l3_clkctrl AM4_L3_TPTC2_CLKCTRL 0>;
  248. clock-names = "fck";
  249. #address-cells = <1>;
  250. #size-cells = <1>;
  251. ranges = <0x0 0x49a00000 0x100000>;
  252. edma_tptc2: dma@0 {
  253. compatible = "ti,edma3-tptc";
  254. reg = <0 0x100000>;
  255. interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
  256. interrupt-names = "edma3_tcerrint";
  257. };
  258. };
  259. target-module@47810000 {
  260. compatible = "ti,sysc-omap2", "ti,sysc";
  261. reg = <0x478102fc 0x4>,
  262. <0x47810110 0x4>,
  263. <0x47810114 0x4>;
  264. reg-names = "rev", "sysc", "syss";
  265. ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
  266. SYSC_OMAP2_ENAWAKEUP |
  267. SYSC_OMAP2_SOFTRESET |
  268. SYSC_OMAP2_AUTOIDLE)>;
  269. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  270. <SYSC_IDLE_NO>,
  271. <SYSC_IDLE_SMART>;
  272. ti,syss-mask = <1>;
  273. clocks = <&l3s_clkctrl AM4_L3S_MMC3_CLKCTRL 0>;
  274. clock-names = "fck";
  275. #address-cells = <1>;
  276. #size-cells = <1>;
  277. ranges = <0x0 0x47810000 0x1000>;
  278. mmc3: mmc@0 {
  279. compatible = "ti,am437-sdhci";
  280. ti,needs-special-reset;
  281. interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
  282. reg = <0x0 0x1000>;
  283. status = "disabled";
  284. };
  285. };
  286. sham_target: target-module@53100000 {
  287. compatible = "ti,sysc-omap3-sham", "ti,sysc";
  288. reg = <0x53100100 0x4>,
  289. <0x53100110 0x4>,
  290. <0x53100114 0x4>;
  291. reg-names = "rev", "sysc", "syss";
  292. ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
  293. SYSC_OMAP2_AUTOIDLE)>;
  294. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  295. <SYSC_IDLE_NO>,
  296. <SYSC_IDLE_SMART>;
  297. ti,syss-mask = <1>;
  298. /* Domains (P, C): per_pwrdm, l3_clkdm */
  299. clocks = <&l3_clkctrl AM4_L3_SHAM_CLKCTRL 0>;
  300. clock-names = "fck";
  301. #address-cells = <1>;
  302. #size-cells = <1>;
  303. ranges = <0x0 0x53100000 0x1000>;
  304. sham: sham@0 {
  305. compatible = "ti,omap5-sham";
  306. reg = <0 0x300>;
  307. dmas = <&edma 36 0>;
  308. dma-names = "rx";
  309. interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
  310. };
  311. };
  312. aes_target: target-module@53501000 {
  313. compatible = "ti,sysc-omap2", "ti,sysc";
  314. reg = <0x53501080 0x4>,
  315. <0x53501084 0x4>,
  316. <0x53501088 0x4>;
  317. reg-names = "rev", "sysc", "syss";
  318. ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
  319. SYSC_OMAP2_AUTOIDLE)>;
  320. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  321. <SYSC_IDLE_NO>,
  322. <SYSC_IDLE_SMART>,
  323. <SYSC_IDLE_SMART_WKUP>;
  324. ti,syss-mask = <1>;
  325. /* Domains (P, C): per_pwrdm, l3_clkdm */
  326. clocks = <&l3_clkctrl AM4_L3_AES_CLKCTRL 0>;
  327. clock-names = "fck";
  328. #address-cells = <1>;
  329. #size-cells = <1>;
  330. ranges = <0x0 0x53501000 0x1000>;
  331. aes: aes@0 {
  332. compatible = "ti,omap4-aes";
  333. reg = <0 0xa0>;
  334. interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
  335. dmas = <&edma 6 0>,
  336. <&edma 5 0>;
  337. dma-names = "tx", "rx";
  338. };
  339. };
  340. des_target: target-module@53701000 {
  341. compatible = "ti,sysc-omap2", "ti,sysc";
  342. reg = <0x53701030 0x4>,
  343. <0x53701034 0x4>,
  344. <0x53701038 0x4>;
  345. reg-names = "rev", "sysc", "syss";
  346. ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
  347. SYSC_OMAP2_AUTOIDLE)>;
  348. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  349. <SYSC_IDLE_NO>,
  350. <SYSC_IDLE_SMART>,
  351. <SYSC_IDLE_SMART_WKUP>;
  352. ti,syss-mask = <1>;
  353. /* Domains (P, C): per_pwrdm, l3_clkdm */
  354. clocks = <&l3_clkctrl AM4_L3_DES_CLKCTRL 0>;
  355. clock-names = "fck";
  356. #address-cells = <1>;
  357. #size-cells = <1>;
  358. ranges = <0 0x53701000 0x1000>;
  359. des: des@0 {
  360. compatible = "ti,omap4-des";
  361. reg = <0 0xa0>;
  362. interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
  363. dmas = <&edma 34 0>,
  364. <&edma 33 0>;
  365. dma-names = "tx", "rx";
  366. };
  367. };
  368. pruss_tm: target-module@54400000 {
  369. compatible = "ti,sysc-pruss", "ti,sysc";
  370. reg = <0x54426000 0x4>,
  371. <0x54426004 0x4>;
  372. reg-names = "rev", "sysc";
  373. ti,sysc-mask = <(SYSC_PRUSS_STANDBY_INIT |
  374. SYSC_PRUSS_SUB_MWAIT)>;
  375. ti,sysc-midle = <SYSC_IDLE_FORCE>,
  376. <SYSC_IDLE_NO>,
  377. <SYSC_IDLE_SMART>;
  378. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  379. <SYSC_IDLE_NO>,
  380. <SYSC_IDLE_SMART>;
  381. clocks = <&pruss_ocp_clkctrl AM4_PRUSS_OCP_PRUSS_CLKCTRL 0>;
  382. clock-names = "fck";
  383. resets = <&prm_per 1>;
  384. reset-names = "rstctrl";
  385. #address-cells = <1>;
  386. #size-cells = <1>;
  387. ranges = <0x0 0x54400000 0x80000>;
  388. pruss1: pruss@0 {
  389. compatible = "ti,am4376-pruss1";
  390. reg = <0x0 0x40000>;
  391. #address-cells = <1>;
  392. #size-cells = <1>;
  393. ranges;
  394. pruss1_mem: memories@0 {
  395. reg = <0x0 0x2000>,
  396. <0x2000 0x2000>,
  397. <0x10000 0x8000>;
  398. reg-names = "dram0", "dram1",
  399. "shrdram2";
  400. };
  401. pruss1_cfg: cfg@26000 {
  402. compatible = "ti,pruss-cfg", "syscon";
  403. reg = <0x26000 0x2000>;
  404. #address-cells = <1>;
  405. #size-cells = <1>;
  406. ranges = <0x0 0x26000 0x2000>;
  407. clocks {
  408. #address-cells = <1>;
  409. #size-cells = <0>;
  410. pruss1_iepclk_mux: iepclk-mux@30 {
  411. reg = <0x30>;
  412. #clock-cells = <0>;
  413. clocks = <&sysclk_div>, /* icss_iep_gclk */
  414. <&pruss_ocp_gclk>; /* icss_ocp_gclk */
  415. };
  416. };
  417. };
  418. pruss1_mii_rt: mii-rt@32000 {
  419. compatible = "ti,pruss-mii", "syscon";
  420. reg = <0x32000 0x58>;
  421. };
  422. pruss1_intc: interrupt-controller@20000 {
  423. compatible = "ti,pruss-intc";
  424. reg = <0x20000 0x2000>;
  425. interrupt-controller;
  426. #interrupt-cells = <3>;
  427. interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
  428. <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
  429. <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
  430. <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
  431. <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
  432. <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
  433. <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
  434. interrupt-names = "host_intr0", "host_intr1",
  435. "host_intr2", "host_intr3",
  436. "host_intr4",
  437. "host_intr6", "host_intr7";
  438. ti,irqs-reserved = /bits/ 8 <0x20>; /* BIT(5) */
  439. };
  440. pru1_0: pru@34000 {
  441. compatible = "ti,am4376-pru";
  442. reg = <0x34000 0x3000>,
  443. <0x22000 0x400>,
  444. <0x22400 0x100>;
  445. reg-names = "iram", "control", "debug";
  446. firmware-name = "am437x-pru1_0-fw";
  447. };
  448. pru1_1: pru@38000 {
  449. compatible = "ti,am4376-pru";
  450. reg = <0x38000 0x3000>,
  451. <0x24000 0x400>,
  452. <0x24400 0x100>;
  453. reg-names = "iram", "control", "debug";
  454. firmware-name = "am437x-pru1_1-fw";
  455. };
  456. pruss1_mdio: mdio@32400 {
  457. compatible = "ti,davinci_mdio";
  458. reg = <0x32400 0x90>;
  459. clocks = <&dpll_core_m4_ck>;
  460. clock-names = "fck";
  461. bus_freq = <1000000>;
  462. #address-cells = <1>;
  463. #size-cells = <0>;
  464. };
  465. };
  466. pruss0: pruss@40000 {
  467. compatible = "ti,am4376-pruss0";
  468. reg = <0x40000 0x40000>;
  469. #address-cells = <1>;
  470. #size-cells = <1>;
  471. ranges;
  472. pruss0_mem: memories@40000 {
  473. reg = <0x40000 0x1000>,
  474. <0x42000 0x1000>;
  475. reg-names = "dram0", "dram1";
  476. };
  477. pruss0_cfg: cfg@66000 {
  478. compatible = "ti,pruss-cfg", "syscon";
  479. reg = <0x66000 0x2000>;
  480. #address-cells = <1>;
  481. #size-cells = <1>;
  482. ranges = <0x0 0x66000 0x2000>;
  483. clocks {
  484. #address-cells = <1>;
  485. #size-cells = <0>;
  486. pruss0_iepclk_mux: iepclk-mux@30 {
  487. reg = <0x30>;
  488. #clock-cells = <0>;
  489. clocks = <&sysclk_div>, /* icss_iep_gclk */
  490. <&pruss_ocp_gclk>; /* icss_ocp_gclk */
  491. };
  492. };
  493. };
  494. pruss0_mii_rt: mii-rt@72000 {
  495. compatible = "ti,pruss-mii", "syscon";
  496. reg = <0x72000 0x58>;
  497. status = "disabled";
  498. };
  499. pruss0_intc: interrupt-controller@60000 {
  500. compatible = "ti,pruss-intc";
  501. reg = <0x60000 0x2000>;
  502. interrupt-controller;
  503. #interrupt-cells = <3>;
  504. interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
  505. <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
  506. <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
  507. <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
  508. <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
  509. <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
  510. <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
  511. interrupt-names = "host_intr0", "host_intr1",
  512. "host_intr2", "host_intr3",
  513. "host_intr4",
  514. "host_intr6", "host_intr7";
  515. ti,irqs-reserved = /bits/ 8 <0x20>; /* BIT(5) */
  516. };
  517. pru0_0: pru@74000 {
  518. compatible = "ti,am4376-pru";
  519. reg = <0x74000 0x1000>,
  520. <0x62000 0x400>,
  521. <0x62400 0x100>;
  522. reg-names = "iram", "control", "debug";
  523. firmware-name = "am437x-pru0_0-fw";
  524. };
  525. pru0_1: pru@78000 {
  526. compatible = "ti,am4376-pru";
  527. reg = <0x78000 0x1000>,
  528. <0x64000 0x400>,
  529. <0x64400 0x100>;
  530. reg-names = "iram", "control", "debug";
  531. firmware-name = "am437x-pru0_1-fw";
  532. };
  533. };
  534. };
  535. target-module@50000000 {
  536. compatible = "ti,sysc-omap2", "ti,sysc";
  537. reg = <0x50000000 4>,
  538. <0x50000010 4>,
  539. <0x50000014 4>;
  540. reg-names = "rev", "sysc", "syss";
  541. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  542. <SYSC_IDLE_NO>,
  543. <SYSC_IDLE_SMART>;
  544. ti,syss-mask = <1>;
  545. clocks = <&l3s_clkctrl AM4_L3S_GPMC_CLKCTRL 0>;
  546. clock-names = "fck";
  547. #address-cells = <1>;
  548. #size-cells = <1>;
  549. ranges = <0x50000000 0x50000000 0x00001000>, /* regs */
  550. <0x00000000 0x00000000 0x40000000>; /* data */
  551. gpmc: gpmc@50000000 {
  552. compatible = "ti,am3352-gpmc";
  553. dmas = <&edma 52 0>;
  554. dma-names = "rxtx";
  555. clocks = <&l3s_gclk>;
  556. clock-names = "fck";
  557. reg = <0x50000000 0x2000>;
  558. interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
  559. gpmc,num-cs = <7>;
  560. gpmc,num-waitpins = <2>;
  561. #address-cells = <2>;
  562. #size-cells = <1>;
  563. interrupt-controller;
  564. #interrupt-cells = <2>;
  565. gpio-controller;
  566. #gpio-cells = <2>;
  567. status = "disabled";
  568. };
  569. };
  570. target-module@47900000 {
  571. compatible = "ti,sysc-omap4", "ti,sysc";
  572. reg = <0x47900000 0x4>,
  573. <0x47900010 0x4>;
  574. reg-names = "rev", "sysc";
  575. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  576. <SYSC_IDLE_NO>,
  577. <SYSC_IDLE_SMART>,
  578. <SYSC_IDLE_SMART_WKUP>;
  579. clocks = <&l3s_clkctrl AM4_L3S_QSPI_CLKCTRL 0>;
  580. clock-names = "fck";
  581. #address-cells = <1>;
  582. #size-cells = <1>;
  583. ranges = <0x0 0x47900000 0x1000>,
  584. <0x30000000 0x30000000 0x4000000>;
  585. qspi: spi@0 {
  586. compatible = "ti,am4372-qspi";
  587. reg = <0 0x100>,
  588. <0x30000000 0x4000000>;
  589. reg-names = "qspi_base", "qspi_mmap";
  590. clocks = <&dpll_per_m2_div4_ck>;
  591. clock-names = "fck";
  592. #address-cells = <1>;
  593. #size-cells = <0>;
  594. interrupts = <0 138 0x4>;
  595. num-cs = <4>;
  596. };
  597. };
  598. target-module@40300000 {
  599. compatible = "ti,sysc-omap4-simple", "ti,sysc";
  600. clocks = <&l3_clkctrl AM4_L3_OCMCRAM_CLKCTRL 0>;
  601. clock-names = "fck";
  602. ti,no-idle;
  603. #address-cells = <1>;
  604. #size-cells = <1>;
  605. ranges = <0 0x40300000 0x40000>;
  606. ocmcram: sram@0 {
  607. compatible = "mmio-sram";
  608. reg = <0 0x40000>; /* 256k */
  609. ranges = <0 0 0x40000>;
  610. #address-cells = <1>;
  611. #size-cells = <1>;
  612. pm_sram_code: pm-code-sram@0 {
  613. compatible = "ti,sram";
  614. reg = <0x0 0x1000>;
  615. protect-exec;
  616. };
  617. pm_sram_data: pm-data-sram@1000 {
  618. compatible = "ti,sram";
  619. reg = <0x1000 0x1000>;
  620. pool;
  621. };
  622. };
  623. };
  624. target-module@56000000 {
  625. compatible = "ti,sysc-omap4", "ti,sysc";
  626. reg = <0x5600fe00 0x4>,
  627. <0x5600fe10 0x4>;
  628. reg-names = "rev", "sysc";
  629. ti,sysc-midle = <SYSC_IDLE_FORCE>,
  630. <SYSC_IDLE_NO>,
  631. <SYSC_IDLE_SMART>;
  632. ti,sysc-sidle = <SYSC_IDLE_FORCE>,
  633. <SYSC_IDLE_NO>,
  634. <SYSC_IDLE_SMART>;
  635. clocks = <&gfx_l3_clkctrl AM4_GFX_L3_GFX_CLKCTRL 0>;
  636. clock-names = "fck";
  637. power-domains = <&prm_gfx>;
  638. resets = <&prm_gfx 0>;
  639. reset-names = "rstctrl";
  640. #address-cells = <1>;
  641. #size-cells = <1>;
  642. ranges = <0 0x56000000 0x1000000>;
  643. };
  644. };
  645. };
  646. #include "am437x-l4.dtsi"
  647. #include "am43xx-clocks.dtsi"
  648. &prcm {
  649. prm_mpu: prm@300 {
  650. compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
  651. reg = <0x300 0x100>;
  652. #power-domain-cells = <0>;
  653. };
  654. prm_gfx: prm@400 {
  655. compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
  656. reg = <0x400 0x100>;
  657. #power-domain-cells = <0>;
  658. #reset-cells = <1>;
  659. };
  660. prm_rtc: prm@500 {
  661. compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
  662. reg = <0x500 0x100>;
  663. #power-domain-cells = <0>;
  664. };
  665. prm_tamper: prm@600 {
  666. compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
  667. reg = <0x600 0x100>;
  668. #power-domain-cells = <0>;
  669. };
  670. prm_cefuse: prm@700 {
  671. compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
  672. reg = <0x700 0x100>;
  673. #power-domain-cells = <0>;
  674. };
  675. prm_per: prm@800 {
  676. compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
  677. reg = <0x800 0x100>;
  678. #reset-cells = <1>;
  679. #power-domain-cells = <0>;
  680. };
  681. prm_wkup: prm@2000 {
  682. compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
  683. reg = <0x2000 0x100>;
  684. #reset-cells = <1>;
  685. #power-domain-cells = <0>;
  686. };
  687. prm_device: prm@4000 {
  688. compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
  689. reg = <0x4000 0x100>;
  690. #reset-cells = <1>;
  691. };
  692. };
  693. /* Preferred always-on timer for clocksource */
  694. &timer1_target {
  695. ti,no-reset-on-init;
  696. ti,no-idle;
  697. clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_TIMER1_CLKCTRL 0>,
  698. <&l4_wkup_clkctrl AM4_L4_WKUP_L4_WKUP_CLKCTRL 0>;
  699. clock-names = "fck", "ick";
  700. timer@0 {
  701. assigned-clocks = <&timer1_fck>;
  702. assigned-clock-parents = <&sys_clkin_ck>;
  703. };
  704. };
  705. /* Preferred timer for clockevent */
  706. &timer2_target {
  707. ti,no-reset-on-init;
  708. ti,no-idle;
  709. clocks = <&l4ls_clkctrl AM4_L4LS_TIMER2_CLKCTRL 0>,
  710. <&l4ls_clkctrl AM4_L4LS_L4_LS_CLKCTRL 0>;
  711. clock-names = "fck", "ick";
  712. timer@0 {
  713. assigned-clocks = <&timer2_fck>;
  714. assigned-clock-parents = <&sys_clkin_ck>;
  715. };
  716. };