ac5-98dx25xx.dtsi 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
  2. /*
  3. * Device Tree For AC5.
  4. *
  5. * Copyright (C) 2021 Marvell
  6. * Copyright (C) 2022 Allied Telesis Labs
  7. */
  8. #include <dt-bindings/gpio/gpio.h>
  9. #include <dt-bindings/interrupt-controller/arm-gic.h>
  10. / {
  11. model = "Marvell AC5 SoC";
  12. compatible = "marvell,ac5";
  13. interrupt-parent = <&gic>;
  14. #address-cells = <2>;
  15. #size-cells = <2>;
  16. cpus {
  17. #address-cells = <2>;
  18. #size-cells = <0>;
  19. cpu-map {
  20. cluster0 {
  21. core0 {
  22. cpu = <&cpu0>;
  23. };
  24. core1 {
  25. cpu = <&cpu1>;
  26. };
  27. };
  28. };
  29. cpu0: cpu@0 {
  30. device_type = "cpu";
  31. compatible = "arm,cortex-a55";
  32. reg = <0x0 0x0>;
  33. enable-method = "psci";
  34. next-level-cache = <&l2>;
  35. };
  36. cpu1: cpu@1 {
  37. device_type = "cpu";
  38. compatible = "arm,cortex-a55";
  39. reg = <0x0 0x100>;
  40. enable-method = "psci";
  41. next-level-cache = <&l2>;
  42. };
  43. l2: l2-cache {
  44. compatible = "cache";
  45. };
  46. };
  47. psci {
  48. compatible = "arm,psci-0.2";
  49. method = "smc";
  50. };
  51. timer {
  52. compatible = "arm,armv8-timer";
  53. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>,
  54. <GIC_PPI 8 IRQ_TYPE_LEVEL_HIGH>,
  55. <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>,
  56. <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
  57. };
  58. pmu {
  59. compatible = "arm,armv8-pmuv3";
  60. interrupts = <GIC_PPI 12 IRQ_TYPE_LEVEL_HIGH>;
  61. };
  62. soc {
  63. compatible = "simple-bus";
  64. #address-cells = <2>;
  65. #size-cells = <2>;
  66. ranges;
  67. dma-ranges;
  68. internal-regs@7f000000 {
  69. #address-cells = <1>;
  70. #size-cells = <1>;
  71. compatible = "simple-bus";
  72. /* 16M internal register @ 0x7f00_0000 */
  73. ranges = <0x0 0x0 0x7f000000 0x1000000>;
  74. dma-coherent;
  75. uart0: serial@12000 {
  76. compatible = "snps,dw-apb-uart";
  77. reg = <0x12000 0x100>;
  78. reg-shift = <2>;
  79. interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
  80. reg-io-width = <1>;
  81. clocks = <&cnm_clock>;
  82. status = "okay";
  83. };
  84. uart1: serial@12100 {
  85. compatible = "snps,dw-apb-uart";
  86. reg = <0x12100 0x100>;
  87. reg-shift = <2>;
  88. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  89. reg-io-width = <1>;
  90. clocks = <&cnm_clock>;
  91. status = "disabled";
  92. };
  93. uart2: serial@12200 {
  94. compatible = "snps,dw-apb-uart";
  95. reg = <0x12200 0x100>;
  96. reg-shift = <2>;
  97. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  98. reg-io-width = <1>;
  99. clocks = <&cnm_clock>;
  100. status = "disabled";
  101. };
  102. uart3: serial@12300 {
  103. compatible = "snps,dw-apb-uart";
  104. reg = <0x12300 0x100>;
  105. reg-shift = <2>;
  106. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  107. reg-io-width = <1>;
  108. clocks = <&cnm_clock>;
  109. status = "disabled";
  110. };
  111. mdio: mdio@22004 {
  112. #address-cells = <1>;
  113. #size-cells = <0>;
  114. compatible = "marvell,orion-mdio";
  115. reg = <0x22004 0x4>;
  116. clocks = <&cnm_clock>;
  117. };
  118. i2c0: i2c@11000{
  119. compatible = "marvell,mv78230-i2c";
  120. reg = <0x11000 0x20>;
  121. #address-cells = <1>;
  122. #size-cells = <0>;
  123. clocks = <&cnm_clock>;
  124. clock-names = "core";
  125. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  126. clock-frequency=<100000>;
  127. pinctrl-names = "default", "gpio";
  128. pinctrl-0 = <&i2c0_pins>;
  129. pinctrl-1 = <&i2c0_gpio>;
  130. scl-gpios = <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
  131. sda-gpios = <&gpio0 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
  132. status = "disabled";
  133. };
  134. i2c1: i2c@11100{
  135. compatible = "marvell,mv78230-i2c";
  136. reg = <0x11100 0x20>;
  137. #address-cells = <1>;
  138. #size-cells = <0>;
  139. clocks = <&cnm_clock>;
  140. clock-names = "core";
  141. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  142. clock-frequency=<100000>;
  143. pinctrl-names = "default", "gpio";
  144. pinctrl-0 = <&i2c1_pins>;
  145. pinctrl-1 = <&i2c1_gpio>;
  146. scl-gpios = <&gpio0 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
  147. sda-gpios = <&gpio0 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
  148. status = "disabled";
  149. };
  150. gpio0: gpio@18100 {
  151. compatible = "marvell,orion-gpio";
  152. reg = <0x18100 0x40>;
  153. ngpios = <32>;
  154. gpio-controller;
  155. #gpio-cells = <2>;
  156. gpio-ranges = <&pinctrl0 0 0 32>;
  157. marvell,pwm-offset = <0x1f0>;
  158. interrupt-controller;
  159. #interrupt-cells = <2>;
  160. interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
  161. <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
  162. <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
  163. <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
  164. };
  165. gpio1: gpio@18140 {
  166. reg = <0x18140 0x40>;
  167. compatible = "marvell,orion-gpio";
  168. ngpios = <14>;
  169. gpio-controller;
  170. #gpio-cells = <2>;
  171. gpio-ranges = <&pinctrl0 0 32 14>;
  172. marvell,pwm-offset = <0x1f0>;
  173. interrupt-controller;
  174. #interrupt-cells = <2>;
  175. interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
  176. <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
  177. };
  178. };
  179. /*
  180. * Dedicated section for devices behind 32bit controllers so we
  181. * can configure specific DMA mapping for them
  182. */
  183. behind-32bit-controller@7f000000 {
  184. compatible = "simple-bus";
  185. #address-cells = <0x2>;
  186. #size-cells = <0x2>;
  187. ranges = <0x0 0x0 0x0 0x7f000000 0x0 0x1000000>;
  188. /* Host phy ram starts at 0x200M */
  189. dma-ranges = <0x0 0x0 0x2 0x0 0x1 0x0>;
  190. dma-coherent;
  191. eth0: ethernet@20000 {
  192. compatible = "marvell,armada-ac5-neta";
  193. reg = <0x0 0x20000 0x0 0x4000>;
  194. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  195. clocks = <&cnm_clock>;
  196. phy-mode = "sgmii";
  197. status = "disabled";
  198. };
  199. eth1: ethernet@24000 {
  200. compatible = "marvell,armada-ac5-neta";
  201. reg = <0x0 0x24000 0x0 0x4000>;
  202. interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
  203. clocks = <&cnm_clock>;
  204. phy-mode = "sgmii";
  205. status = "disabled";
  206. };
  207. usb0: usb@80000 {
  208. compatible = "marvell,orion-ehci";
  209. reg = <0x0 0x80000 0x0 0x500>;
  210. interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
  211. status = "disabled";
  212. };
  213. usb1: usb@a0000 {
  214. compatible = "marvell,orion-ehci";
  215. reg = <0x0 0xa0000 0x0 0x500>;
  216. interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
  217. status = "disabled";
  218. };
  219. };
  220. pinctrl0: pinctrl@80020100 {
  221. compatible = "marvell,ac5-pinctrl";
  222. reg = <0 0x80020100 0 0x20>;
  223. i2c0_pins: i2c0-pins {
  224. marvell,pins = "mpp26", "mpp27";
  225. marvell,function = "i2c0";
  226. };
  227. i2c0_gpio: i2c0-gpio-pins {
  228. marvell,pins = "mpp26", "mpp27";
  229. marvell,function = "gpio";
  230. };
  231. i2c1_pins: i2c1-pins {
  232. marvell,pins = "mpp20", "mpp21";
  233. marvell,function = "i2c1";
  234. };
  235. i2c1_gpio: i2c1-gpio-pins {
  236. marvell,pins = "mpp20", "mpp21";
  237. marvell,function = "i2c1";
  238. };
  239. };
  240. spi0: spi@805a0000 {
  241. compatible = "marvell,armada-3700-spi";
  242. reg = <0x0 0x805a0000 0x0 0x50>;
  243. #address-cells = <0x1>;
  244. #size-cells = <0x0>;
  245. clocks = <&spi_clock>;
  246. interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  247. num-cs = <1>;
  248. status = "disabled";
  249. };
  250. spi1: spi@805a8000 {
  251. compatible = "marvell,armada-3700-spi";
  252. reg = <0x0 0x805a8000 0x0 0x50>;
  253. #address-cells = <0x1>;
  254. #size-cells = <0x0>;
  255. clocks = <&spi_clock>;
  256. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  257. num-cs = <1>;
  258. status = "disabled";
  259. };
  260. gic: interrupt-controller@80600000 {
  261. compatible = "arm,gic-v3";
  262. #interrupt-cells = <3>;
  263. interrupt-controller;
  264. reg = <0x0 0x80600000 0x0 0x10000>, /* GICD */
  265. <0x0 0x80660000 0x0 0x40000>; /* GICR */
  266. interrupts = <GIC_PPI 6 IRQ_TYPE_LEVEL_HIGH>;
  267. };
  268. };
  269. clocks {
  270. cnm_clock: cnm-clock {
  271. compatible = "fixed-clock";
  272. #clock-cells = <0>;
  273. clock-frequency = <328000000>;
  274. };
  275. spi_clock: spi-clock {
  276. compatible = "fixed-clock";
  277. #clock-cells = <0>;
  278. clock-frequency = <200000000>;
  279. };
  280. };
  281. };