armada-38x.dtsi 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. /*
  2. * Device Tree Include file for Marvell Armada 38x family of SoCs.
  3. *
  4. * Copyright (C) 2014 Marvell
  5. *
  6. * Lior Amsalem <alior@marvell.com>
  7. * Gregory CLEMENT <gregory.clement@free-electrons.com>
  8. * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
  9. *
  10. * This file is licensed under the terms of the GNU General Public
  11. * License version 2. This program is licensed "as is" without any
  12. * warranty of any kind, whether express or implied.
  13. */
  14. #include "skeleton.dtsi"
  15. #include <dt-bindings/interrupt-controller/arm-gic.h>
  16. #include <dt-bindings/interrupt-controller/irq.h>
  17. #define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
  18. / {
  19. model = "Marvell Armada 38x family SoC";
  20. compatible = "marvell,armada380";
  21. aliases {
  22. gpio0 = &gpio0;
  23. gpio1 = &gpio1;
  24. eth0 = &eth0;
  25. eth1 = &eth1;
  26. eth2 = &eth2;
  27. };
  28. soc {
  29. compatible = "marvell,armada380-mbus", "marvell,armada370-mbus",
  30. "simple-bus";
  31. #address-cells = <2>;
  32. #size-cells = <1>;
  33. controller = <&mbusc>;
  34. interrupt-parent = <&gic>;
  35. pcie-mem-aperture = <0xe0000000 0x8000000>;
  36. pcie-io-aperture = <0xe8000000 0x100000>;
  37. bootrom {
  38. compatible = "marvell,bootrom";
  39. reg = <MBUS_ID(0x01, 0x1d) 0 0x200000>;
  40. };
  41. devbus-bootcs {
  42. compatible = "marvell,mvebu-devbus";
  43. reg = <MBUS_ID(0xf0, 0x01) 0x10400 0x8>;
  44. ranges = <0 MBUS_ID(0x01, 0x2f) 0 0xffffffff>;
  45. #address-cells = <1>;
  46. #size-cells = <1>;
  47. clocks = <&coreclk 0>;
  48. status = "disabled";
  49. };
  50. devbus-cs0 {
  51. compatible = "marvell,mvebu-devbus";
  52. reg = <MBUS_ID(0xf0, 0x01) 0x10408 0x8>;
  53. ranges = <0 MBUS_ID(0x01, 0x3e) 0 0xffffffff>;
  54. #address-cells = <1>;
  55. #size-cells = <1>;
  56. clocks = <&coreclk 0>;
  57. status = "disabled";
  58. };
  59. devbus-cs1 {
  60. compatible = "marvell,mvebu-devbus";
  61. reg = <MBUS_ID(0xf0, 0x01) 0x10410 0x8>;
  62. ranges = <0 MBUS_ID(0x01, 0x3d) 0 0xffffffff>;
  63. #address-cells = <1>;
  64. #size-cells = <1>;
  65. clocks = <&coreclk 0>;
  66. status = "disabled";
  67. };
  68. devbus-cs2 {
  69. compatible = "marvell,mvebu-devbus";
  70. reg = <MBUS_ID(0xf0, 0x01) 0x10418 0x8>;
  71. ranges = <0 MBUS_ID(0x01, 0x3b) 0 0xffffffff>;
  72. #address-cells = <1>;
  73. #size-cells = <1>;
  74. clocks = <&coreclk 0>;
  75. status = "disabled";
  76. };
  77. devbus-cs3 {
  78. compatible = "marvell,mvebu-devbus";
  79. reg = <MBUS_ID(0xf0, 0x01) 0x10420 0x8>;
  80. ranges = <0 MBUS_ID(0x01, 0x37) 0 0xffffffff>;
  81. #address-cells = <1>;
  82. #size-cells = <1>;
  83. clocks = <&coreclk 0>;
  84. status = "disabled";
  85. };
  86. internal-regs {
  87. compatible = "simple-bus";
  88. #address-cells = <1>;
  89. #size-cells = <1>;
  90. ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
  91. L2: cache-controller@8000 {
  92. compatible = "arm,pl310-cache";
  93. reg = <0x8000 0x1000>;
  94. cache-unified;
  95. cache-level = <2>;
  96. };
  97. scu@c000 {
  98. compatible = "arm,cortex-a9-scu";
  99. reg = <0xc000 0x58>;
  100. };
  101. timer@c600 {
  102. compatible = "arm,cortex-a9-twd-timer";
  103. reg = <0xc600 0x20>;
  104. interrupts = <GIC_PPI 13 (IRQ_TYPE_EDGE_RISING | GIC_CPU_MASK_SIMPLE(2))>;
  105. clocks = <&coreclk 2>;
  106. };
  107. gic: interrupt-controller@d000 {
  108. compatible = "arm,cortex-a9-gic";
  109. #interrupt-cells = <3>;
  110. #size-cells = <0>;
  111. interrupt-controller;
  112. reg = <0xd000 0x1000>,
  113. <0xc100 0x100>;
  114. };
  115. spi0: spi@10600 {
  116. compatible = "marvell,orion-spi";
  117. reg = <0x10600 0x50>;
  118. #address-cells = <1>;
  119. #size-cells = <0>;
  120. cell-index = <0>;
  121. interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
  122. clocks = <&coreclk 0>;
  123. status = "disabled";
  124. };
  125. spi1: spi@10680 {
  126. compatible = "marvell,orion-spi";
  127. reg = <0x10680 0x50>;
  128. #address-cells = <1>;
  129. #size-cells = <0>;
  130. cell-index = <1>;
  131. interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
  132. clocks = <&coreclk 0>;
  133. status = "disabled";
  134. };
  135. i2c0: i2c@11000 {
  136. compatible = "marvell,mv64xxx-i2c";
  137. reg = <0x11000 0x20>;
  138. #address-cells = <1>;
  139. #size-cells = <0>;
  140. interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
  141. timeout-ms = <1000>;
  142. clocks = <&coreclk 0>;
  143. status = "disabled";
  144. };
  145. i2c1: i2c@11100 {
  146. compatible = "marvell,mv64xxx-i2c";
  147. reg = <0x11100 0x20>;
  148. #address-cells = <1>;
  149. #size-cells = <0>;
  150. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  151. timeout-ms = <1000>;
  152. clocks = <&coreclk 0>;
  153. status = "disabled";
  154. };
  155. serial@12000 {
  156. compatible = "snps,dw-apb-uart";
  157. reg = <0x12000 0x100>;
  158. reg-shift = <2>;
  159. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  160. reg-io-width = <1>;
  161. clocks = <&coreclk 0>;
  162. status = "disabled";
  163. };
  164. serial@12100 {
  165. compatible = "snps,dw-apb-uart";
  166. reg = <0x12100 0x100>;
  167. reg-shift = <2>;
  168. interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
  169. reg-io-width = <1>;
  170. clocks = <&coreclk 0>;
  171. status = "disabled";
  172. };
  173. pinctrl {
  174. compatible = "marvell,mv88f6820-pinctrl";
  175. reg = <0x18000 0x20>;
  176. };
  177. gpio0: gpio@18100 {
  178. compatible = "marvell,orion-gpio";
  179. reg = <0x18100 0x40>;
  180. ngpios = <32>;
  181. gpio-controller;
  182. #gpio-cells = <2>;
  183. interrupt-controller;
  184. #interrupt-cells = <2>;
  185. interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
  186. <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
  187. <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
  188. <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
  189. };
  190. gpio1: gpio@18140 {
  191. compatible = "marvell,orion-gpio";
  192. reg = <0x18140 0x40>;
  193. ngpios = <28>;
  194. gpio-controller;
  195. #gpio-cells = <2>;
  196. interrupt-controller;
  197. #interrupt-cells = <2>;
  198. interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
  199. <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
  200. <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
  201. <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
  202. };
  203. system-controller@18200 {
  204. compatible = "marvell,armada-380-system-controller",
  205. "marvell,armada-370-xp-system-controller";
  206. reg = <0x18200 0x100>;
  207. };
  208. gateclk: clock-gating-control@18220 {
  209. compatible = "marvell,armada-380-gating-clock";
  210. reg = <0x18220 0x4>;
  211. clocks = <&coreclk 0>;
  212. #clock-cells = <1>;
  213. };
  214. coreclk: mvebu-sar@18600 {
  215. compatible = "marvell,armada-380-core-clock";
  216. reg = <0x18600 0x04>;
  217. #clock-cells = <1>;
  218. };
  219. mbusc: mbus-controller@20000 {
  220. compatible = "marvell,mbus-controller";
  221. reg = <0x20000 0x100>, <0x20180 0x20>;
  222. };
  223. mpic: interrupt-controller@20000 {
  224. compatible = "marvell,mpic";
  225. reg = <0x20a00 0x2d0>, <0x21070 0x58>;
  226. #interrupt-cells = <1>;
  227. #size-cells = <1>;
  228. interrupt-controller;
  229. msi-controller;
  230. interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
  231. };
  232. timer@20300 {
  233. compatible = "marvell,armada-380-timer",
  234. "marvell,armada-xp-timer";
  235. reg = <0x20300 0x30>, <0x21040 0x30>;
  236. interrupts-extended = <&gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
  237. <&gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
  238. <&gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
  239. <&gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
  240. <&mpic 5>,
  241. <&mpic 6>;
  242. clocks = <&coreclk 2>, <&refclk>;
  243. clock-names = "nbclk", "fixed";
  244. };
  245. watchdog@20300 {
  246. compatible = "marvell,armada-380-wdt";
  247. reg = <0x20300 0x34>, <0x20704 0x4>, <0x18260 0x4>;
  248. clocks = <&coreclk 2>, <&refclk>;
  249. clock-names = "nbclk", "fixed";
  250. };
  251. cpurst@20800 {
  252. compatible = "marvell,armada-370-cpu-reset";
  253. reg = <0x20800 0x10>;
  254. };
  255. mpcore-soc-ctrl@20d20 {
  256. compatible = "marvell,armada-380-mpcore-soc-ctrl";
  257. reg = <0x20d20 0x6c>;
  258. };
  259. coherency-fabric@21010 {
  260. compatible = "marvell,armada-380-coherency-fabric";
  261. reg = <0x21010 0x1c>;
  262. };
  263. pmsu@22000 {
  264. compatible = "marvell,armada-380-pmsu";
  265. reg = <0x22000 0x1000>;
  266. };
  267. eth1: ethernet@30000 {
  268. compatible = "marvell,armada-370-neta";
  269. reg = <0x30000 0x4000>;
  270. interrupts-extended = <&mpic 10>;
  271. clocks = <&gateclk 3>;
  272. status = "disabled";
  273. };
  274. eth2: ethernet@34000 {
  275. compatible = "marvell,armada-370-neta";
  276. reg = <0x34000 0x4000>;
  277. interrupts-extended = <&mpic 12>;
  278. clocks = <&gateclk 2>;
  279. status = "disabled";
  280. };
  281. usb@50000 {
  282. compatible = "marvell,orion-ehci";
  283. reg = <0x58000 0x500>;
  284. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
  285. clocks = <&gateclk 18>;
  286. status = "disabled";
  287. };
  288. xor@60800 {
  289. compatible = "marvell,orion-xor";
  290. reg = <0x60800 0x100
  291. 0x60a00 0x100>;
  292. clocks = <&gateclk 22>;
  293. status = "okay";
  294. xor00 {
  295. interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
  296. dmacap,memcpy;
  297. dmacap,xor;
  298. };
  299. xor01 {
  300. interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
  301. dmacap,memcpy;
  302. dmacap,xor;
  303. dmacap,memset;
  304. };
  305. };
  306. xor@60900 {
  307. compatible = "marvell,orion-xor";
  308. reg = <0x60900 0x100
  309. 0x60b00 0x100>;
  310. clocks = <&gateclk 28>;
  311. status = "okay";
  312. xor10 {
  313. interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
  314. dmacap,memcpy;
  315. dmacap,xor;
  316. };
  317. xor11 {
  318. interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
  319. dmacap,memcpy;
  320. dmacap,xor;
  321. dmacap,memset;
  322. };
  323. };
  324. eth0: ethernet@70000 {
  325. compatible = "marvell,armada-370-neta";
  326. reg = <0x70000 0x4000>;
  327. interrupts-extended = <&mpic 8>;
  328. clocks = <&gateclk 4>;
  329. status = "disabled";
  330. };
  331. mdio {
  332. #address-cells = <1>;
  333. #size-cells = <0>;
  334. compatible = "marvell,orion-mdio";
  335. reg = <0x72004 0x4>;
  336. clocks = <&gateclk 4>;
  337. };
  338. sata@a8000 {
  339. compatible = "marvell,armada-380-ahci";
  340. reg = <0xa8000 0x2000>;
  341. interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
  342. clocks = <&gateclk 15>;
  343. status = "disabled";
  344. };
  345. sata@e0000 {
  346. compatible = "marvell,armada-380-ahci";
  347. reg = <0xe0000 0x2000>;
  348. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  349. clocks = <&gateclk 30>;
  350. status = "disabled";
  351. };
  352. coredivclk: clock@e4250 {
  353. compatible = "marvell,armada-380-corediv-clock";
  354. reg = <0xe4250 0xc>;
  355. #clock-cells = <1>;
  356. clocks = <&mainpll>;
  357. clock-output-names = "nand";
  358. };
  359. thermal@e8078 {
  360. compatible = "marvell,armada380-thermal";
  361. reg = <0xe4078 0x4>, <0xe4074 0x4>;
  362. status = "okay";
  363. };
  364. flash@d0000 {
  365. compatible = "marvell,armada370-nand";
  366. reg = <0xd0000 0x54>;
  367. #address-cells = <1>;
  368. #size-cells = <1>;
  369. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  370. clocks = <&coredivclk 0>;
  371. status = "disabled";
  372. };
  373. sdhci@d8000 {
  374. compatible = "marvell,armada-380-sdhci";
  375. reg = <0xd8000 0x1000>, <0xdc000 0x100>;
  376. interrupts = <0 25 0x4>;
  377. clocks = <&gateclk 17>;
  378. mrvl,clk-delay-cycles = <0x1F>;
  379. status = "disabled";
  380. };
  381. usb3@f0000 {
  382. compatible = "marvell,armada-380-xhci";
  383. reg = <0xf0000 0x4000>,<0xf4000 0x4000>;
  384. interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
  385. clocks = <&gateclk 9>;
  386. status = "disabled";
  387. };
  388. usb3@f8000 {
  389. compatible = "marvell,armada-380-xhci";
  390. reg = <0xf8000 0x4000>,<0xfc000 0x4000>;
  391. interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  392. clocks = <&gateclk 10>;
  393. status = "disabled";
  394. };
  395. };
  396. };
  397. clocks {
  398. /* 2 GHz fixed main PLL */
  399. mainpll: mainpll {
  400. compatible = "fixed-clock";
  401. #clock-cells = <0>;
  402. clock-frequency = <2000000000>;
  403. };
  404. /* 25 MHz reference crystal */
  405. refclk: oscillator {
  406. compatible = "fixed-clock";
  407. #clock-cells = <0>;
  408. clock-frequency = <25000000>;
  409. };
  410. };
  411. };