axc003.dtsi 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (C) 2014-15 Synopsys, Inc. (www.synopsys.com)
  4. */
  5. /*
  6. * Device tree for AXC003 CPU card: HS38x UP configuration
  7. */
  8. /include/ "skeleton_hs.dtsi"
  9. / {
  10. compatible = "snps,arc";
  11. #address-cells = <2>;
  12. #size-cells = <2>;
  13. cpu_card {
  14. compatible = "simple-bus";
  15. #address-cells = <1>;
  16. #size-cells = <1>;
  17. ranges = <0x00000000 0x0 0xf0000000 0x10000000>;
  18. input_clk: input-clk {
  19. #clock-cells = <0>;
  20. compatible = "fixed-clock";
  21. clock-frequency = <33333333>;
  22. };
  23. core_clk: core-clk@80 {
  24. compatible = "snps,axs10x-arc-pll-clock";
  25. reg = <0x80 0x10>, <0x100 0x10>;
  26. #clock-cells = <0>;
  27. clocks = <&input_clk>;
  28. /*
  29. * Set initial core pll output frequency to 90MHz.
  30. * It will be applied at the core pll driver probing
  31. * on early boot.
  32. */
  33. assigned-clocks = <&core_clk>;
  34. assigned-clock-rates = <90000000>;
  35. };
  36. core_intc: archs-intc@cpu {
  37. compatible = "snps,archs-intc";
  38. interrupt-controller;
  39. #interrupt-cells = <1>;
  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@2000 {
  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 = <&core_intc>;
  59. interrupts = <25>;
  60. };
  61. };
  62. debug_uart: dw-apb-uart@5000 {
  63. compatible = "snps,dw-apb-uart";
  64. reg = <0x5000 0x100>;
  65. clock-frequency = <33333000>;
  66. interrupt-parent = <&ictl_intc>;
  67. interrupts = <2 4>;
  68. baud = <115200>;
  69. reg-shift = <2>;
  70. reg-io-width = <4>;
  71. };
  72. arcpct0: pct {
  73. compatible = "snps,archs-pct";
  74. #interrupt-cells = <1>;
  75. interrupt-parent = <&core_intc>;
  76. interrupts = <20>;
  77. };
  78. };
  79. /*
  80. * Mark DMA peripherals connected via IOC port as dma-coherent. We do
  81. * it via overlay because peripherals defined in axs10x_mb.dtsi are
  82. * used for both AXS101 and AXS103 boards and only AXS103 has IOC (so
  83. * only AXS103 board has HW-coherent DMA peripherals)
  84. * We don't need to mark pgu@17000 as dma-coherent because it uses
  85. * external DMA buffer located outside of IOC aperture.
  86. */
  87. axs10x_mb {
  88. ethernet@18000 {
  89. dma-coherent;
  90. };
  91. usb@40000 {
  92. dma-coherent;
  93. };
  94. usb@60000 {
  95. dma-coherent;
  96. };
  97. mmc@15000 {
  98. dma-coherent;
  99. };
  100. };
  101. /*
  102. * The DW APB ICTL intc on MB is connected to CPU intc via a
  103. * DT "invisible" DW APB GPIO block, configured to simply pass thru
  104. * interrupts - setup accordinly in platform init (plat-axs10x/ax10x.c)
  105. *
  106. * So here we mimic a direct connection betwen them, ignoring the
  107. * ABPG GPIO. Thus set "interrupts = <24>" (DW APB GPIO to core)
  108. * instead of "interrupts = <12>" (DW APB ICTL to DW APB GPIO)
  109. *
  110. * This intc actually resides on MB, but we move it here to
  111. * avoid duplicating the MB dtsi file given that IRQ from
  112. * this intc to cpu intc are different for axs101 and axs103
  113. */
  114. mb_intc: interrupt-controller@e0012000 {
  115. #interrupt-cells = <1>;
  116. compatible = "snps,dw-apb-ictl";
  117. reg = < 0x0 0xe0012000 0x0 0x200 >;
  118. interrupt-controller;
  119. interrupt-parent = <&core_intc>;
  120. interrupts = < 24 >;
  121. };
  122. memory {
  123. device_type = "memory";
  124. /* CONFIG_LINUX_RAM_BASE needs to match low mem start */
  125. reg = <0x0 0x80000000 0x0 0x20000000 /* 512 MiB low mem */
  126. 0x1 0xc0000000 0x0 0x40000000>; /* 1 GiB highmem */
  127. };
  128. reserved-memory {
  129. #address-cells = <2>;
  130. #size-cells = <2>;
  131. ranges;
  132. /*
  133. * Move frame buffer out of IOC aperture (0x8z-0xaz).
  134. */
  135. frame_buffer: frame_buffer@be000000 {
  136. compatible = "shared-dma-pool";
  137. reg = <0x0 0xbe000000 0x0 0x2000000>;
  138. no-map;
  139. };
  140. };
  141. };