ac5-98dx25xx.dtsi 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  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. cache-level = <2>;
  46. cache-unified;
  47. };
  48. };
  49. psci {
  50. compatible = "arm,psci-0.2";
  51. method = "smc";
  52. };
  53. timer {
  54. compatible = "arm,armv8-timer";
  55. interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>,
  56. <GIC_PPI 8 IRQ_TYPE_LEVEL_HIGH>,
  57. <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>,
  58. <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
  59. };
  60. pmu {
  61. compatible = "arm,cortex-a55-pmu";
  62. interrupts = <GIC_PPI 12 IRQ_TYPE_LEVEL_HIGH>;
  63. };
  64. soc {
  65. compatible = "simple-bus";
  66. #address-cells = <2>;
  67. #size-cells = <2>;
  68. ranges;
  69. internal-regs@7f000000 {
  70. #address-cells = <1>;
  71. #size-cells = <1>;
  72. compatible = "simple-bus";
  73. /* 16M internal register @ 0x7f00_0000 */
  74. ranges = <0x0 0x0 0x7f000000 0x1000000>;
  75. dma-coherent;
  76. uart0: serial@12000 {
  77. compatible = "snps,dw-apb-uart";
  78. reg = <0x12000 0x100>;
  79. reg-shift = <2>;
  80. interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
  81. reg-io-width = <1>;
  82. clocks = <&cnm_clock>;
  83. status = "okay";
  84. };
  85. uart1: serial@12100 {
  86. compatible = "snps,dw-apb-uart";
  87. reg = <0x12100 0x100>;
  88. reg-shift = <2>;
  89. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
  90. reg-io-width = <1>;
  91. clocks = <&cnm_clock>;
  92. status = "disabled";
  93. };
  94. uart2: serial@12200 {
  95. compatible = "snps,dw-apb-uart";
  96. reg = <0x12200 0x100>;
  97. reg-shift = <2>;
  98. interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
  99. reg-io-width = <1>;
  100. clocks = <&cnm_clock>;
  101. status = "disabled";
  102. };
  103. uart3: serial@12300 {
  104. compatible = "snps,dw-apb-uart";
  105. reg = <0x12300 0x100>;
  106. reg-shift = <2>;
  107. interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
  108. reg-io-width = <1>;
  109. clocks = <&cnm_clock>;
  110. status = "disabled";
  111. };
  112. mdio: mdio@22004 {
  113. #address-cells = <1>;
  114. #size-cells = <0>;
  115. compatible = "marvell,orion-mdio";
  116. reg = <0x22004 0x4>;
  117. clocks = <&cnm_clock>;
  118. };
  119. i2c0: i2c@11000 {
  120. compatible = "marvell,mv78230-i2c";
  121. reg = <0x11000 0x20>;
  122. #address-cells = <1>;
  123. #size-cells = <0>;
  124. clocks = <&cnm_clock>;
  125. clock-names = "core";
  126. interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
  127. clock-frequency = <100000>;
  128. pinctrl-names = "default", "gpio";
  129. pinctrl-0 = <&i2c0_pins>;
  130. pinctrl-1 = <&i2c0_gpio>;
  131. scl-gpios = <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
  132. sda-gpios = <&gpio0 27 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
  133. status = "disabled";
  134. };
  135. i2c1: i2c@11100 {
  136. compatible = "marvell,mv78230-i2c";
  137. reg = <0x11100 0x20>;
  138. #address-cells = <1>;
  139. #size-cells = <0>;
  140. clocks = <&cnm_clock>;
  141. clock-names = "core";
  142. interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
  143. clock-frequency = <100000>;
  144. pinctrl-names = "default", "gpio";
  145. pinctrl-0 = <&i2c1_pins>;
  146. pinctrl-1 = <&i2c1_gpio>;
  147. scl-gpios = <&gpio0 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
  148. sda-gpios = <&gpio0 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
  149. status = "disabled";
  150. };
  151. gpio0: gpio@18100 {
  152. compatible = "marvell,orion-gpio";
  153. reg = <0x18100 0x40>;
  154. ngpios = <32>;
  155. gpio-controller;
  156. #gpio-cells = <2>;
  157. gpio-ranges = <&pinctrl0 0 0 32>;
  158. marvell,pwm-offset = <0x1f0>;
  159. interrupt-controller;
  160. #interrupt-cells = <2>;
  161. interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
  162. <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
  163. <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
  164. <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
  165. };
  166. gpio1: gpio@18140 {
  167. reg = <0x18140 0x40>;
  168. compatible = "marvell,orion-gpio";
  169. ngpios = <14>;
  170. gpio-controller;
  171. #gpio-cells = <2>;
  172. gpio-ranges = <&pinctrl0 0 32 14>;
  173. marvell,pwm-offset = <0x1f0>;
  174. interrupt-controller;
  175. #interrupt-cells = <2>;
  176. interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
  177. <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
  178. };
  179. };
  180. mmc_dma: bus@80500000 {
  181. compatible = "simple-bus";
  182. ranges;
  183. #address-cells = <0x2>;
  184. #size-cells = <0x2>;
  185. reg = <0x0 0x80500000 0x0 0x100000>;
  186. dma-ranges = <0x0 0x0 0x2 0x0 0x0 0x80000000>;
  187. dma-coherent;
  188. sdhci: mmc@805c0000 {
  189. compatible = "marvell,ac5-sdhci",
  190. "marvell,armada-ap806-sdhci";
  191. reg = <0x0 0x805c0000 0x0 0x1000>;
  192. interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
  193. clocks = <&emmc_clock>, <&cnm_clock>;
  194. clock-names = "core", "axi";
  195. bus-width = <8>;
  196. non-removable;
  197. mmc-ddr-1_8v;
  198. mmc-hs200-1_8v;
  199. mmc-hs400-1_8v;
  200. };
  201. };
  202. /*
  203. * Dedicated section for devices behind 32bit controllers so we
  204. * can configure specific DMA mapping for them
  205. */
  206. behind-32bit-controller@7f000000 {
  207. compatible = "simple-bus";
  208. #address-cells = <0x2>;
  209. #size-cells = <0x2>;
  210. ranges = <0x0 0x0 0x0 0x7f000000 0x0 0x1000000>;
  211. /* Host phy ram starts at 0x200M */
  212. dma-ranges = <0x0 0x0 0x2 0x0 0x1 0x0>;
  213. dma-coherent;
  214. eth0: ethernet@20000 {
  215. compatible = "marvell,armada-ac5-neta";
  216. reg = <0x0 0x20000 0x0 0x4000>;
  217. interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
  218. clocks = <&cnm_clock>;
  219. phy-mode = "sgmii";
  220. status = "disabled";
  221. };
  222. eth1: ethernet@24000 {
  223. compatible = "marvell,armada-ac5-neta";
  224. reg = <0x0 0x24000 0x0 0x4000>;
  225. interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
  226. clocks = <&cnm_clock>;
  227. phy-mode = "sgmii";
  228. status = "disabled";
  229. };
  230. usb0: usb@80000 {
  231. compatible = "marvell,orion-ehci";
  232. reg = <0x0 0x80000 0x0 0x500>;
  233. interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
  234. status = "disabled";
  235. };
  236. usb1: usb@a0000 {
  237. compatible = "marvell,orion-ehci";
  238. reg = <0x0 0xa0000 0x0 0x500>;
  239. interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
  240. status = "disabled";
  241. };
  242. };
  243. pinctrl0: pinctrl@80020100 {
  244. compatible = "marvell,ac5-pinctrl";
  245. reg = <0 0x80020100 0 0x20>;
  246. i2c0_pins: i2c0-pins {
  247. marvell,pins = "mpp26", "mpp27";
  248. marvell,function = "i2c0";
  249. };
  250. i2c0_gpio: i2c0-gpio-pins {
  251. marvell,pins = "mpp26", "mpp27";
  252. marvell,function = "gpio";
  253. };
  254. i2c1_pins: i2c1-pins {
  255. marvell,pins = "mpp20", "mpp21";
  256. marvell,function = "i2c1";
  257. };
  258. i2c1_gpio: i2c1-gpio-pins {
  259. marvell,pins = "mpp20", "mpp21";
  260. marvell,function = "i2c1";
  261. };
  262. };
  263. spi0: spi@805a0000 {
  264. compatible = "marvell,armada-3700-spi";
  265. reg = <0x0 0x805a0000 0x0 0x50>;
  266. #address-cells = <0x1>;
  267. #size-cells = <0x0>;
  268. clocks = <&spi_clock>;
  269. interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
  270. num-cs = <1>;
  271. status = "disabled";
  272. };
  273. spi1: spi@805a8000 {
  274. compatible = "marvell,armada-3700-spi";
  275. reg = <0x0 0x805a8000 0x0 0x50>;
  276. #address-cells = <0x1>;
  277. #size-cells = <0x0>;
  278. clocks = <&spi_clock>;
  279. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
  280. num-cs = <1>;
  281. status = "disabled";
  282. };
  283. nand: nand-controller@805b0000 {
  284. compatible = "marvell,ac5-nand-controller";
  285. reg = <0x0 0x805b0000 0x0 0x00000054>;
  286. #address-cells = <0x1>;
  287. #size-cells = <0x0>;
  288. interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
  289. clocks = <&nand_clock>;
  290. status = "disabled";
  291. };
  292. gic: interrupt-controller@80600000 {
  293. compatible = "arm,gic-v3";
  294. #interrupt-cells = <3>;
  295. interrupt-controller;
  296. reg = <0x0 0x80600000 0x0 0x10000>, /* GICD */
  297. <0x0 0x80660000 0x0 0x40000>; /* GICR */
  298. interrupts = <GIC_PPI 6 IRQ_TYPE_LEVEL_HIGH>;
  299. };
  300. };
  301. clocks {
  302. cnm_clock: cnm-clock {
  303. compatible = "fixed-clock";
  304. #clock-cells = <0>;
  305. clock-frequency = <328000000>;
  306. };
  307. spi_clock: spi-clock {
  308. compatible = "fixed-clock";
  309. #clock-cells = <0>;
  310. clock-frequency = <200000000>;
  311. };
  312. nand_clock: nand-clock {
  313. compatible = "fixed-clock";
  314. #clock-cells = <0>;
  315. clock-frequency = <400000000>;
  316. };
  317. emmc_clock: emmc-clock {
  318. compatible = "fixed-clock";
  319. #clock-cells = <0>;
  320. clock-frequency = <400000000>;
  321. };
  322. };
  323. };