berlin2q.dtsi 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666
  1. // SPDX-License-Identifier: (GPL-2.0 OR MIT)
  2. /*
  3. * Copyright (C) 2014 Antoine Ténart <[email protected]>
  4. */
  5. #include <dt-bindings/clock/berlin2q.h>
  6. #include <dt-bindings/interrupt-controller/arm-gic.h>
  7. / {
  8. model = "Marvell Armada 1500 pro (BG2-Q) SoC";
  9. compatible = "marvell,berlin2q", "marvell,berlin";
  10. #address-cells = <1>;
  11. #size-cells = <1>;
  12. aliases {
  13. serial0 = &uart0;
  14. serial1 = &uart1;
  15. };
  16. cpus {
  17. #address-cells = <1>;
  18. #size-cells = <0>;
  19. enable-method = "marvell,berlin-smp";
  20. cpu0: cpu@0 {
  21. compatible = "arm,cortex-a9";
  22. device_type = "cpu";
  23. next-level-cache = <&l2>;
  24. reg = <0>;
  25. clocks = <&chip_clk CLKID_CPU>;
  26. clock-latency = <100000>;
  27. /* Can be modified by the bootloader */
  28. operating-points = <
  29. /* kHz uV */
  30. 1200000 1200000
  31. 1000000 1200000
  32. 800000 1200000
  33. 600000 1200000
  34. >;
  35. };
  36. cpu1: cpu@1 {
  37. compatible = "arm,cortex-a9";
  38. device_type = "cpu";
  39. next-level-cache = <&l2>;
  40. reg = <1>;
  41. clocks = <&chip_clk CLKID_CPU>;
  42. clock-latency = <100000>;
  43. /* Can be modified by the bootloader */
  44. operating-points = <
  45. /* kHz uV */
  46. 1200000 1200000
  47. 1000000 1200000
  48. 800000 1200000
  49. 600000 1200000
  50. >;
  51. };
  52. cpu2: cpu@2 {
  53. compatible = "arm,cortex-a9";
  54. device_type = "cpu";
  55. next-level-cache = <&l2>;
  56. reg = <2>;
  57. clocks = <&chip_clk CLKID_CPU>;
  58. clock-latency = <100000>;
  59. /* Can be modified by the bootloader */
  60. operating-points = <
  61. /* kHz uV */
  62. 1200000 1200000
  63. 1000000 1200000
  64. 800000 1200000
  65. 600000 1200000
  66. >;
  67. };
  68. cpu3: cpu@3 {
  69. compatible = "arm,cortex-a9";
  70. device_type = "cpu";
  71. next-level-cache = <&l2>;
  72. reg = <3>;
  73. clocks = <&chip_clk CLKID_CPU>;
  74. clock-latency = <100000>;
  75. /* Can be modified by the bootloader */
  76. operating-points = <
  77. /* kHz uV */
  78. 1200000 1200000
  79. 1000000 1200000
  80. 800000 1200000
  81. 600000 1200000
  82. >;
  83. };
  84. };
  85. pmu {
  86. compatible = "arm,cortex-a9-pmu";
  87. interrupt-parent = <&gic>;
  88. interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
  89. <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
  90. <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
  91. <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
  92. interrupt-affinity = <&cpu0>,
  93. <&cpu1>,
  94. <&cpu2>,
  95. <&cpu3>;
  96. };
  97. refclk: oscillator {
  98. compatible = "fixed-clock";
  99. #clock-cells = <0>;
  100. clock-frequency = <25000000>;
  101. };
  102. soc@f7000000 {
  103. compatible = "simple-bus";
  104. #address-cells = <1>;
  105. #size-cells = <1>;
  106. ranges = <0 0xf7000000 0x1000000>;
  107. interrupt-parent = <&gic>;
  108. sdhci0: mmc@ab0000 {
  109. compatible = "mrvl,pxav3-mmc";
  110. reg = <0xab0000 0x200>;
  111. clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
  112. clock-names = "io", "core";
  113. interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  114. status = "disabled";
  115. };
  116. sdhci1: mmc@ab0800 {
  117. compatible = "mrvl,pxav3-mmc";
  118. reg = <0xab0800 0x200>;
  119. clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
  120. clock-names = "io", "core";
  121. interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
  122. status = "disabled";
  123. };
  124. sdhci2: mmc@ab1000 {
  125. compatible = "mrvl,pxav3-mmc";
  126. reg = <0xab1000 0x200>;
  127. interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
  128. clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_SDIO>;
  129. clock-names = "io", "core";
  130. status = "disabled";
  131. };
  132. l2: cache-controller@ac0000 {
  133. compatible = "arm,pl310-cache";
  134. reg = <0xac0000 0x1000>;
  135. cache-unified;
  136. cache-level = <2>;
  137. arm,data-latency = <2 2 2>;
  138. arm,tag-latency = <2 2 2>;
  139. };
  140. scu: snoop-control-unit@ad0000 {
  141. compatible = "arm,cortex-a9-scu";
  142. reg = <0xad0000 0x58>;
  143. };
  144. local-timer@ad0600 {
  145. compatible = "arm,cortex-a9-twd-timer";
  146. reg = <0xad0600 0x20>;
  147. clocks = <&chip_clk CLKID_TWD>;
  148. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_EDGE_RISING)>;
  149. };
  150. gic: interrupt-controller@ad1000 {
  151. compatible = "arm,cortex-a9-gic";
  152. reg = <0xad1000 0x1000>, <0xad0100 0x100>;
  153. interrupt-controller;
  154. #interrupt-cells = <3>;
  155. };
  156. usb_phy2: phy@a2f400 {
  157. compatible = "marvell,berlin2cd-usb-phy";
  158. reg = <0xa2f400 0x128>;
  159. #phy-cells = <0>;
  160. resets = <&chip_rst 0x104 14>;
  161. status = "disabled";
  162. };
  163. usb2: usb@a30000 {
  164. compatible = "chipidea,usb2";
  165. reg = <0xa30000 0x10000>;
  166. interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
  167. clocks = <&chip_clk CLKID_USB2>;
  168. phys = <&usb_phy2>;
  169. phy-names = "usb-phy";
  170. status = "disabled";
  171. };
  172. usb_phy0: phy@b74000 {
  173. compatible = "marvell,berlin2cd-usb-phy";
  174. reg = <0xb74000 0x128>;
  175. #phy-cells = <0>;
  176. resets = <&chip_rst 0x104 12>;
  177. status = "disabled";
  178. };
  179. usb_phy1: phy@b78000 {
  180. compatible = "marvell,berlin2cd-usb-phy";
  181. reg = <0xb78000 0x128>;
  182. #phy-cells = <0>;
  183. resets = <&chip_rst 0x104 13>;
  184. status = "disabled";
  185. };
  186. eth0: ethernet@b90000 {
  187. compatible = "marvell,pxa168-eth";
  188. reg = <0xb90000 0x10000>;
  189. clocks = <&chip_clk CLKID_GETH0>;
  190. interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
  191. /* set by bootloader */
  192. local-mac-address = [00 00 00 00 00 00];
  193. #address-cells = <1>;
  194. #size-cells = <0>;
  195. phy-connection-type = "mii";
  196. phy-handle = <&ethphy0>;
  197. status = "disabled";
  198. ethphy0: ethernet-phy@0 {
  199. reg = <0>;
  200. };
  201. };
  202. cpu-ctrl@dd0000 {
  203. compatible = "marvell,berlin-cpu-ctrl";
  204. reg = <0xdd0000 0x10000>;
  205. };
  206. apb@e80000 {
  207. compatible = "simple-bus";
  208. #address-cells = <1>;
  209. #size-cells = <1>;
  210. ranges = <0 0xe80000 0x10000>;
  211. interrupt-parent = <&aic>;
  212. gpio0: gpio@400 {
  213. compatible = "snps,dw-apb-gpio";
  214. reg = <0x0400 0x400>;
  215. #address-cells = <1>;
  216. #size-cells = <0>;
  217. porta: gpio-port@0 {
  218. compatible = "snps,dw-apb-gpio-port";
  219. gpio-controller;
  220. #gpio-cells = <2>;
  221. ngpios = <32>;
  222. reg = <0>;
  223. interrupt-controller;
  224. #interrupt-cells = <2>;
  225. interrupts = <0>;
  226. };
  227. };
  228. gpio1: gpio@800 {
  229. compatible = "snps,dw-apb-gpio";
  230. reg = <0x0800 0x400>;
  231. #address-cells = <1>;
  232. #size-cells = <0>;
  233. portb: gpio-port@1 {
  234. compatible = "snps,dw-apb-gpio-port";
  235. gpio-controller;
  236. #gpio-cells = <2>;
  237. ngpios = <32>;
  238. reg = <0>;
  239. interrupt-controller;
  240. #interrupt-cells = <2>;
  241. interrupts = <1>;
  242. };
  243. };
  244. gpio2: gpio@c00 {
  245. compatible = "snps,dw-apb-gpio";
  246. reg = <0x0c00 0x400>;
  247. #address-cells = <1>;
  248. #size-cells = <0>;
  249. portc: gpio-port@2 {
  250. compatible = "snps,dw-apb-gpio-port";
  251. gpio-controller;
  252. #gpio-cells = <2>;
  253. ngpios = <32>;
  254. reg = <0>;
  255. interrupt-controller;
  256. #interrupt-cells = <2>;
  257. interrupts = <2>;
  258. };
  259. };
  260. gpio3: gpio@1000 {
  261. compatible = "snps,dw-apb-gpio";
  262. reg = <0x1000 0x400>;
  263. #address-cells = <1>;
  264. #size-cells = <0>;
  265. portd: gpio-port@3 {
  266. compatible = "snps,dw-apb-gpio-port";
  267. gpio-controller;
  268. #gpio-cells = <2>;
  269. ngpios = <32>;
  270. reg = <0>;
  271. interrupt-controller;
  272. #interrupt-cells = <2>;
  273. interrupts = <3>;
  274. };
  275. };
  276. i2c0: i2c@1400 {
  277. compatible = "snps,designware-i2c";
  278. #address-cells = <1>;
  279. #size-cells = <0>;
  280. reg = <0x1400 0x100>;
  281. interrupts = <4>;
  282. clocks = <&chip_clk CLKID_CFG>;
  283. pinctrl-0 = <&twsi0_pmux>;
  284. pinctrl-names = "default";
  285. status = "disabled";
  286. };
  287. i2c1: i2c@1800 {
  288. compatible = "snps,designware-i2c";
  289. #address-cells = <1>;
  290. #size-cells = <0>;
  291. reg = <0x1800 0x100>;
  292. interrupts = <5>;
  293. clocks = <&chip_clk CLKID_CFG>;
  294. pinctrl-0 = <&twsi1_pmux>;
  295. pinctrl-names = "default";
  296. status = "disabled";
  297. };
  298. timer0: timer@2c00 {
  299. compatible = "snps,dw-apb-timer";
  300. reg = <0x2c00 0x14>;
  301. clocks = <&chip_clk CLKID_CFG>;
  302. clock-names = "timer";
  303. interrupts = <8>;
  304. };
  305. timer1: timer@2c14 {
  306. compatible = "snps,dw-apb-timer";
  307. reg = <0x2c14 0x14>;
  308. clocks = <&chip_clk CLKID_CFG>;
  309. clock-names = "timer";
  310. };
  311. timer2: timer@2c28 {
  312. compatible = "snps,dw-apb-timer";
  313. reg = <0x2c28 0x14>;
  314. clocks = <&chip_clk CLKID_CFG>;
  315. clock-names = "timer";
  316. status = "disabled";
  317. };
  318. timer3: timer@2c3c {
  319. compatible = "snps,dw-apb-timer";
  320. reg = <0x2c3c 0x14>;
  321. clocks = <&chip_clk CLKID_CFG>;
  322. clock-names = "timer";
  323. status = "disabled";
  324. };
  325. timer4: timer@2c50 {
  326. compatible = "snps,dw-apb-timer";
  327. reg = <0x2c50 0x14>;
  328. clocks = <&chip_clk CLKID_CFG>;
  329. clock-names = "timer";
  330. status = "disabled";
  331. };
  332. timer5: timer@2c64 {
  333. compatible = "snps,dw-apb-timer";
  334. reg = <0x2c64 0x14>;
  335. clocks = <&chip_clk CLKID_CFG>;
  336. clock-names = "timer";
  337. status = "disabled";
  338. };
  339. timer6: timer@2c78 {
  340. compatible = "snps,dw-apb-timer";
  341. reg = <0x2c78 0x14>;
  342. clocks = <&chip_clk CLKID_CFG>;
  343. clock-names = "timer";
  344. status = "disabled";
  345. };
  346. timer7: timer@2c8c {
  347. compatible = "snps,dw-apb-timer";
  348. reg = <0x2c8c 0x14>;
  349. clocks = <&chip_clk CLKID_CFG>;
  350. clock-names = "timer";
  351. status = "disabled";
  352. };
  353. aic: interrupt-controller@3800 {
  354. compatible = "snps,dw-apb-ictl";
  355. reg = <0x3800 0x30>;
  356. interrupt-controller;
  357. #interrupt-cells = <1>;
  358. interrupt-parent = <&gic>;
  359. interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
  360. };
  361. };
  362. chip: chip-control@ea0000 {
  363. compatible = "simple-mfd", "syscon";
  364. reg = <0xea0000 0x400>, <0xdd0170 0x10>;
  365. chip_clk: clock {
  366. compatible = "marvell,berlin2q-clk";
  367. #clock-cells = <1>;
  368. clocks = <&refclk>;
  369. clock-names = "refclk";
  370. };
  371. soc_pinctrl: pin-controller {
  372. compatible = "marvell,berlin2q-soc-pinctrl";
  373. sd1_pmux: sd1-pmux {
  374. groups = "G31";
  375. function = "sd1";
  376. };
  377. twsi0_pmux: twsi0-pmux {
  378. groups = "G6";
  379. function = "twsi0";
  380. };
  381. twsi1_pmux: twsi1-pmux {
  382. groups = "G7";
  383. function = "twsi1";
  384. };
  385. };
  386. chip_rst: reset {
  387. compatible = "marvell,berlin2-reset";
  388. #reset-cells = <2>;
  389. };
  390. };
  391. ahci: sata@e90000 {
  392. compatible = "marvell,berlin2q-ahci", "generic-ahci";
  393. reg = <0xe90000 0x1000>;
  394. interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
  395. clocks = <&chip_clk CLKID_SATA>;
  396. #address-cells = <1>;
  397. #size-cells = <0>;
  398. sata0: sata-port@0 {
  399. reg = <0>;
  400. phys = <&sata_phy 0>;
  401. status = "disabled";
  402. };
  403. sata1: sata-port@1 {
  404. reg = <1>;
  405. phys = <&sata_phy 1>;
  406. status = "disabled";
  407. };
  408. };
  409. sata_phy: phy@e900a0 {
  410. compatible = "marvell,berlin2q-sata-phy";
  411. reg = <0xe900a0 0x200>;
  412. clocks = <&chip_clk CLKID_SATA>;
  413. #address-cells = <1>;
  414. #size-cells = <0>;
  415. #phy-cells = <1>;
  416. status = "disabled";
  417. sata-phy@0 {
  418. reg = <0>;
  419. };
  420. sata-phy@1 {
  421. reg = <1>;
  422. };
  423. };
  424. usb0: usb@ed0000 {
  425. compatible = "chipidea,usb2";
  426. reg = <0xed0000 0x10000>;
  427. interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
  428. clocks = <&chip_clk CLKID_USB0>;
  429. phys = <&usb_phy0>;
  430. phy-names = "usb-phy";
  431. status = "disabled";
  432. };
  433. usb1: usb@ee0000 {
  434. compatible = "chipidea,usb2";
  435. reg = <0xee0000 0x10000>;
  436. interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
  437. clocks = <&chip_clk CLKID_USB1>;
  438. phys = <&usb_phy1>;
  439. phy-names = "usb-phy";
  440. status = "disabled";
  441. };
  442. pwm: pwm@f20000 {
  443. compatible = "marvell,berlin-pwm";
  444. reg = <0xf20000 0x40>;
  445. clocks = <&chip_clk CLKID_CFG>;
  446. #pwm-cells = <3>;
  447. };
  448. apb@fc0000 {
  449. compatible = "simple-bus";
  450. #address-cells = <1>;
  451. #size-cells = <1>;
  452. ranges = <0 0xfc0000 0x10000>;
  453. interrupt-parent = <&sic>;
  454. wdt0: watchdog@1000 {
  455. compatible = "snps,dw-wdt";
  456. reg = <0x1000 0x100>;
  457. clocks = <&refclk>;
  458. interrupts = <0>;
  459. };
  460. wdt1: watchdog@2000 {
  461. compatible = "snps,dw-wdt";
  462. reg = <0x2000 0x100>;
  463. clocks = <&refclk>;
  464. interrupts = <1>;
  465. };
  466. wdt2: watchdog@3000 {
  467. compatible = "snps,dw-wdt";
  468. reg = <0x3000 0x100>;
  469. clocks = <&refclk>;
  470. interrupts = <2>;
  471. };
  472. sm_gpio1: gpio@5000 {
  473. compatible = "snps,dw-apb-gpio";
  474. reg = <0x5000 0x400>;
  475. #address-cells = <1>;
  476. #size-cells = <0>;
  477. portf: gpio-port@5 {
  478. compatible = "snps,dw-apb-gpio-port";
  479. gpio-controller;
  480. #gpio-cells = <2>;
  481. ngpios = <32>;
  482. reg = <0>;
  483. };
  484. };
  485. i2c2: i2c@7000 {
  486. compatible = "snps,designware-i2c";
  487. #address-cells = <1>;
  488. #size-cells = <0>;
  489. reg = <0x7000 0x100>;
  490. interrupts = <6>;
  491. clocks = <&refclk>;
  492. pinctrl-0 = <&twsi2_pmux>;
  493. pinctrl-names = "default";
  494. status = "disabled";
  495. };
  496. i2c3: i2c@8000 {
  497. compatible = "snps,designware-i2c";
  498. #address-cells = <1>;
  499. #size-cells = <0>;
  500. reg = <0x8000 0x100>;
  501. interrupts = <7>;
  502. clocks = <&refclk>;
  503. pinctrl-0 = <&twsi3_pmux>;
  504. pinctrl-names = "default";
  505. status = "disabled";
  506. };
  507. uart0: uart@9000 {
  508. compatible = "snps,dw-apb-uart";
  509. reg = <0x9000 0x100>;
  510. interrupts = <8>;
  511. clocks = <&refclk>;
  512. reg-shift = <2>;
  513. pinctrl-0 = <&uart0_pmux>;
  514. pinctrl-names = "default";
  515. status = "disabled";
  516. };
  517. uart1: uart@a000 {
  518. compatible = "snps,dw-apb-uart";
  519. reg = <0xa000 0x100>;
  520. interrupts = <9>;
  521. clocks = <&refclk>;
  522. reg-shift = <2>;
  523. pinctrl-0 = <&uart1_pmux>;
  524. pinctrl-names = "default";
  525. status = "disabled";
  526. };
  527. sm_gpio0: gpio@c000 {
  528. compatible = "snps,dw-apb-gpio";
  529. reg = <0xc000 0x400>;
  530. #address-cells = <1>;
  531. #size-cells = <0>;
  532. porte: gpio-port@4 {
  533. compatible = "snps,dw-apb-gpio-port";
  534. gpio-controller;
  535. #gpio-cells = <2>;
  536. ngpios = <32>;
  537. reg = <0>;
  538. };
  539. };
  540. sysctrl: pin-controller@d000 {
  541. compatible = "simple-mfd", "syscon";
  542. reg = <0xd000 0x100>;
  543. sys_pinctrl: pin-controller {
  544. compatible = "marvell,berlin2q-system-pinctrl";
  545. uart0_pmux: uart0-pmux {
  546. groups = "GSM12";
  547. function = "uart0";
  548. };
  549. uart1_pmux: uart1-pmux {
  550. groups = "GSM14";
  551. function = "uart1";
  552. };
  553. twsi2_pmux: twsi2-pmux {
  554. groups = "GSM13";
  555. function = "twsi2";
  556. };
  557. twsi3_pmux: twsi3-pmux {
  558. groups = "GSM14";
  559. function = "twsi3";
  560. };
  561. };
  562. adc: adc {
  563. compatible = "marvell,berlin2-adc";
  564. interrupts = <12>, <14>;
  565. interrupt-names = "adc", "tsen";
  566. };
  567. };
  568. sic: interrupt-controller@e000 {
  569. compatible = "snps,dw-apb-ictl";
  570. reg = <0xe000 0x30>;
  571. interrupt-controller;
  572. #interrupt-cells = <1>;
  573. interrupt-parent = <&gic>;
  574. interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
  575. };
  576. };
  577. };
  578. };