alpine.dtsi 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. /*
  2. * Copyright 2015 Annapurna Labs Ltd.
  3. *
  4. * This program is free software; you can redistribute it and/or modify it
  5. * under the terms and conditions of the GNU General Public License,
  6. * version 2, as published by the Free Software Foundation.
  7. *
  8. * Alternatively, redistribution and use in source and binary forms, with or
  9. * without modification, are permitted provided that the following conditions
  10. * are met:
  11. *
  12. * * Redistributions of source code must retain the above copyright notice,
  13. * this list of conditions and the following disclaimer.
  14. *
  15. * * Redistributions in binary form must reproduce the above copyright
  16. * notice, this list of conditions and the following disclaimer in
  17. * the documentation and/or other materials provided with the
  18. * distribution.
  19. *
  20. * This program is distributed in the hope it will be useful, but WITHOUT
  21. * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  22. * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  23. * more details.
  24. *
  25. */
  26. #include <dt-bindings/interrupt-controller/arm-gic.h>
  27. / {
  28. #address-cells = <2>;
  29. #size-cells = <2>;
  30. /* SOC compatibility */
  31. compatible = "al,alpine";
  32. memory {
  33. device_type = "memory";
  34. reg = <0 0 0 0>;
  35. };
  36. /* CPU Configuration */
  37. cpus {
  38. #address-cells = <1>;
  39. #size-cells = <0>;
  40. enable-method = "al,alpine-smp";
  41. cpu@0 {
  42. compatible = "arm,cortex-a15";
  43. device_type = "cpu";
  44. reg = <0>;
  45. clock-frequency = <1700000000>;
  46. };
  47. cpu@1 {
  48. compatible = "arm,cortex-a15";
  49. device_type = "cpu";
  50. reg = <1>;
  51. clock-frequency = <1700000000>;
  52. };
  53. cpu@2 {
  54. compatible = "arm,cortex-a15";
  55. device_type = "cpu";
  56. reg = <2>;
  57. clock-frequency = <1700000000>;
  58. };
  59. cpu@3 {
  60. compatible = "arm,cortex-a15";
  61. device_type = "cpu";
  62. reg = <3>;
  63. clock-frequency = <1700000000>;
  64. };
  65. };
  66. soc {
  67. #address-cells = <2>;
  68. #size-cells = <2>;
  69. compatible = "simple-bus";
  70. interrupt-parent = <&gic>;
  71. ranges;
  72. arch-timer {
  73. compatible = "arm,cortex-a15-timer",
  74. "arm,armv7-timer";
  75. interrupts =
  76. <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  77. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  78. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
  79. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
  80. clock-frequency = <50000000>;
  81. };
  82. /* Interrupt Controller */
  83. gic: interrupt-controller@fb001000 {
  84. compatible = "arm,cortex-a15-gic";
  85. #interrupt-cells = <3>;
  86. #size-cells = <0>;
  87. #address-cells = <0>;
  88. interrupt-controller;
  89. reg = <0x0 0xfb001000 0x0 0x1000>,
  90. <0x0 0xfb002000 0x0 0x2000>,
  91. <0x0 0xfb004000 0x0 0x2000>,
  92. <0x0 0xfb006000 0x0 0x2000>;
  93. interrupts =
  94. <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  95. };
  96. /* CPU Resume registers */
  97. cpu-resume@fbff5ec0 {
  98. compatible = "al,alpine-cpu-resume";
  99. reg = <0x0 0xfbff5ec0 0x0 0x30>;
  100. };
  101. /* North Bridge Service Registers */
  102. sysfabric-service@fb070000 {
  103. compatible = "al,alpine-sysfabric-service", "syscon";
  104. reg = <0x0 0xfb070000 0x0 0x10000>;
  105. };
  106. /* Performance Monitor Unit */
  107. pmu {
  108. compatible = "arm,cortex-a15-pmu";
  109. interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
  110. <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
  111. <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
  112. <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
  113. };
  114. uart0: uart@fd883000 {
  115. compatible = "ns16550a";
  116. reg = <0x0 0xfd883000 0x0 0x1000>;
  117. clock-frequency = <375000000>;
  118. interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
  119. reg-shift = <2>;
  120. reg-io-width = <4>;
  121. };
  122. uart1: uart@fd884000 {
  123. compatible = "ns16550a";
  124. reg = <0x0 0xfd884000 0x0 0x1000>;
  125. clock-frequency = <375000000>;
  126. interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
  127. reg-shift = <2>;
  128. reg-io-width = <4>;
  129. };
  130. /* Internal PCIe Controller */
  131. pcie@fbc00000 {
  132. compatible = "pci-host-ecam-generic";
  133. device_type = "pci";
  134. #size-cells = <2>;
  135. #address-cells = <3>;
  136. #interrupt-cells = <1>;
  137. reg = <0x0 0xfbc00000 0x0 0x100000>;
  138. interrupt-map-mask = <0xf800 0 0 7>;
  139. /* Add legacy interrupts for SATA devices only */
  140. interrupt-map = <0x4000 0 0 1 &gic 0 43 4>,
  141. <0x4800 0 0 1 &gic 0 44 4>;
  142. /* 32 bit non prefetchable memory space */
  143. ranges = <0x02000000 0x0 0xfe000000 0x0 0xfe000000 0x0 0x1000000>;
  144. bus-range = <0x00 0x00>;
  145. msi-parent = <&msix>;
  146. };
  147. msix: msix@fbe00000 {
  148. compatible = "al,alpine-msix";
  149. reg = <0x0 0xfbe00000 0x0 0x100000>;
  150. interrupt-controller;
  151. msi-controller;
  152. al,msi-base-spi = <96>;
  153. al,msi-num-spis = <64>;
  154. };
  155. };
  156. };