e31-arty.dts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /dts-v1/;
  2. / {
  3. #address-cells = <1>;
  4. #size-cells = <1>;
  5. compatible = "SiFive,FE310G-dev", "fe310-dev", "sifive-dev";
  6. model = "SiFive,FE310G";
  7. L17: cpus {
  8. #address-cells = <1>;
  9. #size-cells = <0>;
  10. L6: cpu@0 {
  11. clocks = <&refclk>;
  12. compatible = "sifive,rocket0", "riscv";
  13. device_type = "cpu";
  14. i-cache-block-size = <64>;
  15. i-cache-sets = <128>;
  16. i-cache-size = <16384>;
  17. next-level-cache = <&L12>;
  18. reg = <0>;
  19. riscv,isa = "rv32imac";
  20. sifive,dtim = <&L5>;
  21. sifive,itim = <&L4>;
  22. status = "okay";
  23. timebase-frequency = <1000000>;
  24. L3: interrupt-controller {
  25. #interrupt-cells = <1>;
  26. compatible = "riscv,cpu-intc";
  27. interrupt-controller;
  28. };
  29. };
  30. };
  31. L16: soc {
  32. #address-cells = <1>;
  33. #size-cells = <1>;
  34. compatible = "SiFive,FE310G-soc", "fe310-soc", "sifive-soc", "simple-bus";
  35. ranges;
  36. refclk: refclk {
  37. #clock-cells = <0>;
  38. compatible = "fixed-clock";
  39. clock-frequency = <66666666>;
  40. clock-output-names = "refclk";
  41. };
  42. L1: clint@2000000 {
  43. compatible = "riscv,clint0";
  44. interrupts-extended = <&L3 3 &L3 7>;
  45. reg = <0x2000000 0x10000>;
  46. reg-names = "control";
  47. };
  48. L2: debug-controller@0 {
  49. compatible = "sifive,debug-013", "riscv,debug-013";
  50. interrupts-extended = <&L3 65535>;
  51. reg = <0x0 0x1000>;
  52. reg-names = "control";
  53. };
  54. L5: dtim@80000000 {
  55. compatible = "sifive,dtim0";
  56. reg = <0x80000000 0x10000>;
  57. reg-names = "mem";
  58. };
  59. L8: error-device@3000 {
  60. compatible = "sifive,error0";
  61. reg = <0x3000 0x1000>;
  62. reg-names = "mem";
  63. };
  64. L9: global-external-interrupts {
  65. interrupt-parent = <&L0>;
  66. interrupts = <1 2 3 4>;
  67. };
  68. L13: gpio@20002000 {
  69. compatible = "sifive,gpio0";
  70. interrupt-parent = <&L0>;
  71. interrupts = <7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22>;
  72. reg = <0x20002000 0x1000>;
  73. reg-names = "control";
  74. };
  75. L0: interrupt-controller@c000000 {
  76. #interrupt-cells = <1>;
  77. compatible = "riscv,plic0";
  78. interrupt-controller;
  79. interrupts-extended = <&L3 11>;
  80. reg = <0xc000000 0x4000000>;
  81. reg-names = "control";
  82. riscv,max-priority = <7>;
  83. riscv,ndev = <26>;
  84. };
  85. L4: itim@8000000 {
  86. compatible = "sifive,itim0";
  87. reg = <0x8000000 0x4000>;
  88. reg-names = "mem";
  89. };
  90. L10: local-external-interrupts-0 {
  91. interrupt-parent = <&L3>;
  92. interrupts = <16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31>;
  93. };
  94. L14: pwm@20005000 {
  95. compatible = "sifive,pwm0";
  96. interrupt-parent = <&L0>;
  97. interrupts = <23 24 25 26>;
  98. reg = <0x20005000 0x1000>;
  99. reg-names = "control";
  100. };
  101. L11: serial@20000000 {
  102. compatible = "sifive,uart0";
  103. interrupt-parent = <&L0>;
  104. interrupts = <5>;
  105. reg = <0x20000000 0x1000>;
  106. reg-names = "control";
  107. };
  108. L12: spi@20004000 {
  109. compatible = "sifive,spi0";
  110. interrupt-parent = <&L0>;
  111. interrupts = <6>;
  112. reg = <0x20004000 0x1000 0x40000000 0x20000000>;
  113. reg-names = "control", "mem";
  114. };
  115. L7: teststatus@4000 {
  116. compatible = "sifive,test0";
  117. reg = <0x4000 0x1000>;
  118. reg-names = "control";
  119. };
  120. };
  121. };