zynq-7000.dtsi 8.6 KB

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