berlin2q.dtsi 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. /*
  2. * Copyright (C) 2014 Antoine Ténart <antoine.tenart@free-electrons.com>
  3. *
  4. * This file is licensed under the terms of the GNU General Public
  5. * License version 2. This program is licensed "as is" without any
  6. * warranty of any kind, whether express or implied.
  7. */
  8. #include <dt-bindings/clock/berlin2q.h>
  9. #include <dt-bindings/interrupt-controller/arm-gic.h>
  10. #include "skeleton.dtsi"
  11. / {
  12. model = "Marvell Armada 1500 pro (BG2-Q) SoC";
  13. compatible = "marvell,berlin2q", "marvell,berlin";
  14. cpus {
  15. #address-cells = <1>;
  16. #size-cells = <0>;
  17. enable-method = "marvell,berlin-smp";
  18. cpu@0 {
  19. compatible = "arm,cortex-a9";
  20. device_type = "cpu";
  21. next-level-cache = <&l2>;
  22. reg = <0>;
  23. };
  24. cpu@1 {
  25. compatible = "arm,cortex-a9";
  26. device_type = "cpu";
  27. next-level-cache = <&l2>;
  28. reg = <1>;
  29. };
  30. cpu@2 {
  31. compatible = "arm,cortex-a9";
  32. device_type = "cpu";
  33. next-level-cache = <&l2>;
  34. reg = <2>;
  35. };
  36. cpu@3 {
  37. compatible = "arm,cortex-a9";
  38. device_type = "cpu";
  39. next-level-cache = <&l2>;
  40. reg = <3>;
  41. };
  42. };
  43. refclk: oscillator {
  44. compatible = "fixed-clock";
  45. #clock-cells = <0>;
  46. clock-frequency = <25000000>;
  47. };
  48. soc {
  49. compatible = "simple-bus";
  50. #address-cells = <1>;
  51. #size-cells = <1>;
  52. ranges = <0 0xf7000000 0x1000000>;
  53. interrupt-parent = <&gic>;
  54. sdhci0: sdhci@ab0000 {
  55. compatible = "mrvl,pxav3-mmc";
  56. reg = <0xab0000 0x200>;
  57. clocks = <&chip CLKID_SDIO1XIN>;
  58. interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  59. status = "disabled";
  60. };
  61. sdhci1: sdhci@ab0800 {
  62. compatible = "mrvl,pxav3-mmc";
  63. reg = <0xab0800 0x200>;
  64. clocks = <&chip CLKID_SDIO1XIN>;
  65. interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
  66. status = "disabled";
  67. };
  68. sdhci2: sdhci@ab1000 {
  69. compatible = "mrvl,pxav3-mmc";
  70. reg = <0xab1000 0x200>;
  71. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  72. clocks = <&chip CLKID_NFC_ECC>, <&chip CLKID_NFC>;
  73. clock-names = "io", "core";
  74. status = "disabled";
  75. };
  76. l2: l2-cache-controller@ac0000 {
  77. compatible = "arm,pl310-cache";
  78. reg = <0xac0000 0x1000>;
  79. cache-level = <2>;
  80. arm,data-latency = <2 2 2>;
  81. arm,tag-latency = <2 2 2>;
  82. };
  83. scu: snoop-control-unit@ad0000 {
  84. compatible = "arm,cortex-a9-scu";
  85. reg = <0xad0000 0x58>;
  86. };
  87. local-timer@ad0600 {
  88. compatible = "arm,cortex-a9-twd-timer";
  89. reg = <0xad0600 0x20>;
  90. clocks = <&chip CLKID_TWD>;
  91. interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
  92. };
  93. gic: interrupt-controller@ad1000 {
  94. compatible = "arm,cortex-a9-gic";
  95. reg = <0xad1000 0x1000>, <0xad0100 0x100>;
  96. interrupt-controller;
  97. #interrupt-cells = <3>;
  98. };
  99. eth0: ethernet@b90000 {
  100. compatible = "marvell,pxa168-eth";
  101. reg = <0xb90000 0x10000>;
  102. clocks = <&chip CLKID_GETH0>;
  103. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  104. /* set by bootloader */
  105. local-mac-address = [00 00 00 00 00 00];
  106. #address-cells = <1>;
  107. #size-cells = <0>;
  108. phy-handle = <&ethphy0>;
  109. status = "disabled";
  110. ethphy0: ethernet-phy@0 {
  111. reg = <0>;
  112. };
  113. };
  114. cpu-ctrl@dd0000 {
  115. compatible = "marvell,berlin-cpu-ctrl";
  116. reg = <0xdd0000 0x10000>;
  117. };
  118. apb@e80000 {
  119. compatible = "simple-bus";
  120. #address-cells = <1>;
  121. #size-cells = <1>;
  122. ranges = <0 0xe80000 0x10000>;
  123. interrupt-parent = <&aic>;
  124. gpio0: gpio@0400 {
  125. compatible = "snps,dw-apb-gpio";
  126. reg = <0x0400 0x400>;
  127. #address-cells = <1>;
  128. #size-cells = <0>;
  129. porta: gpio-port@0 {
  130. compatible = "snps,dw-apb-gpio-port";
  131. gpio-controller;
  132. #gpio-cells = <2>;
  133. snps,nr-gpios = <32>;
  134. reg = <0>;
  135. interrupt-controller;
  136. #interrupt-cells = <2>;
  137. interrupts = <0>;
  138. };
  139. };
  140. gpio1: gpio@0800 {
  141. compatible = "snps,dw-apb-gpio";
  142. reg = <0x0800 0x400>;
  143. #address-cells = <1>;
  144. #size-cells = <0>;
  145. portb: gpio-port@1 {
  146. compatible = "snps,dw-apb-gpio-port";
  147. gpio-controller;
  148. #gpio-cells = <2>;
  149. snps,nr-gpios = <32>;
  150. reg = <0>;
  151. interrupt-controller;
  152. #interrupt-cells = <2>;
  153. interrupts = <1>;
  154. };
  155. };
  156. gpio2: gpio@0c00 {
  157. compatible = "snps,dw-apb-gpio";
  158. reg = <0x0c00 0x400>;
  159. #address-cells = <1>;
  160. #size-cells = <0>;
  161. portc: gpio-port@2 {
  162. compatible = "snps,dw-apb-gpio-port";
  163. gpio-controller;
  164. #gpio-cells = <2>;
  165. snps,nr-gpios = <32>;
  166. reg = <0>;
  167. interrupt-controller;
  168. #interrupt-cells = <2>;
  169. interrupts = <2>;
  170. };
  171. };
  172. gpio3: gpio@1000 {
  173. compatible = "snps,dw-apb-gpio";
  174. reg = <0x1000 0x400>;
  175. #address-cells = <1>;
  176. #size-cells = <0>;
  177. portd: gpio-port@3 {
  178. compatible = "snps,dw-apb-gpio-port";
  179. gpio-controller;
  180. #gpio-cells = <2>;
  181. snps,nr-gpios = <32>;
  182. reg = <0>;
  183. interrupt-controller;
  184. #interrupt-cells = <2>;
  185. interrupts = <3>;
  186. };
  187. };
  188. i2c0: i2c@1400 {
  189. compatible = "snps,designware-i2c";
  190. #address-cells = <1>;
  191. #size-cells = <0>;
  192. reg = <0x1400 0x100>;
  193. interrupt-parent = <&aic>;
  194. interrupts = <4>;
  195. clocks = <&chip CLKID_CFG>;
  196. pinctrl-0 = <&twsi0_pmux>;
  197. pinctrl-names = "default";
  198. status = "disabled";
  199. };
  200. i2c1: i2c@1800 {
  201. compatible = "snps,designware-i2c";
  202. #address-cells = <1>;
  203. #size-cells = <0>;
  204. reg = <0x1800 0x100>;
  205. interrupt-parent = <&aic>;
  206. interrupts = <5>;
  207. clocks = <&chip CLKID_CFG>;
  208. pinctrl-0 = <&twsi1_pmux>;
  209. pinctrl-names = "default";
  210. status = "disabled";
  211. };
  212. timer0: timer@2c00 {
  213. compatible = "snps,dw-apb-timer";
  214. reg = <0x2c00 0x14>;
  215. clocks = <&chip CLKID_CFG>;
  216. clock-names = "timer";
  217. interrupts = <8>;
  218. };
  219. timer1: timer@2c14 {
  220. compatible = "snps,dw-apb-timer";
  221. reg = <0x2c14 0x14>;
  222. clocks = <&chip CLKID_CFG>;
  223. clock-names = "timer";
  224. status = "disabled";
  225. };
  226. timer2: timer@2c28 {
  227. compatible = "snps,dw-apb-timer";
  228. reg = <0x2c28 0x14>;
  229. clocks = <&chip CLKID_CFG>;
  230. clock-names = "timer";
  231. status = "disabled";
  232. };
  233. timer3: timer@2c3c {
  234. compatible = "snps,dw-apb-timer";
  235. reg = <0x2c3c 0x14>;
  236. clocks = <&chip CLKID_CFG>;
  237. clock-names = "timer";
  238. status = "disabled";
  239. };
  240. timer4: timer@2c50 {
  241. compatible = "snps,dw-apb-timer";
  242. reg = <0x2c50 0x14>;
  243. clocks = <&chip CLKID_CFG>;
  244. clock-names = "timer";
  245. status = "disabled";
  246. };
  247. timer5: timer@2c64 {
  248. compatible = "snps,dw-apb-timer";
  249. reg = <0x2c64 0x14>;
  250. clocks = <&chip CLKID_CFG>;
  251. clock-names = "timer";
  252. status = "disabled";
  253. };
  254. timer6: timer@2c78 {
  255. compatible = "snps,dw-apb-timer";
  256. reg = <0x2c78 0x14>;
  257. clocks = <&chip CLKID_CFG>;
  258. clock-names = "timer";
  259. status = "disabled";
  260. };
  261. timer7: timer@2c8c {
  262. compatible = "snps,dw-apb-timer";
  263. reg = <0x2c8c 0x14>;
  264. clocks = <&chip CLKID_CFG>;
  265. clock-names = "timer";
  266. status = "disabled";
  267. };
  268. aic: interrupt-controller@3800 {
  269. compatible = "snps,dw-apb-ictl";
  270. reg = <0x3800 0x30>;
  271. interrupt-controller;
  272. #interrupt-cells = <1>;
  273. interrupt-parent = <&gic>;
  274. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  275. };
  276. };
  277. chip: chip-control@ea0000 {
  278. compatible = "marvell,berlin2q-chip-ctrl";
  279. #clock-cells = <1>;
  280. reg = <0xea0000 0x400>, <0xdd0170 0x10>;
  281. clocks = <&refclk>;
  282. clock-names = "refclk";
  283. twsi0_pmux: twsi0-pmux {
  284. groups = "G6";
  285. function = "twsi0";
  286. };
  287. twsi1_pmux: twsi1-pmux {
  288. groups = "G7";
  289. function = "twsi1";
  290. };
  291. };
  292. apb@fc0000 {
  293. compatible = "simple-bus";
  294. #address-cells = <1>;
  295. #size-cells = <1>;
  296. ranges = <0 0xfc0000 0x10000>;
  297. interrupt-parent = <&sic>;
  298. sm_gpio1: gpio@5000 {
  299. compatible = "snps,dw-apb-gpio";
  300. reg = <0x5000 0x400>;
  301. #address-cells = <1>;
  302. #size-cells = <0>;
  303. portf: gpio-port@5 {
  304. compatible = "snps,dw-apb-gpio-port";
  305. gpio-controller;
  306. #gpio-cells = <2>;
  307. snps,nr-gpios = <32>;
  308. reg = <0>;
  309. };
  310. };
  311. i2c2: i2c@7000 {
  312. compatible = "snps,designware-i2c";
  313. #address-cells = <1>;
  314. #size-cells = <0>;
  315. reg = <0x7000 0x100>;
  316. interrupt-parent = <&sic>;
  317. interrupts = <6>;
  318. clocks = <&refclk>;
  319. pinctrl-0 = <&twsi2_pmux>;
  320. pinctrl-names = "default";
  321. status = "disabled";
  322. };
  323. i2c3: i2c@8000 {
  324. compatible = "snps,designware-i2c";
  325. #address-cells = <1>;
  326. #size-cells = <0>;
  327. reg = <0x8000 0x100>;
  328. interrupt-parent = <&sic>;
  329. interrupts = <7>;
  330. clocks = <&refclk>;
  331. pinctrl-0 = <&twsi3_pmux>;
  332. pinctrl-names = "default";
  333. status = "disabled";
  334. };
  335. uart0: uart@9000 {
  336. compatible = "snps,dw-apb-uart";
  337. reg = <0x9000 0x100>;
  338. interrupt-parent = <&sic>;
  339. interrupts = <8>;
  340. clocks = <&refclk>;
  341. reg-shift = <2>;
  342. pinctrl-0 = <&uart0_pmux>;
  343. pinctrl-names = "default";
  344. status = "disabled";
  345. };
  346. uart1: uart@a000 {
  347. compatible = "snps,dw-apb-uart";
  348. reg = <0xa000 0x100>;
  349. interrupt-parent = <&sic>;
  350. interrupts = <9>;
  351. clocks = <&refclk>;
  352. reg-shift = <2>;
  353. pinctrl-0 = <&uart1_pmux>;
  354. pinctrl-names = "default";
  355. status = "disabled";
  356. };
  357. sm_gpio0: gpio@c000 {
  358. compatible = "snps,dw-apb-gpio";
  359. reg = <0xc000 0x400>;
  360. #address-cells = <1>;
  361. #size-cells = <0>;
  362. porte: gpio-port@4 {
  363. compatible = "snps,dw-apb-gpio-port";
  364. gpio-controller;
  365. #gpio-cells = <2>;
  366. snps,nr-gpios = <32>;
  367. reg = <0>;
  368. };
  369. };
  370. sysctrl: pin-controller@d000 {
  371. compatible = "marvell,berlin2q-system-ctrl";
  372. reg = <0xd000 0x100>;
  373. uart0_pmux: uart0-pmux {
  374. groups = "GSM12";
  375. function = "uart0";
  376. };
  377. uart1_pmux: uart1-pmux {
  378. groups = "GSM14";
  379. function = "uart1";
  380. };
  381. twsi2_pmux: twsi2-pmux {
  382. groups = "GSM13";
  383. function = "twsi2";
  384. };
  385. twsi3_pmux: twsi3-pmux {
  386. groups = "GSM14";
  387. function = "twsi3";
  388. };
  389. };
  390. sic: interrupt-controller@e000 {
  391. compatible = "snps,dw-apb-ictl";
  392. reg = <0xe000 0x30>;
  393. interrupt-controller;
  394. #interrupt-cells = <1>;
  395. interrupt-parent = <&gic>;
  396. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
  397. };
  398. };
  399. };
  400. };