zynq-7000.dtsi 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. /*-
  2. * Copyright (c) 2016 The FreeBSD Foundation
  3. * All rights reserved.
  4. *
  5. * Redistribution and use in source and binary forms, with or without
  6. * modification, are permitted provided that the following conditions
  7. * are met:
  8. * 1. Redistributions of source code must retain the above copyright
  9. * notice, this list of conditions and the following disclaimer.
  10. * 2. Redistributions in binary form must reproduce the above copyright
  11. * notice, this list of conditions and the following disclaimer in the
  12. * documentation and/or other materials provided with the distribution.
  13. *
  14. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  15. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  16. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  17. * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  18. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  19. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  20. * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  21. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  22. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  23. * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  24. * SUCH DAMAGE.
  25. *
  26. * $FreeBSD$
  27. */
  28. / {
  29. compatible = "xlnx,zynq-7000";
  30. #address-cells = <1>;
  31. #size-cells = <1>;
  32. interrupt-parent = <&GIC>;
  33. // Reserve first half megabyte because it is not accessible to all
  34. // bus masters.
  35. memreserve = <0x00000000 0x00080000>;
  36. // Zynq PS System registers.
  37. //
  38. ps7sys@f8000000 {
  39. device_type = "soc";
  40. compatible = "simple-bus";
  41. #address-cells = <1>;
  42. #size-cells = <1>;
  43. ranges = <0x0 0xf8000000 0xf10000>;
  44. // SLCR block
  45. slcr: slcr@7000 {
  46. compatible = "xlnx,zy7_slcr";
  47. reg = <0x0 0x1000>;
  48. };
  49. // Interrupt controller
  50. GIC: gic {
  51. compatible = "arm,gic";
  52. interrupt-controller;
  53. #address-cells = <0>;
  54. #interrupt-cells = <3>;
  55. reg = <0xf01000 0x1000>, // distributer registers
  56. <0xf00100 0x0100>; // CPU if registers
  57. };
  58. // L2 cache controller
  59. pl310@f02000 {
  60. compatible = "arm,pl310";
  61. reg = <0xf02000 0x1000>;
  62. interrupts = <0 2 4>;
  63. interrupt-parent = <&GIC>;
  64. };
  65. // Device Config
  66. devcfg: devcfg@7000 {
  67. compatible = "xlnx,zy7_devcfg";
  68. reg = <0x7000 0x1000>;
  69. interrupts = <0 8 4>;
  70. interrupt-parent = <&GIC>;
  71. };
  72. // triple timer counters0,1
  73. ttc0: ttc@1000 {
  74. compatible = "xlnx,ttc";
  75. reg = <0x1000 0x1000>;
  76. };
  77. ttc1: ttc@2000 {
  78. compatible = "xlnx,ttc";
  79. reg = <0x2000 0x1000>;
  80. };
  81. // ARM Cortex A9 TWD Timer
  82. global_timer: timer@f00600 {
  83. compatible = "arm,mpcore-timers";
  84. #address-cells = <1>;
  85. #size-cells = <0>;
  86. reg = <0xf00200 0x100>, // Global Timer Regs
  87. <0xf00600 0x20>; // Private Timer Regs
  88. interrupts = <1 11 1>, <1 13 1>;
  89. interrupt-parent = <&GIC>;
  90. };
  91. // system watch-dog timer
  92. swdt@5000 {
  93. device_type = "watchdog";
  94. compatible = "xlnx,zy7_wdt";
  95. reg = <0x5000 0x1000>;
  96. interrupts = <0 9 1>;
  97. interrupt-parent = <&GIC>;
  98. };
  99. scuwdt@f00620 {
  100. device_type = "watchdog";
  101. compatible = "arm,mpcore_wdt";
  102. reg = <0xf00620 0x20>;
  103. interrupts = <1 14 1>;
  104. interrupt-parent = <&GIC>;
  105. reset = <1>;
  106. };
  107. }; // pssys@f8000000
  108. // Zynq PS I/O Peripheral registers.
  109. //
  110. ps7io@e0000000 {
  111. device_type = "soc";
  112. compatible = "simple-bus";
  113. #address-cells = <1>;
  114. #size-cells = <1>;
  115. ranges = <0x0 0xe0000000 0x300000>;
  116. // UART controllers
  117. uart0: uart@0000 {
  118. device_type = "serial";
  119. compatible = "cadence,uart";
  120. status = "disabled";
  121. reg = <0x0000 0x1000>;
  122. interrupts = <0 27 4>;
  123. interrupt-parent = <&GIC>;
  124. clock-frequency = <50000000>;
  125. };
  126. uart1: uart@1000 {
  127. device_type = "serial";
  128. compatible = "cadence,uart";
  129. status = "disabled";
  130. reg = <0x1000 0x1000>;
  131. interrupts = <0 50 4>;
  132. interrupt-parent = <&GIC>;
  133. clock-frequency = <50000000>;
  134. };
  135. // USB controllers
  136. ehci0: ehci@2000 {
  137. compatible = "xlnx,zy7_ehci";
  138. status = "disabled";
  139. reg = <0x2000 0x1000>;
  140. interrupts = <0 21 4>;
  141. interrupt-parent = <&GIC>;
  142. };
  143. ehci1: ehci@3000 {
  144. compatible = "xlnx,zy7_ehci";
  145. status = "disabled";
  146. reg = <0x3000 0x1000>;
  147. interrupts = <0 44 4>;
  148. interrupt-parent = <&GIC>;
  149. };
  150. // GPIO controller
  151. gpio: gpio@a000 {
  152. compatible = "xlnx,zy7_gpio";
  153. reg = <0xa000 0x1000>;
  154. interrupts = <0 20 4>;
  155. interrupt-parent = <&GIC>;
  156. };
  157. // Gigabit Ethernet controllers
  158. eth0: eth@b000 {
  159. device_type = "network";
  160. compatible = "cdns,zynq-gem", "cadence,gem";
  161. status = "disabled";
  162. reg = <0xb000 0x1000>;
  163. interrupts = <0 22 4>;
  164. interrupt-parent = <&GIC>;
  165. ref-clock-num = <0>;
  166. };
  167. eth1: eth@c000 {
  168. device_type = "network";
  169. compatible = "cdns,zynq-gem", "cadence,gem";
  170. status = "disabled";
  171. reg = <0xc000 0x1000>;
  172. interrupts = <0 45 4>;
  173. interrupt-parent = <&GIC>;
  174. ref-clock-num = <1>;
  175. };
  176. // Quad-SPI controller
  177. qspi0: qspi@d000 {
  178. compatible = "xlnx,zy7_qspi";
  179. status = "disabled";
  180. reg = <0xd000 0x1000>;
  181. interrupts = <0 19 4>;
  182. interrupt-parent = <&GIC>;
  183. ref-clock = <200000000>; // 200 Mhz
  184. spi-clock = <50000000>; // 50 Mhz
  185. };
  186. // SPI controllers
  187. spi0: spi0@6000 {
  188. compatible = "xlnx,zy7_spi";
  189. status = "disabled";
  190. reg = <0x6000 0x100>;
  191. interrupts = <0 26 4>;
  192. interrupt-parent = <&GIC>;
  193. };
  194. spi1: spi0@7000 {
  195. compatible = "xlnx,zy7_spi";
  196. status = "disabled";
  197. reg = <0x7000 0x100>;
  198. interrupts = <0 49 4>;
  199. interrupt-parent = <&GIC>;
  200. };
  201. // SDIO controllers
  202. sdhci0: sdhci@100000 {
  203. compatible = "xlnx,zy7_sdhci";
  204. status = "disabled";
  205. reg = <0x100000 0x1000>;
  206. interrupts = <0 24 4>;
  207. interrupt-parent = <&GIC>;
  208. max-frequency = <50000000>;
  209. };
  210. sdhci1: sdhci@101000 {
  211. compatible = "xlnx,zy7_sdhci";
  212. status = "disabled";
  213. reg = <0x101000 0x1000>;
  214. interrupts = <0 47 4>;
  215. interrupt-parent = <&GIC>;
  216. max-frequency = <50000000>;
  217. };
  218. }; // ps7io@e0000000
  219. };