axc003.dtsi 3.9 KB

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