zynq-7000.dtsi 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright (C) 2011 - 2014 Xilinx
  4. */
  5. / {
  6. #address-cells = <1>;
  7. #size-cells = <1>;
  8. compatible = "xlnx,zynq-7000";
  9. cpus {
  10. #address-cells = <1>;
  11. #size-cells = <0>;
  12. cpu0: cpu@0 {
  13. compatible = "arm,cortex-a9";
  14. device_type = "cpu";
  15. reg = <0>;
  16. clocks = <&clkc 3>;
  17. clock-latency = <1000>;
  18. cpu0-supply = <&regulator_vccpint>;
  19. operating-points = <
  20. /* kHz uV */
  21. 666667 1000000
  22. 333334 1000000
  23. >;
  24. };
  25. cpu1: cpu@1 {
  26. compatible = "arm,cortex-a9";
  27. device_type = "cpu";
  28. reg = <1>;
  29. clocks = <&clkc 3>;
  30. };
  31. };
  32. fpga_full: fpga-full {
  33. compatible = "fpga-region";
  34. fpga-mgr = <&devcfg>;
  35. #address-cells = <1>;
  36. #size-cells = <1>;
  37. ranges;
  38. };
  39. pmu@f8891000 {
  40. compatible = "arm,cortex-a9-pmu";
  41. interrupts = <0 5 4>, <0 6 4>;
  42. interrupt-parent = <&intc>;
  43. reg = <0xf8891000 0x1000>,
  44. <0xf8893000 0x1000>;
  45. };
  46. regulator_vccpint: fixedregulator {
  47. compatible = "regulator-fixed";
  48. regulator-name = "VCCPINT";
  49. regulator-min-microvolt = <1000000>;
  50. regulator-max-microvolt = <1000000>;
  51. regulator-boot-on;
  52. regulator-always-on;
  53. };
  54. replicator {
  55. compatible = "arm,coresight-static-replicator";
  56. clocks = <&clkc 27>, <&clkc 46>, <&clkc 47>;
  57. clock-names = "apb_pclk", "dbg_trc", "dbg_apb";
  58. out-ports {
  59. #address-cells = <1>;
  60. #size-cells = <0>;
  61. /* replicator output ports */
  62. port@0 {
  63. reg = <0>;
  64. replicator_out_port0: endpoint {
  65. remote-endpoint = <&tpiu_in_port>;
  66. };
  67. };
  68. port@1 {
  69. reg = <1>;
  70. replicator_out_port1: endpoint {
  71. remote-endpoint = <&etb_in_port>;
  72. };
  73. };
  74. };
  75. in-ports {
  76. /* replicator input port */
  77. port {
  78. replicator_in_port0: endpoint {
  79. remote-endpoint = <&funnel_out_port>;
  80. };
  81. };
  82. };
  83. };
  84. amba: axi {
  85. compatible = "simple-bus";
  86. #address-cells = <1>;
  87. #size-cells = <1>;
  88. interrupt-parent = <&intc>;
  89. ranges;
  90. adc: adc@f8007100 {
  91. compatible = "xlnx,zynq-xadc-1.00.a";
  92. reg = <0xf8007100 0x20>;
  93. interrupts = <0 7 4>;
  94. interrupt-parent = <&intc>;
  95. clocks = <&clkc 12>;
  96. };
  97. can0: can@e0008000 {
  98. compatible = "xlnx,zynq-can-1.0";
  99. status = "disabled";
  100. clocks = <&clkc 19>, <&clkc 36>;
  101. clock-names = "can_clk", "pclk";
  102. reg = <0xe0008000 0x1000>;
  103. interrupts = <0 28 4>;
  104. interrupt-parent = <&intc>;
  105. tx-fifo-depth = <0x40>;
  106. rx-fifo-depth = <0x40>;
  107. };
  108. can1: can@e0009000 {
  109. compatible = "xlnx,zynq-can-1.0";
  110. status = "disabled";
  111. clocks = <&clkc 20>, <&clkc 37>;
  112. clock-names = "can_clk", "pclk";
  113. reg = <0xe0009000 0x1000>;
  114. interrupts = <0 51 4>;
  115. interrupt-parent = <&intc>;
  116. tx-fifo-depth = <0x40>;
  117. rx-fifo-depth = <0x40>;
  118. };
  119. gpio0: gpio@e000a000 {
  120. compatible = "xlnx,zynq-gpio-1.0";
  121. #gpio-cells = <2>;
  122. clocks = <&clkc 42>;
  123. gpio-controller;
  124. interrupt-controller;
  125. #interrupt-cells = <2>;
  126. interrupt-parent = <&intc>;
  127. interrupts = <0 20 4>;
  128. reg = <0xe000a000 0x1000>;
  129. };
  130. i2c0: i2c@e0004000 {
  131. compatible = "cdns,i2c-r1p10";
  132. status = "disabled";
  133. clocks = <&clkc 38>;
  134. interrupt-parent = <&intc>;
  135. interrupts = <0 25 4>;
  136. reg = <0xe0004000 0x1000>;
  137. #address-cells = <1>;
  138. #size-cells = <0>;
  139. };
  140. i2c1: i2c@e0005000 {
  141. compatible = "cdns,i2c-r1p10";
  142. status = "disabled";
  143. clocks = <&clkc 39>;
  144. interrupt-parent = <&intc>;
  145. interrupts = <0 48 4>;
  146. reg = <0xe0005000 0x1000>;
  147. #address-cells = <1>;
  148. #size-cells = <0>;
  149. };
  150. intc: interrupt-controller@f8f01000 {
  151. compatible = "arm,cortex-a9-gic";
  152. #interrupt-cells = <3>;
  153. interrupt-controller;
  154. reg = <0xF8F01000 0x1000>,
  155. <0xF8F00100 0x100>;
  156. };
  157. L2: cache-controller@f8f02000 {
  158. compatible = "arm,pl310-cache";
  159. reg = <0xF8F02000 0x1000>;
  160. interrupts = <0 2 4>;
  161. arm,data-latency = <3 2 2>;
  162. arm,tag-latency = <2 2 2>;
  163. cache-unified;
  164. cache-level = <2>;
  165. };
  166. mc: memory-controller@f8006000 {
  167. compatible = "xlnx,zynq-ddrc-a05";
  168. reg = <0xf8006000 0x1000>;
  169. };
  170. uart0: serial@e0000000 {
  171. compatible = "xlnx,xuartps", "cdns,uart-r1p8";
  172. status = "disabled";
  173. clocks = <&clkc 23>, <&clkc 40>;
  174. clock-names = "uart_clk", "pclk";
  175. reg = <0xE0000000 0x1000>;
  176. interrupts = <0 27 4>;
  177. };
  178. uart1: serial@e0001000 {
  179. compatible = "xlnx,xuartps", "cdns,uart-r1p8";
  180. status = "disabled";
  181. clocks = <&clkc 24>, <&clkc 41>;
  182. clock-names = "uart_clk", "pclk";
  183. reg = <0xE0001000 0x1000>;
  184. interrupts = <0 50 4>;
  185. };
  186. spi0: spi@e0006000 {
  187. compatible = "xlnx,zynq-spi-r1p6";
  188. reg = <0xe0006000 0x1000>;
  189. status = "disabled";
  190. interrupt-parent = <&intc>;
  191. interrupts = <0 26 4>;
  192. clocks = <&clkc 25>, <&clkc 34>;
  193. clock-names = "ref_clk", "pclk";
  194. #address-cells = <1>;
  195. #size-cells = <0>;
  196. };
  197. spi1: spi@e0007000 {
  198. compatible = "xlnx,zynq-spi-r1p6";
  199. reg = <0xe0007000 0x1000>;
  200. status = "disabled";
  201. interrupt-parent = <&intc>;
  202. interrupts = <0 49 4>;
  203. clocks = <&clkc 26>, <&clkc 35>;
  204. clock-names = "ref_clk", "pclk";
  205. #address-cells = <1>;
  206. #size-cells = <0>;
  207. };
  208. gem0: ethernet@e000b000 {
  209. compatible = "cdns,zynq-gem", "cdns,gem";
  210. reg = <0xe000b000 0x1000>;
  211. status = "disabled";
  212. interrupts = <0 22 4>;
  213. clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;
  214. clock-names = "pclk", "hclk", "tx_clk";
  215. #address-cells = <1>;
  216. #size-cells = <0>;
  217. };
  218. gem1: ethernet@e000c000 {
  219. compatible = "cdns,zynq-gem", "cdns,gem";
  220. reg = <0xe000c000 0x1000>;
  221. status = "disabled";
  222. interrupts = <0 45 4>;
  223. clocks = <&clkc 31>, <&clkc 31>, <&clkc 14>;
  224. clock-names = "pclk", "hclk", "tx_clk";
  225. #address-cells = <1>;
  226. #size-cells = <0>;
  227. };
  228. smcc: memory-controller@e000e000 {
  229. compatible = "arm,pl353-smc-r2p1", "arm,primecell";
  230. reg = <0xe000e000 0x0001000>;
  231. status = "disabled";
  232. clock-names = "memclk", "apb_pclk";
  233. clocks = <&clkc 11>, <&clkc 44>;
  234. ranges = <0x0 0x0 0xe1000000 0x1000000 /* Nand CS region */
  235. 0x1 0x0 0xe2000000 0x2000000 /* SRAM/NOR CS0 region */
  236. 0x2 0x0 0xe4000000 0x2000000>; /* SRAM/NOR CS1 region */
  237. #address-cells = <2>;
  238. #size-cells = <1>;
  239. nfc0: nand-controller@0,0 {
  240. compatible = "arm,pl353-nand-r2p1";
  241. reg = <0 0 0x1000000>;
  242. status = "disabled";
  243. #address-cells = <1>;
  244. #size-cells = <0>;
  245. };
  246. };
  247. sdhci0: mmc@e0100000 {
  248. compatible = "arasan,sdhci-8.9a";
  249. status = "disabled";
  250. clock-names = "clk_xin", "clk_ahb";
  251. clocks = <&clkc 21>, <&clkc 32>;
  252. interrupt-parent = <&intc>;
  253. interrupts = <0 24 4>;
  254. reg = <0xe0100000 0x1000>;
  255. };
  256. sdhci1: mmc@e0101000 {
  257. compatible = "arasan,sdhci-8.9a";
  258. status = "disabled";
  259. clock-names = "clk_xin", "clk_ahb";
  260. clocks = <&clkc 22>, <&clkc 33>;
  261. interrupt-parent = <&intc>;
  262. interrupts = <0 47 4>;
  263. reg = <0xe0101000 0x1000>;
  264. };
  265. slcr: slcr@f8000000 {
  266. #address-cells = <1>;
  267. #size-cells = <1>;
  268. compatible = "xlnx,zynq-slcr", "syscon", "simple-mfd";
  269. reg = <0xF8000000 0x1000>;
  270. ranges;
  271. clkc: clkc@100 {
  272. #clock-cells = <1>;
  273. compatible = "xlnx,ps7-clkc";
  274. fclk-enable = <0>;
  275. clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x",
  276. "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x",
  277. "dci", "lqspi", "smc", "pcap", "gem0", "gem1",
  278. "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1",
  279. "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1",
  280. "dma", "usb0_aper", "usb1_aper", "gem0_aper",
  281. "gem1_aper", "sdio0_aper", "sdio1_aper",
  282. "spi0_aper", "spi1_aper", "can0_aper", "can1_aper",
  283. "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper",
  284. "gpio_aper", "lqspi_aper", "smc_aper", "swdt",
  285. "dbg_trc", "dbg_apb";
  286. reg = <0x100 0x100>;
  287. };
  288. rstc: rstc@200 {
  289. compatible = "xlnx,zynq-reset";
  290. reg = <0x200 0x48>;
  291. #reset-cells = <1>;
  292. syscon = <&slcr>;
  293. };
  294. pinctrl0: pinctrl@700 {
  295. compatible = "xlnx,pinctrl-zynq";
  296. reg = <0x700 0x200>;
  297. syscon = <&slcr>;
  298. };
  299. };
  300. dmac_s: dmac@f8003000 {
  301. compatible = "arm,pl330", "arm,primecell";
  302. reg = <0xf8003000 0x1000>;
  303. interrupt-parent = <&intc>;
  304. interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3",
  305. "dma4", "dma5", "dma6", "dma7";
  306. interrupts = <0 13 4>,
  307. <0 14 4>, <0 15 4>,
  308. <0 16 4>, <0 17 4>,
  309. <0 40 4>, <0 41 4>,
  310. <0 42 4>, <0 43 4>;
  311. #dma-cells = <1>;
  312. clocks = <&clkc 27>;
  313. clock-names = "apb_pclk";
  314. };
  315. devcfg: devcfg@f8007000 {
  316. compatible = "xlnx,zynq-devcfg-1.0";
  317. reg = <0xf8007000 0x100>;
  318. interrupt-parent = <&intc>;
  319. interrupts = <0 8 4>;
  320. clocks = <&clkc 12>;
  321. clock-names = "ref_clk";
  322. syscon = <&slcr>;
  323. };
  324. global_timer: timer@f8f00200 {
  325. compatible = "arm,cortex-a9-global-timer";
  326. reg = <0xf8f00200 0x20>;
  327. interrupts = <1 11 0x301>;
  328. interrupt-parent = <&intc>;
  329. clocks = <&clkc 4>;
  330. };
  331. ttc0: timer@f8001000 {
  332. interrupt-parent = <&intc>;
  333. interrupts = <0 10 4>, <0 11 4>, <0 12 4>;
  334. compatible = "cdns,ttc";
  335. clocks = <&clkc 6>;
  336. reg = <0xF8001000 0x1000>;
  337. };
  338. ttc1: timer@f8002000 {
  339. interrupt-parent = <&intc>;
  340. interrupts = <0 37 4>, <0 38 4>, <0 39 4>;
  341. compatible = "cdns,ttc";
  342. clocks = <&clkc 6>;
  343. reg = <0xF8002000 0x1000>;
  344. };
  345. scutimer: timer@f8f00600 {
  346. interrupt-parent = <&intc>;
  347. interrupts = <1 13 0x301>;
  348. compatible = "arm,cortex-a9-twd-timer";
  349. reg = <0xf8f00600 0x20>;
  350. clocks = <&clkc 4>;
  351. };
  352. usb0: usb@e0002000 {
  353. compatible = "xlnx,zynq-usb-2.20a", "chipidea,usb2";
  354. status = "disabled";
  355. clocks = <&clkc 28>;
  356. interrupt-parent = <&intc>;
  357. interrupts = <0 21 4>;
  358. reg = <0xe0002000 0x1000>;
  359. phy_type = "ulpi";
  360. };
  361. usb1: usb@e0003000 {
  362. compatible = "xlnx,zynq-usb-2.20a", "chipidea,usb2";
  363. status = "disabled";
  364. clocks = <&clkc 29>;
  365. interrupt-parent = <&intc>;
  366. interrupts = <0 44 4>;
  367. reg = <0xe0003000 0x1000>;
  368. phy_type = "ulpi";
  369. };
  370. watchdog0: watchdog@f8005000 {
  371. clocks = <&clkc 45>;
  372. compatible = "cdns,wdt-r1p2";
  373. interrupt-parent = <&intc>;
  374. interrupts = <0 9 1>;
  375. reg = <0xf8005000 0x1000>;
  376. timeout-sec = <10>;
  377. };
  378. etb@f8801000 {
  379. compatible = "arm,coresight-etb10", "arm,primecell";
  380. reg = <0xf8801000 0x1000>;
  381. clocks = <&clkc 27>, <&clkc 46>, <&clkc 47>;
  382. clock-names = "apb_pclk", "dbg_trc", "dbg_apb";
  383. in-ports {
  384. port {
  385. etb_in_port: endpoint {
  386. remote-endpoint = <&replicator_out_port1>;
  387. };
  388. };
  389. };
  390. };
  391. tpiu@f8803000 {
  392. compatible = "arm,coresight-tpiu", "arm,primecell";
  393. reg = <0xf8803000 0x1000>;
  394. clocks = <&clkc 27>, <&clkc 46>, <&clkc 47>;
  395. clock-names = "apb_pclk", "dbg_trc", "dbg_apb";
  396. in-ports {
  397. port {
  398. tpiu_in_port: endpoint {
  399. remote-endpoint = <&replicator_out_port0>;
  400. };
  401. };
  402. };
  403. };
  404. funnel@f8804000 {
  405. compatible = "arm,coresight-static-funnel", "arm,primecell";
  406. reg = <0xf8804000 0x1000>;
  407. clocks = <&clkc 27>, <&clkc 46>, <&clkc 47>;
  408. clock-names = "apb_pclk", "dbg_trc", "dbg_apb";
  409. /* funnel output ports */
  410. out-ports {
  411. port {
  412. funnel_out_port: endpoint {
  413. remote-endpoint =
  414. <&replicator_in_port0>;
  415. };
  416. };
  417. };
  418. in-ports {
  419. #address-cells = <1>;
  420. #size-cells = <0>;
  421. /* funnel input ports */
  422. port@0 {
  423. reg = <0>;
  424. funnel0_in_port0: endpoint {
  425. remote-endpoint = <&ptm0_out_port>;
  426. };
  427. };
  428. port@1 {
  429. reg = <1>;
  430. funnel0_in_port1: endpoint {
  431. remote-endpoint = <&ptm1_out_port>;
  432. };
  433. };
  434. port@2 {
  435. reg = <2>;
  436. funnel0_in_port2: endpoint {
  437. };
  438. };
  439. /* The other input ports are not connect to anything */
  440. };
  441. };
  442. ptm@f889c000 {
  443. compatible = "arm,coresight-etm3x", "arm,primecell";
  444. reg = <0xf889c000 0x1000>;
  445. clocks = <&clkc 27>, <&clkc 46>, <&clkc 47>;
  446. clock-names = "apb_pclk", "dbg_trc", "dbg_apb";
  447. cpu = <&cpu0>;
  448. out-ports {
  449. port {
  450. ptm0_out_port: endpoint {
  451. remote-endpoint = <&funnel0_in_port0>;
  452. };
  453. };
  454. };
  455. };
  456. ptm@f889d000 {
  457. compatible = "arm,coresight-etm3x", "arm,primecell";
  458. reg = <0xf889d000 0x1000>;
  459. clocks = <&clkc 27>, <&clkc 46>, <&clkc 47>;
  460. clock-names = "apb_pclk", "dbg_trc", "dbg_apb";
  461. cpu = <&cpu1>;
  462. out-ports {
  463. port {
  464. ptm1_out_port: endpoint {
  465. remote-endpoint = <&funnel0_in_port1>;
  466. };
  467. };
  468. };
  469. };
  470. };
  471. };