axc003_idu.dtsi 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /*
  2. * Copyright (C) 2014, 2015 Synopsys, Inc. (www.synopsys.com)
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License version 2 as
  6. * published by the Free Software Foundation.
  7. */
  8. /*
  9. * Device tree for AXC003 CPU card: HS38x2 (Dual Core) with IDU intc
  10. */
  11. / {
  12. compatible = "snps,arc";
  13. clock-frequency = <90000000>;
  14. #address-cells = <1>;
  15. #size-cells = <1>;
  16. cpu_card {
  17. compatible = "simple-bus";
  18. #address-cells = <1>;
  19. #size-cells = <1>;
  20. ranges = <0x00000000 0xf0000000 0x10000000>;
  21. cpu_intc: archs-intc@cpu {
  22. compatible = "snps,archs-intc";
  23. interrupt-controller;
  24. #interrupt-cells = <1>;
  25. };
  26. idu_intc: idu-interrupt-controller {
  27. compatible = "snps,archs-idu-intc";
  28. interrupt-controller;
  29. interrupt-parent = <&cpu_intc>;
  30. /*
  31. * <hwirq distribution>
  32. * distribution: 0=RR; 1=cpu0, 2=cpu1, 4=cpu2, 8=cpu3
  33. */
  34. #interrupt-cells = <2>;
  35. /*
  36. * upstream irqs to core intc - downstream these are
  37. * "COMMON" irq 0,1..
  38. */
  39. interrupts = <24 25>;
  40. };
  41. /*
  42. * this GPIO block ORs all interrupts on CPU card (creg,..)
  43. * to uplink only 1 IRQ to ARC core intc
  44. */
  45. dw-apb-gpio@0x2000 {
  46. compatible = "snps,dw-apb-gpio";
  47. reg = < 0x2000 0x80 >;
  48. #address-cells = <1>;
  49. #size-cells = <0>;
  50. ictl_intc: gpio-controller@0 {
  51. compatible = "snps,dw-apb-gpio-port";
  52. gpio-controller;
  53. #gpio-cells = <2>;
  54. snps,nr-gpios = <30>;
  55. reg = <0>;
  56. interrupt-controller;
  57. #interrupt-cells = <2>;
  58. interrupt-parent = <&idu_intc>;
  59. /*
  60. * cmn irq 1 -> cpu irq 25
  61. * Distribute to cpu0 only
  62. */
  63. interrupts = <1 1>;
  64. };
  65. };
  66. debug_uart: dw-apb-uart@0x5000 {
  67. compatible = "snps,dw-apb-uart";
  68. reg = <0x5000 0x100>;
  69. clock-frequency = <33333000>;
  70. interrupt-parent = <&ictl_intc>;
  71. interrupts = <2 4>;
  72. baud = <115200>;
  73. reg-shift = <2>;
  74. reg-io-width = <4>;
  75. };
  76. arcpct0: pct {
  77. compatible = "snps,archs-pct";
  78. #interrupt-cells = <1>;
  79. interrupt-parent = <&cpu_intc>;
  80. interrupts = <20>;
  81. };
  82. };
  83. /*
  84. * This INTC is actually connected to DW APB GPIO
  85. * which acts as a wire between MB INTC and CPU INTC.
  86. * GPIO INTC is configured in platform init code
  87. * and here we mimic direct connection from MB INTC to
  88. * CPU INTC, thus we set "interrupts = <0 1>" instead of
  89. * "interrupts = <12>"
  90. *
  91. * This intc actually resides on MB, but we move it here to
  92. * avoid duplicating the MB dtsi file given that IRQ from
  93. * this intc to cpu intc are different for axs101 and axs103
  94. */
  95. mb_intc: dw-apb-ictl@0xe0012000 {
  96. #interrupt-cells = <1>;
  97. compatible = "snps,dw-apb-ictl";
  98. reg = < 0xe0012000 0x200 >;
  99. interrupt-controller;
  100. interrupt-parent = <&idu_intc>;
  101. interrupts = <0 1>; /* cmn irq 0 -> cpu irq 24
  102. distribute to cpu0 only */
  103. };
  104. memory {
  105. #address-cells = <1>;
  106. #size-cells = <1>;
  107. ranges = <0x00000000 0x80000000 0x40000000>;
  108. device_type = "memory";
  109. reg = <0x80000000 0x20000000>; /* 512MiB */
  110. };
  111. };