ae350_32.dts 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. /dts-v1/;
  2. #include "binman.dtsi"
  3. / {
  4. #address-cells = <1>;
  5. #size-cells = <1>;
  6. compatible = "andestech,a25";
  7. model = "andestech,a25";
  8. aliases {
  9. uart0 = &serial0;
  10. spi0 = &spi;
  11. };
  12. chosen {
  13. bootargs = "console=ttyS0,38400n8 debug loglevel=7";
  14. stdout-path = "uart0:38400n8";
  15. };
  16. cpus {
  17. #address-cells = <1>;
  18. #size-cells = <0>;
  19. timebase-frequency = <60000000>;
  20. CPU0: cpu@0 {
  21. device_type = "cpu";
  22. reg = <0>;
  23. status = "okay";
  24. compatible = "riscv";
  25. riscv,isa = "rv32imafdc";
  26. riscv,priv-major = <1>;
  27. riscv,priv-minor = <10>;
  28. mmu-type = "riscv,sv32";
  29. clock-frequency = <60000000>;
  30. i-cache-size = <0x8000>;
  31. i-cache-line-size = <32>;
  32. d-cache-size = <0x8000>;
  33. d-cache-line-size = <32>;
  34. next-level-cache = <&L2>;
  35. CPU0_intc: interrupt-controller {
  36. #interrupt-cells = <1>;
  37. interrupt-controller;
  38. compatible = "riscv,cpu-intc";
  39. };
  40. };
  41. CPU1: cpu@1 {
  42. device_type = "cpu";
  43. reg = <1>;
  44. status = "okay";
  45. compatible = "riscv";
  46. riscv,isa = "rv32imafdc";
  47. riscv,priv-major = <1>;
  48. riscv,priv-minor = <10>;
  49. mmu-type = "riscv,sv32";
  50. clock-frequency = <60000000>;
  51. i-cache-size = <0x8000>;
  52. i-cache-line-size = <32>;
  53. d-cache-size = <0x8000>;
  54. d-cache-line-size = <32>;
  55. next-level-cache = <&L2>;
  56. CPU1_intc: interrupt-controller {
  57. #interrupt-cells = <1>;
  58. interrupt-controller;
  59. compatible = "riscv,cpu-intc";
  60. };
  61. };
  62. CPU2: cpu@2 {
  63. device_type = "cpu";
  64. reg = <2>;
  65. status = "okay";
  66. compatible = "riscv";
  67. riscv,isa = "rv32imafdc";
  68. riscv,priv-major = <1>;
  69. riscv,priv-minor = <10>;
  70. mmu-type = "riscv,sv32";
  71. clock-frequency = <60000000>;
  72. i-cache-size = <0x8000>;
  73. i-cache-line-size = <32>;
  74. d-cache-size = <0x8000>;
  75. d-cache-line-size = <32>;
  76. next-level-cache = <&L2>;
  77. CPU2_intc: interrupt-controller {
  78. #interrupt-cells = <1>;
  79. interrupt-controller;
  80. compatible = "riscv,cpu-intc";
  81. };
  82. };
  83. CPU3: cpu@3 {
  84. device_type = "cpu";
  85. reg = <3>;
  86. status = "okay";
  87. compatible = "riscv";
  88. riscv,isa = "rv32imafdc";
  89. riscv,priv-major = <1>;
  90. riscv,priv-minor = <10>;
  91. mmu-type = "riscv,sv32";
  92. clock-frequency = <60000000>;
  93. i-cache-size = <0x8000>;
  94. i-cache-line-size = <32>;
  95. d-cache-size = <0x8000>;
  96. d-cache-line-size = <32>;
  97. next-level-cache = <&L2>;
  98. CPU3_intc: interrupt-controller {
  99. #interrupt-cells = <1>;
  100. interrupt-controller;
  101. compatible = "riscv,cpu-intc";
  102. };
  103. };
  104. };
  105. L2: l2-cache@e0500000 {
  106. compatible = "v5l2cache";
  107. cache-level = <2>;
  108. cache-size = <0x40000>;
  109. reg = <0xe0500000 0x40000>;
  110. andes,inst-prefetch = <3>;
  111. andes,data-prefetch = <3>;
  112. /* The value format is <XRAMOCTL XRAMICTL> */
  113. andes,tag-ram-ctl = <0 0>;
  114. andes,data-ram-ctl = <0 0>;
  115. };
  116. memory@0 {
  117. device_type = "memory";
  118. reg = <0x00000000 0x40000000>;
  119. };
  120. soc {
  121. #address-cells = <1>;
  122. #size-cells = <1>;
  123. compatible = "simple-bus";
  124. ranges;
  125. plic0: interrupt-controller@e4000000 {
  126. compatible = "riscv,plic0";
  127. #address-cells = <1>;
  128. #interrupt-cells = <1>;
  129. interrupt-controller;
  130. reg = <0xe4000000 0x2000000>;
  131. riscv,ndev=<71>;
  132. interrupts-extended = <&CPU0_intc 11 &CPU0_intc 9
  133. &CPU1_intc 11 &CPU1_intc 9
  134. &CPU2_intc 11 &CPU2_intc 9
  135. &CPU3_intc 11 &CPU3_intc 9>;
  136. };
  137. plic1: interrupt-controller@e6400000 {
  138. compatible = "riscv,plic1";
  139. #address-cells = <1>;
  140. #interrupt-cells = <1>;
  141. interrupt-controller;
  142. reg = <0xe6400000 0x400000>;
  143. riscv,ndev=<2>;
  144. interrupts-extended = <&CPU0_intc 3
  145. &CPU1_intc 3
  146. &CPU2_intc 3
  147. &CPU3_intc 3>;
  148. };
  149. plmt0@e6000000 {
  150. compatible = "riscv,plmt0";
  151. interrupts-extended = <&CPU0_intc 7
  152. &CPU1_intc 7
  153. &CPU2_intc 7
  154. &CPU3_intc 7>;
  155. reg = <0xe6000000 0x100000>;
  156. };
  157. };
  158. spiclk: virt_100mhz {
  159. #clock-cells = <0>;
  160. compatible = "fixed-clock";
  161. clock-frequency = <100000000>;
  162. };
  163. timer0: timer@f0400000 {
  164. compatible = "andestech,atcpit100";
  165. reg = <0xf0400000 0x1000>;
  166. clock-frequency = <60000000>;
  167. interrupts = <3 4>;
  168. interrupt-parent = <&plic0>;
  169. };
  170. serial0: serial@f0300000 {
  171. compatible = "andestech,uart16550", "ns16550a";
  172. reg = <0xf0300000 0x1000>;
  173. interrupts = <9 4>;
  174. clock-frequency = <19660800>;
  175. reg-shift = <2>;
  176. reg-offset = <32>;
  177. no-loopback-test = <1>;
  178. interrupt-parent = <&plic0>;
  179. };
  180. mac0: mac@e0100000 {
  181. compatible = "andestech,atmac100";
  182. reg = <0xe0100000 0x1000>;
  183. interrupts = <19 4>;
  184. interrupt-parent = <&plic0>;
  185. };
  186. mmc0: mmc@f0e00000 {
  187. compatible = "andestech,atfsdc010";
  188. max-frequency = <100000000>;
  189. clock-freq-min-max = <400000 100000000>;
  190. fifo-depth = <0x10>;
  191. reg = <0xf0e00000 0x1000>;
  192. interrupts = <18 4>;
  193. cap-sd-highspeed;
  194. interrupt-parent = <&plic0>;
  195. };
  196. dma0: dma@f0c00000 {
  197. compatible = "andestech,atcdmac300";
  198. reg = <0xf0c00000 0x1000>;
  199. interrupts = <10 4 64 4 65 4 66 4 67 4 68 4 69 4 70 4 71 4>;
  200. dma-channels = <8>;
  201. interrupt-parent = <&plic0>;
  202. };
  203. lcd0: lcd@e0200000 {
  204. compatible = "andestech,atflcdc100";
  205. reg = <0xe0200000 0x1000>;
  206. interrupts = <20 4>;
  207. interrupt-parent = <&plic0>;
  208. };
  209. smc0: smc@e0400000 {
  210. compatible = "andestech,atfsmc020";
  211. reg = <0xe0400000 0x1000>;
  212. };
  213. snd0: snd@f0d00000 {
  214. compatible = "andestech,atfac97";
  215. reg = <0xf0d00000 0x1000>;
  216. interrupts = <17 4>;
  217. interrupt-parent = <&plic0>;
  218. };
  219. pmu {
  220. compatible = "riscv,base-pmu";
  221. };
  222. virtio_mmio@fe007000 {
  223. interrupts = <0x17 0x4>;
  224. interrupt-parent = <0x2>;
  225. reg = <0xfe007000 0x1000>;
  226. compatible = "virtio,mmio";
  227. };
  228. virtio_mmio@fe006000 {
  229. interrupts = <0x16 0x4>;
  230. interrupt-parent = <0x2>;
  231. reg = <0xfe006000 0x1000>;
  232. compatible = "virtio,mmio";
  233. };
  234. virtio_mmio@fe005000 {
  235. interrupts = <0x15 0x4>;
  236. interrupt-parent = <0x2>;
  237. reg = <0xfe005000 0x1000>;
  238. compatible = "virtio,mmio";
  239. };
  240. virtio_mmio@fe004000 {
  241. interrupts = <0x14 0x4>;
  242. interrupt-parent = <0x2>;
  243. reg = <0xfe004000 0x1000>;
  244. compatible = "virtio,mmio";
  245. };
  246. virtio_mmio@fe003000 {
  247. interrupts = <0x13 0x4>;
  248. interrupt-parent = <0x2>;
  249. reg = <0xfe003000 0x1000>;
  250. compatible = "virtio,mmio";
  251. };
  252. virtio_mmio@fe002000 {
  253. interrupts = <0x12 0x4>;
  254. interrupt-parent = <0x2>;
  255. reg = <0xfe002000 0x1000>;
  256. compatible = "virtio,mmio";
  257. };
  258. virtio_mmio@fe001000 {
  259. interrupts = <0x11 0x4>;
  260. interrupt-parent = <0x2>;
  261. reg = <0xfe001000 0x1000>;
  262. compatible = "virtio,mmio";
  263. };
  264. virtio_mmio@fe000000 {
  265. interrupts = <0x10 0x4>;
  266. interrupt-parent = <0x2>;
  267. reg = <0xfe000000 0x1000>;
  268. compatible = "virtio,mmio";
  269. };
  270. nor@0,0 {
  271. #address-cells = <1>;
  272. #size-cells = <1>;
  273. compatible = "cfi-flash";
  274. reg = <0x88000000 0x4000000>;
  275. bank-width = <2>;
  276. device-width = <1>;
  277. };
  278. spi: spi@f0b00000 {
  279. compatible = "andestech,atcspi200";
  280. reg = <0xf0b00000 0x1000>;
  281. #address-cells = <1>;
  282. #size-cells = <0>;
  283. num-cs = <1>;
  284. clocks = <&spiclk>;
  285. interrupts = <4 4>;
  286. interrupt-parent = <&plic0>;
  287. flash@0 {
  288. compatible = "jedec,spi-nor";
  289. spi-max-frequency = <50000000>;
  290. reg = <0>;
  291. spi-cpol;
  292. spi-cpha;
  293. };
  294. };
  295. };