berlin2.dtsi 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. // SPDX-License-Identifier: (GPL-2.0 OR MIT)
  2. /*
  3. * Device Tree Include file for Marvell Armada 1500 (Berlin BG2) SoC
  4. *
  5. * Sebastian Hesselbarth <[email protected]>
  6. *
  7. * based on GPL'ed 2.6 kernel sources
  8. * (c) Marvell International Ltd.
  9. */
  10. #include <dt-bindings/clock/berlin2.h>
  11. #include <dt-bindings/interrupt-controller/arm-gic.h>
  12. / {
  13. model = "Marvell Armada 1500 (BG2) SoC";
  14. compatible = "marvell,berlin2", "marvell,berlin";
  15. #address-cells = <1>;
  16. #size-cells = <1>;
  17. aliases {
  18. serial0 = &uart0;
  19. serial1 = &uart1;
  20. serial2 = &uart2;
  21. };
  22. cpus {
  23. #address-cells = <1>;
  24. #size-cells = <0>;
  25. enable-method = "marvell,berlin-smp";
  26. cpu@0 {
  27. compatible = "marvell,pj4b";
  28. device_type = "cpu";
  29. next-level-cache = <&l2>;
  30. reg = <0>;
  31. clocks = <&chip_clk CLKID_CPU>;
  32. clock-latency = <100000>;
  33. operating-points = <
  34. /* kHz uV */
  35. 1200000 1200000
  36. 1000000 1200000
  37. 800000 1200000
  38. 600000 1200000
  39. >;
  40. };
  41. cpu@1 {
  42. compatible = "marvell,pj4b";
  43. device_type = "cpu";
  44. next-level-cache = <&l2>;
  45. reg = <1>;
  46. clocks = <&chip_clk CLKID_CPU>;
  47. clock-latency = <100000>;
  48. operating-points = <
  49. /* kHz uV */
  50. 1200000 1200000
  51. 1000000 1200000
  52. 800000 1200000
  53. 600000 1200000
  54. >;
  55. };
  56. };
  57. refclk: oscillator {
  58. compatible = "fixed-clock";
  59. #clock-cells = <0>;
  60. clock-frequency = <25000000>;
  61. };
  62. soc@f7000000 {
  63. compatible = "simple-bus";
  64. #address-cells = <1>;
  65. #size-cells = <1>;
  66. interrupt-parent = <&gic>;
  67. ranges = <0 0xf7000000 0x1000000>;
  68. sdhci0: mmc@ab0000 {
  69. compatible = "mrvl,pxav3-mmc";
  70. reg = <0xab0000 0x200>;
  71. clocks = <&chip_clk CLKID_SDIO0XIN>, <&chip_clk CLKID_SDIO0>;
  72. clock-names = "io", "core";
  73. interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  74. status = "disabled";
  75. };
  76. sdhci1: mmc@ab0800 {
  77. compatible = "mrvl,pxav3-mmc";
  78. reg = <0xab0800 0x200>;
  79. clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO1>;
  80. clock-names = "io", "core";
  81. interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
  82. status = "disabled";
  83. };
  84. sdhci2: mmc@ab1000 {
  85. compatible = "mrvl,pxav3-mmc";
  86. reg = <0xab1000 0x200>;
  87. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  88. clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_NFC>;
  89. clock-names = "io", "core";
  90. pinctrl-0 = <&emmc_pmux>;
  91. pinctrl-names = "default";
  92. status = "disabled";
  93. };
  94. l2: cache-controller@ac0000 {
  95. compatible = "marvell,tauros3-cache", "arm,pl310-cache";
  96. reg = <0xac0000 0x1000>;
  97. cache-unified;
  98. cache-level = <2>;
  99. };
  100. scu: snoop-control-unit@ad0000 {
  101. compatible = "arm,cortex-a9-scu";
  102. reg = <0xad0000 0x58>;
  103. };
  104. gic: interrupt-controller@ad1000 {
  105. compatible = "arm,cortex-a9-gic";
  106. reg = <0xad1000 0x1000>, <0xad0100 0x0100>;
  107. interrupt-controller;
  108. #interrupt-cells = <3>;
  109. };
  110. local-timer@ad0600 {
  111. compatible = "arm,cortex-a9-twd-timer";
  112. reg = <0xad0600 0x20>;
  113. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
  114. clocks = <&chip_clk CLKID_TWD>;
  115. };
  116. eth1: ethernet@b90000 {
  117. compatible = "marvell,pxa168-eth";
  118. reg = <0xb90000 0x10000>;
  119. clocks = <&chip_clk CLKID_GETH1>;
  120. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  121. /* set by bootloader */
  122. local-mac-address = [00 00 00 00 00 00];
  123. #address-cells = <1>;
  124. #size-cells = <0>;
  125. phy-connection-type = "mii";
  126. phy-handle = <&ethphy1>;
  127. status = "disabled";
  128. ethphy1: ethernet-phy@0 {
  129. reg = <0>;
  130. };
  131. };
  132. cpu-ctrl@dd0000 {
  133. compatible = "marvell,berlin-cpu-ctrl";
  134. reg = <0xdd0000 0x10000>;
  135. };
  136. eth0: ethernet@e50000 {
  137. compatible = "marvell,pxa168-eth";
  138. reg = <0xe50000 0x10000>;
  139. clocks = <&chip_clk CLKID_GETH0>;
  140. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
  141. /* set by bootloader */
  142. local-mac-address = [00 00 00 00 00 00];
  143. #address-cells = <1>;
  144. #size-cells = <0>;
  145. phy-connection-type = "mii";
  146. phy-handle = <&ethphy0>;
  147. status = "disabled";
  148. ethphy0: ethernet-phy@0 {
  149. reg = <0>;
  150. };
  151. };
  152. apb@e80000 {
  153. compatible = "simple-bus";
  154. #address-cells = <1>;
  155. #size-cells = <1>;
  156. ranges = <0 0xe80000 0x10000>;
  157. interrupt-parent = <&aic>;
  158. gpio0: gpio@400 {
  159. compatible = "snps,dw-apb-gpio";
  160. reg = <0x0400 0x400>;
  161. #address-cells = <1>;
  162. #size-cells = <0>;
  163. porta: gpio-port@0 {
  164. compatible = "snps,dw-apb-gpio-port";
  165. gpio-controller;
  166. #gpio-cells = <2>;
  167. ngpios = <8>;
  168. reg = <0>;
  169. interrupt-controller;
  170. #interrupt-cells = <2>;
  171. interrupts = <0>;
  172. };
  173. };
  174. gpio1: gpio@800 {
  175. compatible = "snps,dw-apb-gpio";
  176. reg = <0x0800 0x400>;
  177. #address-cells = <1>;
  178. #size-cells = <0>;
  179. portb: gpio-port@1 {
  180. compatible = "snps,dw-apb-gpio-port";
  181. gpio-controller;
  182. #gpio-cells = <2>;
  183. ngpios = <8>;
  184. reg = <0>;
  185. interrupt-controller;
  186. #interrupt-cells = <2>;
  187. interrupts = <1>;
  188. };
  189. };
  190. gpio2: gpio@c00 {
  191. compatible = "snps,dw-apb-gpio";
  192. reg = <0x0c00 0x400>;
  193. #address-cells = <1>;
  194. #size-cells = <0>;
  195. portc: gpio-port@2 {
  196. compatible = "snps,dw-apb-gpio-port";
  197. gpio-controller;
  198. #gpio-cells = <2>;
  199. ngpios = <8>;
  200. reg = <0>;
  201. interrupt-controller;
  202. #interrupt-cells = <2>;
  203. interrupts = <2>;
  204. };
  205. };
  206. gpio3: gpio@1000 {
  207. compatible = "snps,dw-apb-gpio";
  208. reg = <0x1000 0x400>;
  209. #address-cells = <1>;
  210. #size-cells = <0>;
  211. portd: gpio-port@3 {
  212. compatible = "snps,dw-apb-gpio-port";
  213. gpio-controller;
  214. #gpio-cells = <2>;
  215. ngpios = <8>;
  216. reg = <0>;
  217. interrupt-controller;
  218. #interrupt-cells = <2>;
  219. interrupts = <3>;
  220. };
  221. };
  222. timer0: timer@2c00 {
  223. compatible = "snps,dw-apb-timer";
  224. reg = <0x2c00 0x14>;
  225. interrupts = <8>;
  226. clocks = <&chip_clk CLKID_CFG>;
  227. clock-names = "timer";
  228. status = "okay";
  229. };
  230. timer1: timer@2c14 {
  231. compatible = "snps,dw-apb-timer";
  232. reg = <0x2c14 0x14>;
  233. interrupts = <9>;
  234. clocks = <&chip_clk CLKID_CFG>;
  235. clock-names = "timer";
  236. status = "okay";
  237. };
  238. timer2: timer@2c28 {
  239. compatible = "snps,dw-apb-timer";
  240. reg = <0x2c28 0x14>;
  241. interrupts = <10>;
  242. clocks = <&chip_clk CLKID_CFG>;
  243. clock-names = "timer";
  244. status = "disabled";
  245. };
  246. timer3: timer@2c3c {
  247. compatible = "snps,dw-apb-timer";
  248. reg = <0x2c3c 0x14>;
  249. interrupts = <11>;
  250. clocks = <&chip_clk CLKID_CFG>;
  251. clock-names = "timer";
  252. status = "disabled";
  253. };
  254. timer4: timer@2c50 {
  255. compatible = "snps,dw-apb-timer";
  256. reg = <0x2c50 0x14>;
  257. interrupts = <12>;
  258. clocks = <&chip_clk CLKID_CFG>;
  259. clock-names = "timer";
  260. status = "disabled";
  261. };
  262. timer5: timer@2c64 {
  263. compatible = "snps,dw-apb-timer";
  264. reg = <0x2c64 0x14>;
  265. interrupts = <13>;
  266. clocks = <&chip_clk CLKID_CFG>;
  267. clock-names = "timer";
  268. status = "disabled";
  269. };
  270. timer6: timer@2c78 {
  271. compatible = "snps,dw-apb-timer";
  272. reg = <0x2c78 0x14>;
  273. interrupts = <14>;
  274. clocks = <&chip_clk CLKID_CFG>;
  275. clock-names = "timer";
  276. status = "disabled";
  277. };
  278. timer7: timer@2c8c {
  279. compatible = "snps,dw-apb-timer";
  280. reg = <0x2c8c 0x14>;
  281. interrupts = <15>;
  282. clocks = <&chip_clk CLKID_CFG>;
  283. clock-names = "timer";
  284. status = "disabled";
  285. };
  286. aic: interrupt-controller@3000 {
  287. compatible = "snps,dw-apb-ictl";
  288. reg = <0x3000 0xc00>;
  289. interrupt-controller;
  290. #interrupt-cells = <1>;
  291. interrupt-parent = <&gic>;
  292. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  293. };
  294. };
  295. ahci: sata@e90000 {
  296. compatible = "marvell,berlin2-ahci", "generic-ahci";
  297. reg = <0xe90000 0x1000>;
  298. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  299. clocks = <&chip_clk CLKID_SATA>;
  300. #address-cells = <1>;
  301. #size-cells = <0>;
  302. sata0: sata-port@0 {
  303. reg = <0>;
  304. phys = <&sata_phy 0>;
  305. status = "disabled";
  306. };
  307. sata1: sata-port@1 {
  308. reg = <1>;
  309. phys = <&sata_phy 1>;
  310. status = "disabled";
  311. };
  312. };
  313. sata_phy: phy@e900a0 {
  314. compatible = "marvell,berlin2-sata-phy";
  315. reg = <0xe900a0 0x200>;
  316. clocks = <&chip_clk CLKID_SATA>;
  317. #address-cells = <1>;
  318. #size-cells = <0>;
  319. #phy-cells = <1>;
  320. status = "disabled";
  321. sata-phy@0 {
  322. reg = <0>;
  323. };
  324. sata-phy@1 {
  325. reg = <1>;
  326. };
  327. };
  328. chip: chip-control@ea0000 {
  329. compatible = "simple-mfd", "syscon";
  330. reg = <0xea0000 0x400>;
  331. chip_clk: clock {
  332. compatible = "marvell,berlin2-clk";
  333. #clock-cells = <1>;
  334. clocks = <&refclk>;
  335. clock-names = "refclk";
  336. };
  337. soc_pinctrl: pin-controller {
  338. compatible = "marvell,berlin2-soc-pinctrl";
  339. emmc_pmux: emmc-pmux {
  340. groups = "G26";
  341. function = "emmc";
  342. };
  343. };
  344. chip_rst: reset {
  345. compatible = "marvell,berlin2-reset";
  346. #reset-cells = <2>;
  347. };
  348. };
  349. pwm: pwm@f20000 {
  350. compatible = "marvell,berlin-pwm";
  351. reg = <0xf20000 0x40>;
  352. clocks = <&chip_clk CLKID_CFG>;
  353. #pwm-cells = <3>;
  354. };
  355. apb@fc0000 {
  356. compatible = "simple-bus";
  357. #address-cells = <1>;
  358. #size-cells = <1>;
  359. ranges = <0 0xfc0000 0x10000>;
  360. interrupt-parent = <&sic>;
  361. wdt0: watchdog@1000 {
  362. compatible = "snps,dw-wdt";
  363. reg = <0x1000 0x100>;
  364. clocks = <&refclk>;
  365. interrupts = <0>;
  366. };
  367. wdt1: watchdog@2000 {
  368. compatible = "snps,dw-wdt";
  369. reg = <0x2000 0x100>;
  370. clocks = <&refclk>;
  371. interrupts = <1>;
  372. };
  373. wdt2: watchdog@3000 {
  374. compatible = "snps,dw-wdt";
  375. reg = <0x3000 0x100>;
  376. clocks = <&refclk>;
  377. interrupts = <2>;
  378. };
  379. sm_gpio1: gpio@5000 {
  380. compatible = "snps,dw-apb-gpio";
  381. reg = <0x5000 0x400>;
  382. #address-cells = <1>;
  383. #size-cells = <0>;
  384. portf: gpio-port@5 {
  385. compatible = "snps,dw-apb-gpio-port";
  386. gpio-controller;
  387. #gpio-cells = <2>;
  388. ngpios = <8>;
  389. reg = <0>;
  390. };
  391. };
  392. sm_gpio0: gpio@c000 {
  393. compatible = "snps,dw-apb-gpio";
  394. reg = <0xc000 0x400>;
  395. #address-cells = <1>;
  396. #size-cells = <0>;
  397. porte: gpio-port@4 {
  398. compatible = "snps,dw-apb-gpio-port";
  399. gpio-controller;
  400. #gpio-cells = <2>;
  401. ngpios = <8>;
  402. reg = <0>;
  403. interrupt-controller;
  404. #interrupt-cells = <2>;
  405. interrupts = <11>;
  406. };
  407. };
  408. uart0: serial@9000 {
  409. compatible = "snps,dw-apb-uart";
  410. reg = <0x9000 0x100>;
  411. reg-shift = <2>;
  412. reg-io-width = <1>;
  413. interrupts = <8>;
  414. clocks = <&refclk>;
  415. pinctrl-0 = <&uart0_pmux>;
  416. pinctrl-names = "default";
  417. status = "disabled";
  418. };
  419. uart1: serial@a000 {
  420. compatible = "snps,dw-apb-uart";
  421. reg = <0xa000 0x100>;
  422. reg-shift = <2>;
  423. reg-io-width = <1>;
  424. interrupts = <9>;
  425. clocks = <&refclk>;
  426. pinctrl-0 = <&uart1_pmux>;
  427. pinctrl-names = "default";
  428. status = "disabled";
  429. };
  430. uart2: serial@b000 {
  431. compatible = "snps,dw-apb-uart";
  432. reg = <0xb000 0x100>;
  433. reg-shift = <2>;
  434. reg-io-width = <1>;
  435. interrupts = <10>;
  436. clocks = <&refclk>;
  437. pinctrl-0 = <&uart2_pmux>;
  438. pinctrl-names = "default";
  439. status = "disabled";
  440. };
  441. sysctrl: system-controller@d000 {
  442. compatible = "simple-mfd", "syscon";
  443. reg = <0xd000 0x100>;
  444. sys_pinctrl: pin-controller {
  445. compatible = "marvell,berlin2-system-pinctrl";
  446. uart0_pmux: uart0-pmux {
  447. groups = "GSM4";
  448. function = "uart0";
  449. };
  450. uart1_pmux: uart1-pmux {
  451. groups = "GSM5";
  452. function = "uart1";
  453. };
  454. uart2_pmux: uart2-pmux {
  455. groups = "GSM3";
  456. function = "uart2";
  457. };
  458. };
  459. };
  460. sic: interrupt-controller@e000 {
  461. compatible = "snps,dw-apb-ictl";
  462. reg = <0xe000 0x400>;
  463. interrupt-controller;
  464. #interrupt-cells = <1>;
  465. interrupt-parent = <&gic>;
  466. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
  467. };
  468. };
  469. };
  470. };