abilis_tb10x.dtsi 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. /*
  2. * Abilis Systems TB10X SOC device tree
  3. *
  4. * Copyright (C) Abilis Systems 2013
  5. *
  6. * Author: Christian Ruppert <christian.ruppert@abilis.com>
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License version 2 as
  10. * published by the Free Software Foundation.
  11. *
  12. * This program is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program; if not, write to the Free Software
  19. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  20. */
  21. / {
  22. compatible = "abilis,arc-tb10x";
  23. #address-cells = <1>;
  24. #size-cells = <1>;
  25. cpus {
  26. #address-cells = <1>;
  27. #size-cells = <0>;
  28. cpu@0 {
  29. device_type = "cpu";
  30. compatible = "snps,arc770d";
  31. reg = <0>;
  32. };
  33. };
  34. /* TIMER0 with interrupt for clockevent */
  35. timer0 {
  36. compatible = "snps,arc-timer";
  37. interrupts = <3>;
  38. interrupt-parent = <&intc>;
  39. clocks = <&cpu_clk>;
  40. };
  41. /* TIMER1 for free running clocksource */
  42. timer1 {
  43. compatible = "snps,arc-timer";
  44. clocks = <&cpu_clk>;
  45. };
  46. soc100 {
  47. #address-cells = <1>;
  48. #size-cells = <1>;
  49. device_type = "soc";
  50. ranges = <0xfe000000 0xfe000000 0x02000000
  51. 0x000F0000 0x000F0000 0x00010000>;
  52. compatible = "abilis,tb10x", "simple-bus";
  53. pll0: oscillator {
  54. compatible = "fixed-clock";
  55. #clock-cells = <0>;
  56. clock-output-names = "pll0";
  57. };
  58. cpu_clk: clkdiv_cpu {
  59. compatible = "fixed-factor-clock";
  60. #clock-cells = <0>;
  61. clocks = <&pll0>;
  62. clock-output-names = "cpu_clk";
  63. };
  64. ahb_clk: clkdiv_ahb {
  65. compatible = "fixed-factor-clock";
  66. #clock-cells = <0>;
  67. clocks = <&pll0>;
  68. clock-output-names = "ahb_clk";
  69. };
  70. iomux: iomux@FF10601c {
  71. compatible = "abilis,tb10x-iomux";
  72. #gpio-range-cells = <3>;
  73. reg = <0xFF10601c 0x4>;
  74. };
  75. intc: interrupt-controller {
  76. compatible = "snps,arc700-intc";
  77. interrupt-controller;
  78. #interrupt-cells = <1>;
  79. };
  80. tb10x_ictl: pic@fe002000 {
  81. compatible = "abilis,tb10x-ictl";
  82. reg = <0xFE002000 0x20>;
  83. interrupt-controller;
  84. #interrupt-cells = <2>;
  85. interrupt-parent = <&intc>;
  86. interrupts = <5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
  87. 20 21 22 23 24 25 26 27 28 29 30 31>;
  88. };
  89. uart@FF100000 {
  90. compatible = "snps,dw-apb-uart";
  91. reg = <0xFF100000 0x100>;
  92. clock-frequency = <166666666>;
  93. interrupts = <25 8>;
  94. reg-shift = <2>;
  95. reg-io-width = <4>;
  96. interrupt-parent = <&tb10x_ictl>;
  97. };
  98. ethernet@FE100000 {
  99. compatible = "snps,dwmac-3.70a","snps,dwmac";
  100. reg = <0xFE100000 0x1058>;
  101. interrupt-parent = <&tb10x_ictl>;
  102. interrupts = <6 8>;
  103. interrupt-names = "macirq";
  104. clocks = <&ahb_clk>;
  105. clock-names = "stmmaceth";
  106. };
  107. dma@FE000000 {
  108. compatible = "snps,dma-spear1340";
  109. reg = <0xFE000000 0x400>;
  110. interrupt-parent = <&tb10x_ictl>;
  111. interrupts = <14 8>;
  112. dma-channels = <6>;
  113. dma-requests = <0>;
  114. dma-masters = <1>;
  115. #dma-cells = <3>;
  116. chan_allocation_order = <0>;
  117. chan_priority = <1>;
  118. block_size = <0x7ff>;
  119. data-width = <4>;
  120. clocks = <&ahb_clk>;
  121. clock-names = "hclk";
  122. multi-block = <1 1 1 1 1 1>;
  123. };
  124. i2c0: i2c@FF120000 {
  125. #address-cells = <1>;
  126. #size-cells = <0>;
  127. compatible = "snps,designware-i2c";
  128. reg = <0xFF120000 0x1000>;
  129. interrupt-parent = <&tb10x_ictl>;
  130. interrupts = <12 8>;
  131. clocks = <&ahb_clk>;
  132. };
  133. i2c1: i2c@FF121000 {
  134. #address-cells = <1>;
  135. #size-cells = <0>;
  136. compatible = "snps,designware-i2c";
  137. reg = <0xFF121000 0x1000>;
  138. interrupt-parent = <&tb10x_ictl>;
  139. interrupts = <12 8>;
  140. clocks = <&ahb_clk>;
  141. };
  142. i2c2: i2c@FF122000 {
  143. #address-cells = <1>;
  144. #size-cells = <0>;
  145. compatible = "snps,designware-i2c";
  146. reg = <0xFF122000 0x1000>;
  147. interrupt-parent = <&tb10x_ictl>;
  148. interrupts = <12 8>;
  149. clocks = <&ahb_clk>;
  150. };
  151. i2c3: i2c@FF123000 {
  152. #address-cells = <1>;
  153. #size-cells = <0>;
  154. compatible = "snps,designware-i2c";
  155. reg = <0xFF123000 0x1000>;
  156. interrupt-parent = <&tb10x_ictl>;
  157. interrupts = <12 8>;
  158. clocks = <&ahb_clk>;
  159. };
  160. i2c4: i2c@FF124000 {
  161. #address-cells = <1>;
  162. #size-cells = <0>;
  163. compatible = "snps,designware-i2c";
  164. reg = <0xFF124000 0x1000>;
  165. interrupt-parent = <&tb10x_ictl>;
  166. interrupts = <12 8>;
  167. clocks = <&ahb_clk>;
  168. };
  169. spi0: spi@0xFE010000 {
  170. #address-cells = <1>;
  171. #size-cells = <0>;
  172. cell-index = <0>;
  173. compatible = "abilis,tb100-spi";
  174. num-cs = <1>;
  175. reg = <0xFE010000 0x20>;
  176. interrupt-parent = <&tb10x_ictl>;
  177. interrupts = <26 8>;
  178. clocks = <&ahb_clk>;
  179. };
  180. spi1: spi@0xFE011000 {
  181. #address-cells = <1>;
  182. #size-cells = <0>;
  183. cell-index = <1>;
  184. compatible = "abilis,tb100-spi";
  185. num-cs = <2>;
  186. reg = <0xFE011000 0x20>;
  187. interrupt-parent = <&tb10x_ictl>;
  188. interrupts = <10 8>;
  189. clocks = <&ahb_clk>;
  190. };
  191. tb10x_tsm: tb10x-tsm@ff316000 {
  192. compatible = "abilis,tb100-tsm";
  193. reg = <0xff316000 0x400>;
  194. interrupt-parent = <&tb10x_ictl>;
  195. interrupts = <17 8>;
  196. output-clkdiv = <4>;
  197. global-packet-delay = <0x21>;
  198. port-packet-delay = <0>;
  199. };
  200. tb10x_stream_proc: tb10x-stream-proc {
  201. compatible = "abilis,tb100-streamproc";
  202. reg = <0xfff00000 0x200>,
  203. <0x000f0000 0x10000>,
  204. <0xfff00200 0x105>,
  205. <0xff10600c 0x1>,
  206. <0xfe001018 0x1>;
  207. reg-names = "mbox",
  208. "sp_iccm",
  209. "mbox_irq",
  210. "cpuctrl",
  211. "a6it_int_force";
  212. interrupt-parent = <&tb10x_ictl>;
  213. interrupts = <20 2>, <19 2>;
  214. interrupt-names = "cmd_irq", "event_irq";
  215. };
  216. tb10x_mdsc0: tb10x-mdscr@FF300000 {
  217. compatible = "abilis,tb100-mdscr";
  218. reg = <0xFF300000 0x7000>;
  219. tb100-mdscr-manage-tsin;
  220. };
  221. tb10x_mscr0: tb10x-mdscr@FF307000 {
  222. compatible = "abilis,tb100-mdscr";
  223. reg = <0xFF307000 0x7000>;
  224. };
  225. tb10x_scr0: tb10x-mdscr@ff30e000 {
  226. compatible = "abilis,tb100-mdscr";
  227. reg = <0xFF30e000 0x4000>;
  228. tb100-mdscr-manage-tsin;
  229. };
  230. tb10x_scr1: tb10x-mdscr@ff312000 {
  231. compatible = "abilis,tb100-mdscr";
  232. reg = <0xFF312000 0x4000>;
  233. tb100-mdscr-manage-tsin;
  234. };
  235. tb10x_wfb: tb10x-wfb@ff319000 {
  236. compatible = "abilis,tb100-wfb";
  237. reg = <0xff319000 0x1000>;
  238. interrupt-parent = <&tb10x_ictl>;
  239. interrupts = <16 8>;
  240. };
  241. };
  242. };