berlin2.dtsi 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. /*
  2. * Device Tree Include file for Marvell Armada 1500 (Berlin BG2) SoC
  3. *
  4. * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
  5. *
  6. * based on GPL'ed 2.6 kernel sources
  7. * (c) Marvell International Ltd.
  8. *
  9. * This file is licensed under the terms of the GNU General Public
  10. * License version 2. This program is licensed "as is" without any
  11. * warranty of any kind, whether express or implied.
  12. */
  13. #include "skeleton.dtsi"
  14. #include <dt-bindings/clock/berlin2.h>
  15. #include <dt-bindings/interrupt-controller/arm-gic.h>
  16. / {
  17. model = "Marvell Armada 1500 (BG2) SoC";
  18. compatible = "marvell,berlin2", "marvell,berlin";
  19. cpus {
  20. #address-cells = <1>;
  21. #size-cells = <0>;
  22. enable-method = "marvell,berlin-smp";
  23. cpu@0 {
  24. compatible = "marvell,pj4b";
  25. device_type = "cpu";
  26. next-level-cache = <&l2>;
  27. reg = <0>;
  28. };
  29. cpu@1 {
  30. compatible = "marvell,pj4b";
  31. device_type = "cpu";
  32. next-level-cache = <&l2>;
  33. reg = <1>;
  34. };
  35. };
  36. refclk: oscillator {
  37. compatible = "fixed-clock";
  38. #clock-cells = <0>;
  39. clock-frequency = <25000000>;
  40. };
  41. soc {
  42. compatible = "simple-bus";
  43. #address-cells = <1>;
  44. #size-cells = <1>;
  45. interrupt-parent = <&gic>;
  46. ranges = <0 0xf7000000 0x1000000>;
  47. l2: l2-cache-controller@ac0000 {
  48. compatible = "marvell,tauros3-cache", "arm,pl310-cache";
  49. reg = <0xac0000 0x1000>;
  50. cache-unified;
  51. cache-level = <2>;
  52. };
  53. scu: snoop-control-unit@ad0000 {
  54. compatible = "arm,cortex-a9-scu";
  55. reg = <0xad0000 0x58>;
  56. };
  57. gic: interrupt-controller@ad1000 {
  58. compatible = "arm,cortex-a9-gic";
  59. reg = <0xad1000 0x1000>, <0xad0100 0x0100>;
  60. interrupt-controller;
  61. #interrupt-cells = <3>;
  62. };
  63. local-timer@ad0600 {
  64. compatible = "arm,cortex-a9-twd-timer";
  65. reg = <0xad0600 0x20>;
  66. interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
  67. clocks = <&chip CLKID_TWD>;
  68. };
  69. cpu-ctrl@dd0000 {
  70. compatible = "marvell,berlin-cpu-ctrl";
  71. reg = <0xdd0000 0x10000>;
  72. };
  73. apb@e80000 {
  74. compatible = "simple-bus";
  75. #address-cells = <1>;
  76. #size-cells = <1>;
  77. ranges = <0 0xe80000 0x10000>;
  78. interrupt-parent = <&aic>;
  79. gpio0: gpio@0400 {
  80. compatible = "snps,dw-apb-gpio";
  81. reg = <0x0400 0x400>;
  82. #address-cells = <1>;
  83. #size-cells = <0>;
  84. porta: gpio-port@0 {
  85. compatible = "snps,dw-apb-gpio-port";
  86. gpio-controller;
  87. #gpio-cells = <2>;
  88. snps,nr-gpios = <8>;
  89. reg = <0>;
  90. interrupt-controller;
  91. #interrupt-cells = <2>;
  92. interrupts = <0>;
  93. };
  94. };
  95. gpio1: gpio@0800 {
  96. compatible = "snps,dw-apb-gpio";
  97. reg = <0x0800 0x400>;
  98. #address-cells = <1>;
  99. #size-cells = <0>;
  100. portb: gpio-port@1 {
  101. compatible = "snps,dw-apb-gpio-port";
  102. gpio-controller;
  103. #gpio-cells = <2>;
  104. snps,nr-gpios = <8>;
  105. reg = <0>;
  106. interrupt-controller;
  107. #interrupt-cells = <2>;
  108. interrupts = <1>;
  109. };
  110. };
  111. gpio2: gpio@0c00 {
  112. compatible = "snps,dw-apb-gpio";
  113. reg = <0x0c00 0x400>;
  114. #address-cells = <1>;
  115. #size-cells = <0>;
  116. portc: gpio-port@2 {
  117. compatible = "snps,dw-apb-gpio-port";
  118. gpio-controller;
  119. #gpio-cells = <2>;
  120. snps,nr-gpios = <8>;
  121. reg = <0>;
  122. interrupt-controller;
  123. #interrupt-cells = <2>;
  124. interrupts = <2>;
  125. };
  126. };
  127. gpio3: gpio@1000 {
  128. compatible = "snps,dw-apb-gpio";
  129. reg = <0x1000 0x400>;
  130. #address-cells = <1>;
  131. #size-cells = <0>;
  132. portd: gpio-port@3 {
  133. compatible = "snps,dw-apb-gpio-port";
  134. gpio-controller;
  135. #gpio-cells = <2>;
  136. snps,nr-gpios = <8>;
  137. reg = <0>;
  138. interrupt-controller;
  139. #interrupt-cells = <2>;
  140. interrupts = <3>;
  141. };
  142. };
  143. timer0: timer@2c00 {
  144. compatible = "snps,dw-apb-timer";
  145. reg = <0x2c00 0x14>;
  146. interrupts = <8>;
  147. clocks = <&chip CLKID_CFG>;
  148. clock-names = "timer";
  149. status = "okay";
  150. };
  151. timer1: timer@2c14 {
  152. compatible = "snps,dw-apb-timer";
  153. reg = <0x2c14 0x14>;
  154. interrupts = <9>;
  155. clocks = <&chip CLKID_CFG>;
  156. clock-names = "timer";
  157. status = "okay";
  158. };
  159. timer2: timer@2c28 {
  160. compatible = "snps,dw-apb-timer";
  161. reg = <0x2c28 0x14>;
  162. interrupts = <10>;
  163. clocks = <&chip CLKID_CFG>;
  164. clock-names = "timer";
  165. status = "disabled";
  166. };
  167. timer3: timer@2c3c {
  168. compatible = "snps,dw-apb-timer";
  169. reg = <0x2c3c 0x14>;
  170. interrupts = <11>;
  171. clocks = <&chip CLKID_CFG>;
  172. clock-names = "timer";
  173. status = "disabled";
  174. };
  175. timer4: timer@2c50 {
  176. compatible = "snps,dw-apb-timer";
  177. reg = <0x2c50 0x14>;
  178. interrupts = <12>;
  179. clocks = <&chip CLKID_CFG>;
  180. clock-names = "timer";
  181. status = "disabled";
  182. };
  183. timer5: timer@2c64 {
  184. compatible = "snps,dw-apb-timer";
  185. reg = <0x2c64 0x14>;
  186. interrupts = <13>;
  187. clocks = <&chip CLKID_CFG>;
  188. clock-names = "timer";
  189. status = "disabled";
  190. };
  191. timer6: timer@2c78 {
  192. compatible = "snps,dw-apb-timer";
  193. reg = <0x2c78 0x14>;
  194. interrupts = <14>;
  195. clocks = <&chip CLKID_CFG>;
  196. clock-names = "timer";
  197. status = "disabled";
  198. };
  199. timer7: timer@2c8c {
  200. compatible = "snps,dw-apb-timer";
  201. reg = <0x2c8c 0x14>;
  202. interrupts = <15>;
  203. clocks = <&chip CLKID_CFG>;
  204. clock-names = "timer";
  205. status = "disabled";
  206. };
  207. aic: interrupt-controller@3000 {
  208. compatible = "snps,dw-apb-ictl";
  209. reg = <0x3000 0xc00>;
  210. interrupt-controller;
  211. #interrupt-cells = <1>;
  212. interrupt-parent = <&gic>;
  213. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  214. };
  215. };
  216. chip: chip-control@ea0000 {
  217. compatible = "marvell,berlin2-chip-ctrl";
  218. #clock-cells = <1>;
  219. reg = <0xea0000 0x400>;
  220. clocks = <&refclk>;
  221. clock-names = "refclk";
  222. };
  223. apb@fc0000 {
  224. compatible = "simple-bus";
  225. #address-cells = <1>;
  226. #size-cells = <1>;
  227. ranges = <0 0xfc0000 0x10000>;
  228. interrupt-parent = <&sic>;
  229. sm_gpio1: gpio@5000 {
  230. compatible = "snps,dw-apb-gpio";
  231. reg = <0x5000 0x400>;
  232. #address-cells = <1>;
  233. #size-cells = <0>;
  234. portf: gpio-port@5 {
  235. compatible = "snps,dw-apb-gpio-port";
  236. gpio-controller;
  237. #gpio-cells = <2>;
  238. snps,nr-gpios = <8>;
  239. reg = <0>;
  240. };
  241. };
  242. sm_gpio0: gpio@c000 {
  243. compatible = "snps,dw-apb-gpio";
  244. reg = <0xc000 0x400>;
  245. #address-cells = <1>;
  246. #size-cells = <0>;
  247. porte: gpio-port@4 {
  248. compatible = "snps,dw-apb-gpio-port";
  249. gpio-controller;
  250. #gpio-cells = <2>;
  251. snps,nr-gpios = <8>;
  252. reg = <0>;
  253. interrupt-controller;
  254. #interrupt-cells = <2>;
  255. interrupts = <11>;
  256. };
  257. };
  258. uart0: serial@9000 {
  259. compatible = "snps,dw-apb-uart";
  260. reg = <0x9000 0x100>;
  261. reg-shift = <2>;
  262. reg-io-width = <1>;
  263. interrupts = <8>;
  264. clocks = <&refclk>;
  265. pinctrl-0 = <&uart0_pmux>;
  266. pinctrl-names = "default";
  267. status = "disabled";
  268. };
  269. uart1: serial@a000 {
  270. compatible = "snps,dw-apb-uart";
  271. reg = <0xa000 0x100>;
  272. reg-shift = <2>;
  273. reg-io-width = <1>;
  274. interrupts = <9>;
  275. clocks = <&refclk>;
  276. pinctrl-0 = <&uart1_pmux>;
  277. pinctrl-names = "default";
  278. status = "disabled";
  279. };
  280. uart2: serial@b000 {
  281. compatible = "snps,dw-apb-uart";
  282. reg = <0xb000 0x100>;
  283. reg-shift = <2>;
  284. reg-io-width = <1>;
  285. interrupts = <10>;
  286. clocks = <&refclk>;
  287. pinctrl-0 = <&uart2_pmux>;
  288. pinctrl-names = "default";
  289. status = "disabled";
  290. };
  291. sysctrl: system-controller@d000 {
  292. compatible = "marvell,berlin2-system-ctrl";
  293. reg = <0xd000 0x100>;
  294. uart0_pmux: uart0-pmux {
  295. groups = "GSM4";
  296. function = "uart0";
  297. };
  298. uart1_pmux: uart1-pmux {
  299. groups = "GSM5";
  300. function = "uart1";
  301. };
  302. uart2_pmux: uart2-pmux {
  303. groups = "GSM3";
  304. function = "uart2";
  305. };
  306. };
  307. sic: interrupt-controller@e000 {
  308. compatible = "snps,dw-apb-ictl";
  309. reg = <0xe000 0x400>;
  310. interrupt-controller;
  311. #interrupt-cells = <1>;
  312. interrupt-parent = <&gic>;
  313. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
  314. };
  315. };
  316. };
  317. };