socfpga_stratix10.dtsi 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. /*
  2. * Copyright Altera Corporation (C) 2015. All rights reserved.
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms and conditions of the GNU General Public License,
  6. * version 2, as published by the Free Software Foundation.
  7. *
  8. * This program is distributed in the hope it will be useful, but WITHOUT
  9. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  10. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  11. * more details.
  12. *
  13. * You should have received a copy of the GNU General Public License along with
  14. * this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. /dts-v1/;
  17. #include <dt-bindings/reset/altr,rst-mgr-s10.h>
  18. #include <dt-bindings/gpio/gpio.h>
  19. #include <dt-bindings/clock/stratix10-clock.h>
  20. / {
  21. compatible = "altr,socfpga-stratix10";
  22. #address-cells = <2>;
  23. #size-cells = <2>;
  24. cpus {
  25. #address-cells = <1>;
  26. #size-cells = <0>;
  27. cpu0: cpu@0 {
  28. compatible = "arm,cortex-a53", "arm,armv8";
  29. device_type = "cpu";
  30. enable-method = "psci";
  31. reg = <0x0>;
  32. };
  33. cpu1: cpu@1 {
  34. compatible = "arm,cortex-a53", "arm,armv8";
  35. device_type = "cpu";
  36. enable-method = "psci";
  37. reg = <0x1>;
  38. };
  39. cpu2: cpu@2 {
  40. compatible = "arm,cortex-a53", "arm,armv8";
  41. device_type = "cpu";
  42. enable-method = "psci";
  43. reg = <0x2>;
  44. };
  45. cpu3: cpu@3 {
  46. compatible = "arm,cortex-a53", "arm,armv8";
  47. device_type = "cpu";
  48. enable-method = "psci";
  49. reg = <0x3>;
  50. };
  51. };
  52. pmu {
  53. compatible = "arm,armv8-pmuv3";
  54. interrupts = <0 170 4>,
  55. <0 171 4>,
  56. <0 172 4>,
  57. <0 173 4>;
  58. interrupt-affinity = <&cpu0>,
  59. <&cpu1>,
  60. <&cpu2>,
  61. <&cpu3>;
  62. interrupt-parent = <&intc>;
  63. };
  64. psci {
  65. compatible = "arm,psci-0.2";
  66. method = "smc";
  67. };
  68. intc: intc@fffc1000 {
  69. compatible = "arm,gic-400", "arm,cortex-a15-gic";
  70. #interrupt-cells = <3>;
  71. interrupt-controller;
  72. reg = <0x0 0xfffc1000 0x0 0x1000>,
  73. <0x0 0xfffc2000 0x0 0x2000>,
  74. <0x0 0xfffc4000 0x0 0x2000>,
  75. <0x0 0xfffc6000 0x0 0x2000>;
  76. };
  77. soc {
  78. #address-cells = <1>;
  79. #size-cells = <1>;
  80. compatible = "simple-bus";
  81. device_type = "soc";
  82. interrupt-parent = <&intc>;
  83. ranges = <0 0 0 0xffffffff>;
  84. clkmgr: clock-controller@ffd10000 {
  85. compatible = "intel,stratix10-clkmgr";
  86. reg = <0xffd10000 0x1000>;
  87. #clock-cells = <1>;
  88. };
  89. clocks {
  90. cb_intosc_hs_div2_clk: cb-intosc-hs-div2-clk {
  91. #clock-cells = <0>;
  92. compatible = "fixed-clock";
  93. };
  94. cb_intosc_ls_clk: cb-intosc-ls-clk {
  95. #clock-cells = <0>;
  96. compatible = "fixed-clock";
  97. };
  98. f2s_free_clk: f2s-free-clk {
  99. #clock-cells = <0>;
  100. compatible = "fixed-clock";
  101. };
  102. osc1: osc1 {
  103. #clock-cells = <0>;
  104. compatible = "fixed-clock";
  105. };
  106. qspi_clk: qspi-clk {
  107. #clock-cells = <0>;
  108. compatible = "fixed-clock";
  109. clock-frequency = <200000000>;
  110. };
  111. };
  112. gmac0: ethernet@ff800000 {
  113. compatible = "altr,socfpga-stmmac", "snps,dwmac-3.74a", "snps,dwmac";
  114. reg = <0xff800000 0x2000>;
  115. interrupts = <0 90 4>;
  116. interrupt-names = "macirq";
  117. mac-address = [00 00 00 00 00 00];
  118. resets = <&rst EMAC0_RESET>, <&rst EMAC0_OCP_RESET>;
  119. reset-names = "stmmaceth", "stmmaceth-ocp";
  120. clocks = <&clkmgr STRATIX10_EMAC0_CLK>;
  121. clock-names = "stmmaceth";
  122. tx-fifo-depth = <16384>;
  123. rx-fifo-depth = <16384>;
  124. snps,multicast-filter-bins = <256>;
  125. altr,sysmgr-syscon = <&sysmgr 0x44 0>;
  126. status = "disabled";
  127. };
  128. gmac1: ethernet@ff802000 {
  129. compatible = "altr,socfpga-stmmac", "snps,dwmac-3.74a", "snps,dwmac";
  130. reg = <0xff802000 0x2000>;
  131. interrupts = <0 91 4>;
  132. interrupt-names = "macirq";
  133. mac-address = [00 00 00 00 00 00];
  134. resets = <&rst EMAC1_RESET>, <&rst EMAC1_OCP_RESET>;
  135. reset-names = "stmmaceth", "stmmaceth-ocp";
  136. clocks = <&clkmgr STRATIX10_EMAC1_CLK>;
  137. clock-names = "stmmaceth";
  138. tx-fifo-depth = <16384>;
  139. rx-fifo-depth = <16384>;
  140. snps,multicast-filter-bins = <256>;
  141. altr,sysmgr-syscon = <&sysmgr 0x48 0>;
  142. status = "disabled";
  143. };
  144. gmac2: ethernet@ff804000 {
  145. compatible = "altr,socfpga-stmmac", "snps,dwmac-3.74a", "snps,dwmac";
  146. reg = <0xff804000 0x2000>;
  147. interrupts = <0 92 4>;
  148. interrupt-names = "macirq";
  149. mac-address = [00 00 00 00 00 00];
  150. resets = <&rst EMAC2_RESET>, <&rst EMAC2_OCP_RESET>;
  151. reset-names = "stmmaceth", "stmmaceth-ocp";
  152. clocks = <&clkmgr STRATIX10_EMAC2_CLK>;
  153. clock-names = "stmmaceth";
  154. tx-fifo-depth = <16384>;
  155. rx-fifo-depth = <16384>;
  156. snps,multicast-filter-bins = <256>;
  157. altr,sysmgr-syscon = <&sysmgr 0x4c 0>;
  158. status = "disabled";
  159. };
  160. gpio0: gpio@ffc03200 {
  161. #address-cells = <1>;
  162. #size-cells = <0>;
  163. compatible = "snps,dw-apb-gpio";
  164. reg = <0xffc03200 0x100>;
  165. resets = <&rst GPIO0_RESET>;
  166. status = "disabled";
  167. porta: gpio-controller@0 {
  168. compatible = "snps,dw-apb-gpio-port";
  169. gpio-controller;
  170. #gpio-cells = <2>;
  171. snps,nr-gpios = <24>;
  172. reg = <0>;
  173. interrupt-controller;
  174. #interrupt-cells = <2>;
  175. interrupts = <0 110 4>;
  176. };
  177. };
  178. gpio1: gpio@ffc03300 {
  179. #address-cells = <1>;
  180. #size-cells = <0>;
  181. compatible = "snps,dw-apb-gpio";
  182. reg = <0xffc03300 0x100>;
  183. resets = <&rst GPIO1_RESET>;
  184. status = "disabled";
  185. portb: gpio-controller@0 {
  186. compatible = "snps,dw-apb-gpio-port";
  187. gpio-controller;
  188. #gpio-cells = <2>;
  189. snps,nr-gpios = <24>;
  190. reg = <0>;
  191. interrupt-controller;
  192. #interrupt-cells = <2>;
  193. interrupts = <0 111 4>;
  194. };
  195. };
  196. i2c0: i2c@ffc02800 {
  197. #address-cells = <1>;
  198. #size-cells = <0>;
  199. compatible = "snps,designware-i2c";
  200. reg = <0xffc02800 0x100>;
  201. interrupts = <0 103 4>;
  202. resets = <&rst I2C0_RESET>;
  203. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  204. status = "disabled";
  205. };
  206. i2c1: i2c@ffc02900 {
  207. #address-cells = <1>;
  208. #size-cells = <0>;
  209. compatible = "snps,designware-i2c";
  210. reg = <0xffc02900 0x100>;
  211. interrupts = <0 104 4>;
  212. resets = <&rst I2C1_RESET>;
  213. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  214. status = "disabled";
  215. };
  216. i2c2: i2c@ffc02a00 {
  217. #address-cells = <1>;
  218. #size-cells = <0>;
  219. compatible = "snps,designware-i2c";
  220. reg = <0xffc02a00 0x100>;
  221. interrupts = <0 105 4>;
  222. resets = <&rst I2C2_RESET>;
  223. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  224. status = "disabled";
  225. };
  226. i2c3: i2c@ffc02b00 {
  227. #address-cells = <1>;
  228. #size-cells = <0>;
  229. compatible = "snps,designware-i2c";
  230. reg = <0xffc02b00 0x100>;
  231. interrupts = <0 106 4>;
  232. resets = <&rst I2C3_RESET>;
  233. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  234. status = "disabled";
  235. };
  236. i2c4: i2c@ffc02c00 {
  237. #address-cells = <1>;
  238. #size-cells = <0>;
  239. compatible = "snps,designware-i2c";
  240. reg = <0xffc02c00 0x100>;
  241. interrupts = <0 107 4>;
  242. resets = <&rst I2C4_RESET>;
  243. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  244. status = "disabled";
  245. };
  246. mmc: dwmmc0@ff808000 {
  247. #address-cells = <1>;
  248. #size-cells = <0>;
  249. compatible = "altr,socfpga-dw-mshc";
  250. reg = <0xff808000 0x1000>;
  251. interrupts = <0 96 4>;
  252. fifo-depth = <0x400>;
  253. resets = <&rst SDMMC_RESET>;
  254. reset-names = "reset";
  255. clocks = <&clkmgr STRATIX10_L4_MP_CLK>,
  256. <&clkmgr STRATIX10_SDMMC_CLK>;
  257. clock-names = "biu", "ciu";
  258. status = "disabled";
  259. };
  260. ocram: sram@ffe00000 {
  261. compatible = "mmio-sram";
  262. reg = <0xffe00000 0x100000>;
  263. };
  264. pdma: pdma@ffda0000 {
  265. compatible = "arm,pl330", "arm,primecell";
  266. reg = <0xffda0000 0x1000>;
  267. interrupts = <0 81 4>,
  268. <0 82 4>,
  269. <0 83 4>,
  270. <0 84 4>,
  271. <0 85 4>,
  272. <0 86 4>,
  273. <0 87 4>,
  274. <0 88 4>,
  275. <0 89 4>;
  276. #dma-cells = <1>;
  277. #dma-channels = <8>;
  278. #dma-requests = <32>;
  279. clocks = <&clkmgr STRATIX10_L4_MAIN_CLK>;
  280. clock-names = "apb_pclk";
  281. };
  282. rst: rstmgr@ffd11000 {
  283. #reset-cells = <1>;
  284. compatible = "altr,rst-mgr";
  285. reg = <0xffd11000 0x1000>;
  286. altr,modrst-offset = <0x20>;
  287. };
  288. spi0: spi@ffda4000 {
  289. compatible = "snps,dw-apb-ssi";
  290. #address-cells = <1>;
  291. #size-cells = <0>;
  292. reg = <0xffda4000 0x1000>;
  293. interrupts = <0 99 4>;
  294. resets = <&rst SPIM0_RESET>;
  295. reg-io-width = <4>;
  296. num-cs = <4>;
  297. clocks = <&clkmgr STRATIX10_L4_MAIN_CLK>;
  298. status = "disabled";
  299. };
  300. spi1: spi@ffda5000 {
  301. compatible = "snps,dw-apb-ssi";
  302. #address-cells = <1>;
  303. #size-cells = <0>;
  304. reg = <0xffda5000 0x1000>;
  305. interrupts = <0 100 4>;
  306. resets = <&rst SPIM1_RESET>;
  307. reg-io-width = <4>;
  308. num-cs = <4>;
  309. clocks = <&clkmgr STRATIX10_L4_MAIN_CLK>;
  310. status = "disabled";
  311. };
  312. sysmgr: sysmgr@ffd12000 {
  313. compatible = "altr,sys-mgr", "syscon";
  314. reg = <0xffd12000 0x228>;
  315. };
  316. /* Local timer */
  317. timer {
  318. compatible = "arm,armv8-timer";
  319. interrupts = <1 13 0xf08>,
  320. <1 14 0xf08>,
  321. <1 11 0xf08>,
  322. <1 10 0xf08>;
  323. };
  324. timer0: timer0@ffc03000 {
  325. compatible = "snps,dw-apb-timer";
  326. interrupts = <0 113 4>;
  327. reg = <0xffc03000 0x100>;
  328. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  329. clock-names = "timer";
  330. };
  331. timer1: timer1@ffc03100 {
  332. compatible = "snps,dw-apb-timer";
  333. interrupts = <0 114 4>;
  334. reg = <0xffc03100 0x100>;
  335. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  336. clock-names = "timer";
  337. };
  338. timer2: timer2@ffd00000 {
  339. compatible = "snps,dw-apb-timer";
  340. interrupts = <0 115 4>;
  341. reg = <0xffd00000 0x100>;
  342. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  343. clock-names = "timer";
  344. };
  345. timer3: timer3@ffd00100 {
  346. compatible = "snps,dw-apb-timer";
  347. interrupts = <0 116 4>;
  348. reg = <0xffd00100 0x100>;
  349. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  350. clock-names = "timer";
  351. };
  352. uart0: serial0@ffc02000 {
  353. compatible = "snps,dw-apb-uart";
  354. reg = <0xffc02000 0x100>;
  355. interrupts = <0 108 4>;
  356. reg-shift = <2>;
  357. reg-io-width = <4>;
  358. resets = <&rst UART0_RESET>;
  359. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  360. status = "disabled";
  361. };
  362. uart1: serial1@ffc02100 {
  363. compatible = "snps,dw-apb-uart";
  364. reg = <0xffc02100 0x100>;
  365. interrupts = <0 109 4>;
  366. reg-shift = <2>;
  367. reg-io-width = <4>;
  368. resets = <&rst UART1_RESET>;
  369. clocks = <&clkmgr STRATIX10_L4_SP_CLK>;
  370. status = "disabled";
  371. };
  372. usbphy0: usbphy@0 {
  373. #phy-cells = <0>;
  374. compatible = "usb-nop-xceiv";
  375. status = "okay";
  376. };
  377. usb0: usb@ffb00000 {
  378. compatible = "snps,dwc2";
  379. reg = <0xffb00000 0x40000>;
  380. interrupts = <0 93 4>;
  381. phys = <&usbphy0>;
  382. phy-names = "usb2-phy";
  383. resets = <&rst USB0_RESET>, <&rst USB0_OCP_RESET>;
  384. reset-names = "dwc2", "dwc2-ecc";
  385. clocks = <&clkmgr STRATIX10_USB_CLK>;
  386. status = "disabled";
  387. };
  388. usb1: usb@ffb40000 {
  389. compatible = "snps,dwc2";
  390. reg = <0xffb40000 0x40000>;
  391. interrupts = <0 94 4>;
  392. phys = <&usbphy0>;
  393. phy-names = "usb2-phy";
  394. resets = <&rst USB1_RESET>, <&rst USB1_OCP_RESET>;
  395. reset-names = "dwc2", "dwc2-ecc";
  396. clocks = <&clkmgr STRATIX10_USB_CLK>;
  397. status = "disabled";
  398. };
  399. watchdog0: watchdog@ffd00200 {
  400. compatible = "snps,dw-wdt";
  401. reg = <0xffd00200 0x100>;
  402. interrupts = <0 117 4>;
  403. resets = <&rst WATCHDOG0_RESET>;
  404. clocks = <&clkmgr STRATIX10_L4_SYS_FREE_CLK>;
  405. status = "disabled";
  406. };
  407. watchdog1: watchdog@ffd00300 {
  408. compatible = "snps,dw-wdt";
  409. reg = <0xffd00300 0x100>;
  410. interrupts = <0 118 4>;
  411. resets = <&rst WATCHDOG1_RESET>;
  412. clocks = <&clkmgr STRATIX10_L4_SYS_FREE_CLK>;
  413. status = "disabled";
  414. };
  415. watchdog2: watchdog@ffd00400 {
  416. compatible = "snps,dw-wdt";
  417. reg = <0xffd00400 0x100>;
  418. interrupts = <0 125 4>;
  419. resets = <&rst WATCHDOG2_RESET>;
  420. clocks = <&clkmgr STRATIX10_L4_SYS_FREE_CLK>;
  421. status = "disabled";
  422. };
  423. watchdog3: watchdog@ffd00500 {
  424. compatible = "snps,dw-wdt";
  425. reg = <0xffd00500 0x100>;
  426. interrupts = <0 126 4>;
  427. resets = <&rst WATCHDOG3_RESET>;
  428. clocks = <&clkmgr STRATIX10_L4_SYS_FREE_CLK>;
  429. status = "disabled";
  430. };
  431. eccmgr {
  432. compatible = "altr,socfpga-s10-ecc-manager";
  433. interrupts = <0 15 4>, <0 95 4>;
  434. interrupt-controller;
  435. #interrupt-cells = <2>;
  436. sdramedac {
  437. compatible = "altr,sdram-edac-s10";
  438. interrupts = <16 4>, <48 4>;
  439. };
  440. };
  441. qspi: spi@ff8d2000 {
  442. compatible = "cdns,qspi-nor";
  443. #address-cells = <1>;
  444. #size-cells = <0>;
  445. reg = <0xff8d2000 0x100>,
  446. <0xff900000 0x100000>;
  447. interrupts = <0 3 4>;
  448. cdns,fifo-depth = <128>;
  449. cdns,fifo-width = <4>;
  450. cdns,trigger-address = <0x00000000>;
  451. clocks = <&qspi_clk>;
  452. status = "disabled";
  453. };
  454. };
  455. };