zynq-7000.dtsi 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. /*
  2. * Xilinx Zynq 7000 DTSI
  3. * Describes the hardware common to all Zynq 7000-based boards.
  4. *
  5. * Copyright (C) 2011 - 2015 Xilinx
  6. *
  7. * SPDX-License-Identifier: GPL-2.0+
  8. */
  9. /include/ "skeleton.dtsi"
  10. / {
  11. compatible = "xlnx,zynq-7000";
  12. cpus {
  13. #address-cells = <1>;
  14. #size-cells = <0>;
  15. cpu@0 {
  16. compatible = "arm,cortex-a9";
  17. device_type = "cpu";
  18. reg = <0>;
  19. clocks = <&clkc 3>;
  20. clock-latency = <1000>;
  21. cpu0-supply = <&regulator_vccpint>;
  22. operating-points = <
  23. /* kHz uV */
  24. 666667 1000000
  25. 333334 1000000
  26. >;
  27. };
  28. cpu@1 {
  29. compatible = "arm,cortex-a9";
  30. device_type = "cpu";
  31. reg = <1>;
  32. clocks = <&clkc 3>;
  33. };
  34. };
  35. pmu {
  36. compatible = "arm,cortex-a9-pmu";
  37. interrupts = <0 5 4>, <0 6 4>;
  38. interrupt-parent = <&intc>;
  39. reg = < 0xf8891000 0x1000 0xf8893000 0x1000 >;
  40. };
  41. regulator_vccpint: fixedregulator@0 {
  42. compatible = "regulator-fixed";
  43. regulator-name = "VCCPINT";
  44. regulator-min-microvolt = <1000000>;
  45. regulator-max-microvolt = <1000000>;
  46. regulator-boot-on;
  47. regulator-always-on;
  48. };
  49. amba: amba {
  50. u-boot,dm-pre-reloc;
  51. compatible = "simple-bus";
  52. #address-cells = <1>;
  53. #size-cells = <1>;
  54. interrupt-parent = <&intc>;
  55. ranges;
  56. adc: adc@f8007100 {
  57. compatible = "xlnx,zynq-xadc-1.00.a";
  58. reg = <0xf8007100 0x20>;
  59. interrupts = <0 7 4>;
  60. interrupt-parent = <&intc>;
  61. clocks = <&clkc 12>;
  62. };
  63. can0: can@e0008000 {
  64. compatible = "xlnx,zynq-can-1.0";
  65. status = "disabled";
  66. clocks = <&clkc 19>, <&clkc 36>;
  67. clock-names = "can_clk", "pclk";
  68. reg = <0xe0008000 0x1000>;
  69. interrupts = <0 28 4>;
  70. interrupt-parent = <&intc>;
  71. tx-fifo-depth = <0x40>;
  72. rx-fifo-depth = <0x40>;
  73. };
  74. can1: can@e0009000 {
  75. compatible = "xlnx,zynq-can-1.0";
  76. status = "disabled";
  77. clocks = <&clkc 20>, <&clkc 37>;
  78. clock-names = "can_clk", "pclk";
  79. reg = <0xe0009000 0x1000>;
  80. interrupts = <0 51 4>;
  81. interrupt-parent = <&intc>;
  82. tx-fifo-depth = <0x40>;
  83. rx-fifo-depth = <0x40>;
  84. };
  85. gpio0: gpio@e000a000 {
  86. compatible = "xlnx,zynq-gpio-1.0";
  87. #gpio-cells = <2>;
  88. clocks = <&clkc 42>;
  89. gpio-controller;
  90. interrupt-parent = <&intc>;
  91. interrupts = <0 20 4>;
  92. reg = <0xe000a000 0x1000>;
  93. };
  94. i2c0: i2c@e0004000 {
  95. compatible = "cdns,i2c-r1p10";
  96. status = "disabled";
  97. clocks = <&clkc 38>;
  98. interrupt-parent = <&intc>;
  99. interrupts = <0 25 4>;
  100. reg = <0xe0004000 0x1000>;
  101. #address-cells = <1>;
  102. #size-cells = <0>;
  103. };
  104. i2c1: i2c@e0005000 {
  105. compatible = "cdns,i2c-r1p10";
  106. status = "disabled";
  107. clocks = <&clkc 39>;
  108. interrupt-parent = <&intc>;
  109. interrupts = <0 48 4>;
  110. reg = <0xe0005000 0x1000>;
  111. #address-cells = <1>;
  112. #size-cells = <0>;
  113. };
  114. intc: interrupt-controller@f8f01000 {
  115. compatible = "arm,cortex-a9-gic";
  116. #interrupt-cells = <3>;
  117. interrupt-controller;
  118. reg = <0xF8F01000 0x1000>,
  119. <0xF8F00100 0x100>;
  120. };
  121. L2: cache-controller@f8f02000 {
  122. compatible = "arm,pl310-cache";
  123. reg = <0xF8F02000 0x1000>;
  124. interrupts = <0 2 4>;
  125. arm,data-latency = <3 2 2>;
  126. arm,tag-latency = <2 2 2>;
  127. cache-unified;
  128. cache-level = <2>;
  129. };
  130. mc: memory-controller@f8006000 {
  131. compatible = "xlnx,zynq-ddrc-a05";
  132. reg = <0xf8006000 0x1000>;
  133. };
  134. uart0: serial@e0000000 {
  135. compatible = "xlnx,xuartps", "cdns,uart-r1p8";
  136. status = "disabled";
  137. clocks = <&clkc 23>, <&clkc 40>;
  138. clock-names = "uart_clk", "pclk";
  139. reg = <0xE0000000 0x1000>;
  140. interrupts = <0 27 4>;
  141. };
  142. uart1: serial@e0001000 {
  143. compatible = "xlnx,xuartps", "cdns,uart-r1p8";
  144. status = "disabled";
  145. clocks = <&clkc 24>, <&clkc 41>;
  146. clock-names = "uart_clk", "pclk";
  147. reg = <0xE0001000 0x1000>;
  148. interrupts = <0 50 4>;
  149. };
  150. spi0: spi@e0006000 {
  151. compatible = "xlnx,zynq-spi-r1p6";
  152. reg = <0xe0006000 0x1000>;
  153. status = "disabled";
  154. interrupt-parent = <&intc>;
  155. interrupts = <0 26 4>;
  156. clocks = <&clkc 25>, <&clkc 34>;
  157. clock-names = "ref_clk", "pclk";
  158. spi-max-frequency = <166666700>;
  159. #address-cells = <1>;
  160. #size-cells = <0>;
  161. };
  162. spi1: spi@e0007000 {
  163. compatible = "xlnx,zynq-spi-r1p6";
  164. reg = <0xe0007000 0x1000>;
  165. status = "disabled";
  166. interrupt-parent = <&intc>;
  167. interrupts = <0 49 4>;
  168. clocks = <&clkc 26>, <&clkc 35>;
  169. clock-names = "ref_clk", "pclk";
  170. spi-max-frequency = <166666700>;
  171. #address-cells = <1>;
  172. #size-cells = <0>;
  173. };
  174. qspi: spi@e000d000 {
  175. clock-names = "ref_clk", "pclk";
  176. clocks = <&clkc 10>, <&clkc 43>;
  177. compatible = "xlnx,zynq-qspi-1.0";
  178. status = "disabled";
  179. interrupt-parent = <&intc>;
  180. interrupts = <0 19 4>;
  181. reg = <0xe000d000 0x1000>;
  182. #address-cells = <1>;
  183. #size-cells = <0>;
  184. };
  185. gem0: ethernet@e000b000 {
  186. compatible = "cdns,zynq-gem", "cdns,gem";
  187. reg = <0xe000b000 0x1000>;
  188. status = "disabled";
  189. interrupts = <0 22 4>;
  190. clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;
  191. clock-names = "pclk", "hclk", "tx_clk";
  192. #address-cells = <1>;
  193. #size-cells = <0>;
  194. };
  195. gem1: ethernet@e000c000 {
  196. compatible = "cdns,zynq-gem", "cdns,gem";
  197. reg = <0xe000c000 0x1000>;
  198. status = "disabled";
  199. interrupts = <0 45 4>;
  200. clocks = <&clkc 31>, <&clkc 31>, <&clkc 14>;
  201. clock-names = "pclk", "hclk", "tx_clk";
  202. #address-cells = <1>;
  203. #size-cells = <0>;
  204. };
  205. sdhci0: sdhci@e0100000 {
  206. compatible = "arasan,sdhci-8.9a";
  207. status = "disabled";
  208. clock-names = "clk_xin", "clk_ahb";
  209. clocks = <&clkc 21>, <&clkc 32>;
  210. interrupt-parent = <&intc>;
  211. interrupts = <0 24 4>;
  212. reg = <0xe0100000 0x1000>;
  213. };
  214. sdhci1: sdhci@e0101000 {
  215. compatible = "arasan,sdhci-8.9a";
  216. status = "disabled";
  217. clock-names = "clk_xin", "clk_ahb";
  218. clocks = <&clkc 22>, <&clkc 33>;
  219. interrupt-parent = <&intc>;
  220. interrupts = <0 47 4>;
  221. reg = <0xe0101000 0x1000>;
  222. };
  223. slcr: slcr@f8000000 {
  224. #address-cells = <1>;
  225. #size-cells = <1>;
  226. compatible = "xlnx,zynq-slcr", "syscon", "simple-bus";
  227. reg = <0xF8000000 0x1000>;
  228. ranges;
  229. clkc: clkc@100 {
  230. #clock-cells = <1>;
  231. compatible = "xlnx,ps7-clkc";
  232. fclk-enable = <0>;
  233. clock-output-names = "armpll", "ddrpll", "iopll", "cpu_6or4x",
  234. "cpu_3or2x", "cpu_2x", "cpu_1x", "ddr2x", "ddr3x",
  235. "dci", "lqspi", "smc", "pcap", "gem0", "gem1",
  236. "fclk0", "fclk1", "fclk2", "fclk3", "can0", "can1",
  237. "sdio0", "sdio1", "uart0", "uart1", "spi0", "spi1",
  238. "dma", "usb0_aper", "usb1_aper", "gem0_aper",
  239. "gem1_aper", "sdio0_aper", "sdio1_aper",
  240. "spi0_aper", "spi1_aper", "can0_aper", "can1_aper",
  241. "i2c0_aper", "i2c1_aper", "uart0_aper", "uart1_aper",
  242. "gpio_aper", "lqspi_aper", "smc_aper", "swdt",
  243. "dbg_trc", "dbg_apb";
  244. reg = <0x100 0x100>;
  245. };
  246. pinctrl0: pinctrl@700 {
  247. compatible = "xlnx,pinctrl-zynq";
  248. reg = <0x700 0x200>;
  249. syscon = <&slcr>;
  250. };
  251. };
  252. dmac_s: dmac@f8003000 {
  253. compatible = "arm,pl330", "arm,primecell";
  254. reg = <0xf8003000 0x1000>;
  255. interrupt-parent = <&intc>;
  256. interrupt-names = "abort", "dma0", "dma1", "dma2", "dma3",
  257. "dma4", "dma5", "dma6", "dma7";
  258. interrupts = <0 13 4>,
  259. <0 14 4>, <0 15 4>,
  260. <0 16 4>, <0 17 4>,
  261. <0 40 4>, <0 41 4>,
  262. <0 42 4>, <0 43 4>;
  263. #dma-cells = <1>;
  264. #dma-channels = <8>;
  265. #dma-requests = <4>;
  266. clocks = <&clkc 27>;
  267. clock-names = "apb_pclk";
  268. };
  269. devcfg: devcfg@f8007000 {
  270. compatible = "xlnx,zynq-devcfg-1.0";
  271. reg = <0xf8007000 0x100>;
  272. };
  273. global_timer: timer@f8f00200 {
  274. compatible = "arm,cortex-a9-global-timer";
  275. reg = <0xf8f00200 0x20>;
  276. interrupts = <1 11 0x301>;
  277. interrupt-parent = <&intc>;
  278. clocks = <&clkc 4>;
  279. };
  280. ttc0: timer@f8001000 {
  281. interrupt-parent = <&intc>;
  282. interrupts = <0 10 4>, <0 11 4>, <0 12 4>;
  283. compatible = "cdns,ttc";
  284. clocks = <&clkc 6>;
  285. reg = <0xF8001000 0x1000>;
  286. };
  287. ttc1: timer@f8002000 {
  288. interrupt-parent = <&intc>;
  289. interrupts = <0 37 4>, <0 38 4>, <0 39 4>;
  290. compatible = "cdns,ttc";
  291. clocks = <&clkc 6>;
  292. reg = <0xF8002000 0x1000>;
  293. };
  294. scutimer: timer@f8f00600 {
  295. interrupt-parent = <&intc>;
  296. interrupts = <1 13 0x301>;
  297. compatible = "arm,cortex-a9-twd-timer";
  298. reg = <0xf8f00600 0x20>;
  299. clocks = <&clkc 4>;
  300. };
  301. usb0: usb@e0002000 {
  302. compatible = "xlnx,zynq-usb-2.20a", "chipidea,usb2";
  303. status = "disabled";
  304. clocks = <&clkc 28>;
  305. interrupt-parent = <&intc>;
  306. interrupts = <0 21 4>;
  307. reg = <0xe0002000 0x1000>;
  308. phy_type = "ulpi";
  309. };
  310. usb1: usb@e0003000 {
  311. compatible = "xlnx,zynq-usb-2.20a", "chipidea,usb2";
  312. status = "disabled";
  313. clocks = <&clkc 29>;
  314. interrupt-parent = <&intc>;
  315. interrupts = <0 44 4>;
  316. reg = <0xe0003000 0x1000>;
  317. phy_type = "ulpi";
  318. };
  319. watchdog0: watchdog@f8005000 {
  320. clocks = <&clkc 45>;
  321. compatible = "cdns,wdt-r1p2";
  322. interrupt-parent = <&intc>;
  323. interrupts = <0 9 1>;
  324. reg = <0xf8005000 0x1000>;
  325. timeout-sec = <10>;
  326. };
  327. };
  328. };