picoxcell-pc3x3.dtsi 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. /*
  2. * Copyright (C) 2011 Picochip, Jamie Iles
  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. model = "Picochip picoXcell PC3X3";
  16. compatible = "picochip,pc3x3";
  17. #address-cells = <1>;
  18. #size-cells = <1>;
  19. cpus {
  20. #address-cells = <0>;
  21. #size-cells = <0>;
  22. cpu {
  23. compatible = "arm,arm1176jz-s";
  24. device_type = "cpu";
  25. cpu-clock = <&arm_clk>, "cpu";
  26. d-cache-line-size = <32>;
  27. d-cache-size = <32768>;
  28. i-cache-line-size = <32>;
  29. i-cache-size = <32768>;
  30. };
  31. };
  32. clocks {
  33. #address-cells = <1>;
  34. #size-cells = <1>;
  35. ranges;
  36. clkgate: clkgate@800a0048 {
  37. #address-cells = <1>;
  38. #size-cells = <0>;
  39. reg = <0x800a0048 4>;
  40. compatible = "picochip,pc3x3-clk-gate";
  41. tzprot_clk: clock@0 {
  42. compatible = "picochip,pc3x3-gated-clk";
  43. clock-outputs = "bus";
  44. picochip,clk-disable-bit = <0>;
  45. clock-frequency = <200000000>;
  46. ref-clock = <&ref_clk>, "ref";
  47. };
  48. spi_clk: clock@1 {
  49. compatible = "picochip,pc3x3-gated-clk";
  50. clock-outputs = "bus";
  51. picochip,clk-disable-bit = <1>;
  52. clock-frequency = <200000000>;
  53. ref-clock = <&ref_clk>, "ref";
  54. };
  55. dmac0_clk: clock@2 {
  56. compatible = "picochip,pc3x3-gated-clk";
  57. clock-outputs = "bus";
  58. picochip,clk-disable-bit = <2>;
  59. clock-frequency = <200000000>;
  60. ref-clock = <&ref_clk>, "ref";
  61. };
  62. dmac1_clk: clock@3 {
  63. compatible = "picochip,pc3x3-gated-clk";
  64. clock-outputs = "bus";
  65. picochip,clk-disable-bit = <3>;
  66. clock-frequency = <200000000>;
  67. ref-clock = <&ref_clk>, "ref";
  68. };
  69. ebi_clk: clock@4 {
  70. compatible = "picochip,pc3x3-gated-clk";
  71. clock-outputs = "bus";
  72. picochip,clk-disable-bit = <4>;
  73. clock-frequency = <200000000>;
  74. ref-clock = <&ref_clk>, "ref";
  75. };
  76. ipsec_clk: clock@5 {
  77. compatible = "picochip,pc3x3-gated-clk";
  78. clock-outputs = "bus";
  79. picochip,clk-disable-bit = <5>;
  80. clock-frequency = <200000000>;
  81. ref-clock = <&ref_clk>, "ref";
  82. };
  83. l2_clk: clock@6 {
  84. compatible = "picochip,pc3x3-gated-clk";
  85. clock-outputs = "bus";
  86. picochip,clk-disable-bit = <6>;
  87. clock-frequency = <200000000>;
  88. ref-clock = <&ref_clk>, "ref";
  89. };
  90. trng_clk: clock@7 {
  91. compatible = "picochip,pc3x3-gated-clk";
  92. clock-outputs = "bus";
  93. picochip,clk-disable-bit = <7>;
  94. clock-frequency = <200000000>;
  95. ref-clock = <&ref_clk>, "ref";
  96. };
  97. fuse_clk: clock@8 {
  98. compatible = "picochip,pc3x3-gated-clk";
  99. clock-outputs = "bus";
  100. picochip,clk-disable-bit = <8>;
  101. clock-frequency = <200000000>;
  102. ref-clock = <&ref_clk>, "ref";
  103. };
  104. otp_clk: clock@9 {
  105. compatible = "picochip,pc3x3-gated-clk";
  106. clock-outputs = "bus";
  107. picochip,clk-disable-bit = <9>;
  108. clock-frequency = <200000000>;
  109. ref-clock = <&ref_clk>, "ref";
  110. };
  111. };
  112. arm_clk: clock@11 {
  113. compatible = "picochip,pc3x3-pll";
  114. reg = <0x800a0050 0x8>;
  115. picochip,min-freq = <140000000>;
  116. picochip,max-freq = <700000000>;
  117. ref-clock = <&ref_clk>, "ref";
  118. clock-outputs = "cpu";
  119. };
  120. pclk: clock@12 {
  121. compatible = "fixed-clock";
  122. clock-outputs = "bus", "pclk";
  123. clock-frequency = <200000000>;
  124. ref-clock = <&ref_clk>, "ref";
  125. };
  126. };
  127. paxi {
  128. compatible = "simple-bus";
  129. #address-cells = <1>;
  130. #size-cells = <1>;
  131. ranges = <0 0x80000000 0x400000>;
  132. emac: gem@30000 {
  133. compatible = "cadence,gem";
  134. reg = <0x30000 0x10000>;
  135. interrupt-parent = <&vic0>;
  136. interrupts = <31>;
  137. };
  138. dmac1: dmac@40000 {
  139. compatible = "snps,dw-dmac";
  140. reg = <0x40000 0x10000>;
  141. interrupt-parent = <&vic0>;
  142. interrupts = <25>;
  143. };
  144. dmac2: dmac@50000 {
  145. compatible = "snps,dw-dmac";
  146. reg = <0x50000 0x10000>;
  147. interrupt-parent = <&vic0>;
  148. interrupts = <26>;
  149. };
  150. vic0: interrupt-controller@60000 {
  151. compatible = "arm,pl192-vic";
  152. interrupt-controller;
  153. reg = <0x60000 0x1000>;
  154. #interrupt-cells = <1>;
  155. };
  156. vic1: interrupt-controller@64000 {
  157. compatible = "arm,pl192-vic";
  158. interrupt-controller;
  159. reg = <0x64000 0x1000>;
  160. #interrupt-cells = <1>;
  161. };
  162. fuse: picoxcell-fuse@80000 {
  163. compatible = "picoxcell,fuse-pc3x3";
  164. reg = <0x80000 0x10000>;
  165. };
  166. ssi: picoxcell-spi@90000 {
  167. compatible = "picoxcell,spi";
  168. reg = <0x90000 0x10000>;
  169. interrupt-parent = <&vic0>;
  170. interrupts = <10>;
  171. };
  172. ipsec: spacc@100000 {
  173. compatible = "picochip,spacc-ipsec";
  174. reg = <0x100000 0x10000>;
  175. interrupt-parent = <&vic0>;
  176. interrupts = <24>;
  177. ref-clock = <&ipsec_clk>, "ref";
  178. };
  179. srtp: spacc@140000 {
  180. compatible = "picochip,spacc-srtp";
  181. reg = <0x140000 0x10000>;
  182. interrupt-parent = <&vic0>;
  183. interrupts = <23>;
  184. };
  185. l2_engine: spacc@180000 {
  186. compatible = "picochip,spacc-l2";
  187. reg = <0x180000 0x10000>;
  188. interrupt-parent = <&vic0>;
  189. interrupts = <22>;
  190. ref-clock = <&l2_clk>, "ref";
  191. };
  192. apb {
  193. compatible = "simple-bus";
  194. #address-cells = <1>;
  195. #size-cells = <1>;
  196. ranges = <0 0x200000 0x80000>;
  197. rtc0: rtc@00000 {
  198. compatible = "picochip,pc3x2-rtc";
  199. clock-freq = <200000000>;
  200. reg = <0x00000 0xf>;
  201. interrupt-parent = <&vic0>;
  202. interrupts = <8>;
  203. };
  204. timer0: timer@10000 {
  205. compatible = "picochip,pc3x2-timer";
  206. interrupt-parent = <&vic0>;
  207. interrupts = <4>;
  208. clock-freq = <200000000>;
  209. reg = <0x10000 0x14>;
  210. };
  211. timer1: timer@10014 {
  212. compatible = "picochip,pc3x2-timer";
  213. interrupt-parent = <&vic0>;
  214. interrupts = <5>;
  215. clock-freq = <200000000>;
  216. reg = <0x10014 0x14>;
  217. };
  218. gpio: gpio@20000 {
  219. compatible = "snps,dw-apb-gpio";
  220. reg = <0x20000 0x1000>;
  221. #address-cells = <1>;
  222. #size-cells = <0>;
  223. reg-io-width = <4>;
  224. banka: gpio-controller@0 {
  225. compatible = "snps,dw-apb-gpio-bank";
  226. gpio-controller;
  227. #gpio-cells = <2>;
  228. gpio-generic,nr-gpio = <8>;
  229. regoffset-dat = <0x50>;
  230. regoffset-set = <0x00>;
  231. regoffset-dirout = <0x04>;
  232. };
  233. bankb: gpio-controller@1 {
  234. compatible = "snps,dw-apb-gpio-bank";
  235. gpio-controller;
  236. #gpio-cells = <2>;
  237. gpio-generic,nr-gpio = <16>;
  238. regoffset-dat = <0x54>;
  239. regoffset-set = <0x0c>;
  240. regoffset-dirout = <0x10>;
  241. };
  242. bankd: gpio-controller@2 {
  243. compatible = "snps,dw-apb-gpio-bank";
  244. gpio-controller;
  245. #gpio-cells = <2>;
  246. gpio-generic,nr-gpio = <30>;
  247. regoffset-dat = <0x5c>;
  248. regoffset-set = <0x24>;
  249. regoffset-dirout = <0x28>;
  250. };
  251. };
  252. uart0: uart@30000 {
  253. compatible = "snps,dw-apb-uart";
  254. reg = <0x30000 0x1000>;
  255. interrupt-parent = <&vic1>;
  256. interrupts = <10>;
  257. clock-frequency = <3686400>;
  258. reg-shift = <2>;
  259. reg-io-width = <4>;
  260. };
  261. uart1: uart@40000 {
  262. compatible = "snps,dw-apb-uart";
  263. reg = <0x40000 0x1000>;
  264. interrupt-parent = <&vic1>;
  265. interrupts = <9>;
  266. clock-frequency = <3686400>;
  267. reg-shift = <2>;
  268. reg-io-width = <4>;
  269. };
  270. wdog: watchdog@50000 {
  271. compatible = "snps,dw-apb-wdg";
  272. reg = <0x50000 0x10000>;
  273. interrupt-parent = <&vic0>;
  274. interrupts = <11>;
  275. bus-clock = <&pclk>, "bus";
  276. };
  277. timer2: timer@60000 {
  278. compatible = "picochip,pc3x2-timer";
  279. interrupt-parent = <&vic0>;
  280. interrupts = <6>;
  281. clock-freq = <200000000>;
  282. reg = <0x60000 0x14>;
  283. };
  284. timer3: timer@60014 {
  285. compatible = "picochip,pc3x2-timer";
  286. interrupt-parent = <&vic0>;
  287. interrupts = <7>;
  288. clock-freq = <200000000>;
  289. reg = <0x60014 0x14>;
  290. };
  291. };
  292. };
  293. rwid-axi {
  294. #address-cells = <1>;
  295. #size-cells = <1>;
  296. compatible = "simple-bus";
  297. ranges;
  298. ebi@50000000 {
  299. compatible = "simple-bus";
  300. #address-cells = <2>;
  301. #size-cells = <1>;
  302. ranges = <0 0 0x40000000 0x08000000
  303. 1 0 0x48000000 0x08000000
  304. 2 0 0x50000000 0x08000000
  305. 3 0 0x58000000 0x08000000>;
  306. };
  307. axi2pico@c0000000 {
  308. compatible = "picochip,axi2pico-pc3x3";
  309. reg = <0xc0000000 0x10000>;
  310. interrupt-parent = <&vic0>;
  311. interrupts = <13 14 15 16 17 18 19 20 21>;
  312. };
  313. otp@ffff8000 {
  314. compatible = "picochip,otp-pc3x3";
  315. reg = <0xffff8000 0x8000>;
  316. };
  317. };
  318. };