rtl931x.dtsi 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
  2. #include "macros.dtsi"
  3. #include <dt-bindings/interrupt-controller/mips-gic.h>
  4. /dts-v1/;
  5. / {
  6. #address-cells = <1>;
  7. #size-cells = <1>;
  8. compatible = "realtek,rtl838x-soc";
  9. cpus {
  10. #address-cells = <1>;
  11. #size-cells = <0>;
  12. frequency = <1000000000>;
  13. cpu@0 {
  14. compatible = "mti,interaptive";
  15. reg = <0>;
  16. };
  17. cpu@1 {
  18. compatible = "mti,interaptive";
  19. reg = <1>;
  20. };
  21. };
  22. memory@0 {
  23. device_type = "memory";
  24. reg = <0x0 0x10000000>;
  25. };
  26. aliases {
  27. serial0 = &uart0;
  28. serial1 = &uart1;
  29. };
  30. chosen {
  31. bootargs = "earlycon";
  32. stdout-path = "serial0:115200n8";
  33. };
  34. lx_clk: lx_clk {
  35. compatible = "fixed-clock";
  36. #clock-cells = <0>;
  37. clock-frequency = <200000000>;
  38. };
  39. cpc: cpc@1bde0000 {
  40. compatible = "mti,mips-cpc";
  41. reg = <0x1bde0000 0x8000>;
  42. };
  43. cpuclock: cpuclock@0 {
  44. #clock-cells = <0>;
  45. compatible = "fixed-clock";
  46. /* FIXME: there should be way to detect this */
  47. clock-frequency = <1000000000>;
  48. };
  49. cpuintc: cpuintc {
  50. compatible = "mti,cpu-interrupt-controller";
  51. #address-cells = <0>;
  52. #interrupt-cells = <1>;
  53. interrupt-controller;
  54. };
  55. gic: interrupt-controller@1ddc0000 {
  56. compatible = "mti,gic";
  57. reg = <0x1ddc0000 0x20000>;
  58. interrupt-controller;
  59. #interrupt-cells = <3>;
  60. /*
  61. * Declare the interrupt-parent even though the mti,gic
  62. * binding doesn't require it, such that the kernel can
  63. * figure out that cpu_intc is the root interrupt
  64. * controller & should be probed first.
  65. */
  66. interrupt-parent = <&cpuintc>;
  67. };
  68. soc: soc {
  69. compatible = "simple-bus";
  70. #address-cells = <1>;
  71. #size-cells = <1>;
  72. ranges = <0x0 0x18000000 0x20000>;
  73. ecc0: ecc@1a600 {
  74. compatible = "realtek,rtl9301-ecc";
  75. reg = <0x1a600 0x54>;
  76. status = "disabled";
  77. };
  78. spi0: spi@1200 {
  79. status = "okay";
  80. compatible = "realtek,rtl8380-spi";
  81. reg = <0x1200 0x100>;
  82. #address-cells = <1>;
  83. #size-cells = <0>;
  84. };
  85. snand: spi@1a400 {
  86. compatible = "realtek,rtl9301-snand";
  87. reg = <0x1a400 0x44>;
  88. interrupt-parent = <&gic>;
  89. interrupts = <GIC_SHARED 37 IRQ_TYPE_LEVEL_HIGH>;
  90. clocks = <&lx_clk>;
  91. #address-cells = <1>;
  92. #size-cells = <0>;
  93. status = "disabled";
  94. };
  95. watchdog0: watchdog@3260 {
  96. compatible = "realtek,rtl9310-wdt";
  97. reg = <0x3260 0xc>;
  98. realtek,reset-mode = "soc";
  99. clocks = <&lx_clk>;
  100. timeout-sec = <30>;
  101. interrupt-parent = <&gic>;
  102. interrupt-names = "phase1", "phase2";
  103. interrupts = <GIC_SHARED 8 IRQ_TYPE_LEVEL_HIGH>, <GIC_SHARED 9 IRQ_TYPE_LEVEL_HIGH>;
  104. };
  105. gpio0: gpio-controller@3300 {
  106. compatible = "realtek,rtl9310-gpio", "realtek,otto-gpio";
  107. reg = <0x3300 0x1c>;
  108. gpio-controller;
  109. #gpio-cells = <2>;
  110. ngpios = <32>;
  111. interrupt-controller;
  112. #interrupt-cells = <3>;
  113. interrupt-parent = <&gic>;
  114. interrupts = <GIC_SHARED 20 IRQ_TYPE_LEVEL_HIGH>;
  115. };
  116. timer0: timer@3200 {
  117. compatible = "realtek,rtl931x-timer", "realtek,otto-timer";
  118. reg = <0x3200 0x10>, <0x3210 0x10>, <0x3220 0x10>,
  119. <0x3230 0x10>, <0x3240 0x10>, <0x3250 0x10>;
  120. interrupt-parent = <&gic>;
  121. interrupts = <GIC_SHARED 0 IRQ_TYPE_LEVEL_HIGH>, <GIC_SHARED 1 IRQ_TYPE_LEVEL_HIGH>,
  122. <GIC_SHARED 2 IRQ_TYPE_LEVEL_HIGH>, <GIC_SHARED 3 IRQ_TYPE_LEVEL_HIGH>,
  123. <GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>, <GIC_SHARED 5 IRQ_TYPE_LEVEL_HIGH>;
  124. clocks = <&lx_clk>;
  125. };
  126. uart0: uart@2000 {
  127. compatible = "ns16550a";
  128. reg = <0x2000 0x100>;
  129. clock-frequency = <200000000>;
  130. interrupt-parent = <&gic>;
  131. #interrupt-cells = <3>;
  132. interrupts = <GIC_SHARED 22 IRQ_TYPE_LEVEL_HIGH>;
  133. reg-io-width = <1>;
  134. reg-shift = <2>;
  135. fifo-size = <1>;
  136. no-loopback-test;
  137. };
  138. uart1: uart@2100 {
  139. compatible = "ns16550a";
  140. reg = <0x2100 0x100>;
  141. clock-frequency = <200000000>;
  142. interrupt-parent = <&gic>;
  143. #interrupt-cells = <3>;
  144. interrupts = <GIC_SHARED 23 IRQ_TYPE_LEVEL_HIGH>;
  145. reg-io-width = <1>;
  146. reg-shift = <2>;
  147. fifo-size = <1>;
  148. no-loopback-test;
  149. status = "disabled";
  150. };
  151. };
  152. switchcore@1b000000 {
  153. compatible = "syscon", "simple-mfd";
  154. reg = <0x1b000000 0x10000>;
  155. #address-cells = <1>;
  156. #size-cells = <1>;
  157. ethernet0: ethernet {
  158. compatible = "realtek,rtl9311-eth";
  159. interrupt-parent = <&gic>;
  160. interrupts = <GIC_SHARED 16 IRQ_TYPE_LEVEL_HIGH>;
  161. #interrupt-cells = <3>;
  162. phy-mode = "internal";
  163. pinctrl-0 = <&pinmux_disable_ext_cpu>;
  164. pinctrl-names = "default";
  165. fixed-link {
  166. speed = <1000>;
  167. full-duplex;
  168. };
  169. };
  170. i2c_mst1: i2c@100c {
  171. compatible = "realtek,rtl9310-i2c";
  172. reg = <0x100c 0x18>;
  173. #address-cells = <1>;
  174. #size-cells = <0>;
  175. realtek,scl = <0>;
  176. status = "disabled";
  177. };
  178. i2c_mst2: i2c@1024 {
  179. compatible = "realtek,rtl9310-i2c";
  180. reg = <0x1024 0x18>;
  181. #address-cells = <1>;
  182. #size-cells = <0>;
  183. realtek,scl = <1>;
  184. status = "disabled";
  185. };
  186. mdio_ctrl: mdio-controller {
  187. compatible = "realtek,rtl9311-mdio", "realtek,otto-mdio";
  188. #address-cells = <1>;
  189. #size-cells = <0>;
  190. mdio_bus0: mdio-bus@0 {
  191. reg = <0>;
  192. #address-cells = <1>;
  193. #size-cells = <0>;
  194. };
  195. };
  196. mdio_aux: mdio-aux {
  197. compatible = "realtek,rtl9310-aux-mdio";
  198. #address-cells = <1>;
  199. #size-cells = <0>;
  200. pinctrl-0 = <&pinmux_gpio_mdio_en>;
  201. pinctrl-names = "default";
  202. status = "disabled";
  203. };
  204. mdio_serdes: mdio-serdes {
  205. compatible = "realtek,rtl9311-serdes-mdio", "realtek,otto-serdes-mdio";
  206. };
  207. pcs {
  208. compatible = "realtek,rtl9311-pcs", "realtek,otto-pcs";
  209. #address-cells = <1>;
  210. #size-cells = <0>;
  211. serdes0: serdes@0 {
  212. reg = <0>;
  213. };
  214. serdes1: serdes@1 {
  215. reg = <1>;
  216. };
  217. serdes2: serdes@2 {
  218. reg = <2>;
  219. };
  220. serdes3: serdes@3 {
  221. reg = <3>;
  222. };
  223. serdes4: serdes@4 {
  224. reg = <4>;
  225. };
  226. serdes5: serdes@5 {
  227. reg = <5>;
  228. };
  229. serdes6: serdes@6 {
  230. reg = <6>;
  231. };
  232. serdes7: serdes@7 {
  233. reg = <7>;
  234. };
  235. serdes8: serdes@8 {
  236. reg = <8>;
  237. };
  238. serdes9: serdes@9 {
  239. reg = <9>;
  240. };
  241. serdes10: serdes@10 {
  242. reg = <10>;
  243. };
  244. serdes11: serdes@11 {
  245. reg = <11>;
  246. };
  247. serdes12: serdes@12 {
  248. reg = <12>;
  249. };
  250. serdes13: serdes@13 {
  251. reg = <13>;
  252. };
  253. };
  254. };
  255. pinmux@1b00103c {
  256. compatible = "pinctrl-single";
  257. reg = <0x1b00103c 0x4>;
  258. pinctrl-single,bit-per-mux;
  259. pinctrl-single,register-width = <32>;
  260. pinctrl-single,function-mask = <0x1>;
  261. #pinctrl-cells = <2>;
  262. /* 31.25 MHz SPI master clock */
  263. pinmux_spi0_31mhz: spi0-31mhz {
  264. pinctrl-single,bits = <0x0 0x1800 0x3800>;
  265. };
  266. /* Enable GPIO 8, 9, 10 */
  267. pinmux_disable_spi0: disable-spi0 {
  268. pinctrl-single,bits = <0x0 0x0 0x400>;
  269. };
  270. /* Enable GPIO 12 */
  271. pinmux_disable_spi0_cs1: disable-spi-cs1 {
  272. pinctrl-single,bits = <0x0 0x0 0x200>;
  273. };
  274. /* Enable GPIO 11 */
  275. pinmux_disable_spi0_cs0: disable-spi-cs0 {
  276. pinctrl-single,bits = <0x0 0x0 0x100>;
  277. };
  278. };
  279. pinmux@1b001358 {
  280. compatible = "pinctrl-single";
  281. reg = <0x1b001358 0x4>;
  282. pinctrl-single,bit-per-mux;
  283. pinctrl-single,register-width = <32>;
  284. pinctrl-single,function-mask = <0x1>;
  285. #pinctrl-cells = <2>;
  286. /* Enable GPIO 31 */
  287. pinmux_disable_led_sync: disable-led-sync {
  288. pinctrl-single,bits = <0x0 0x0 0x10000>;
  289. };
  290. pinmux_enable_led_sync: enable-led-sync {
  291. pinctrl-single,bits = <0x0 0x10000 0x10000>;
  292. };
  293. pinmux_enable_mdc_mdio_3: enable-mdc-mdio-3 {
  294. pinctrl-single,bits = <0x0 0x1000 0x1000>;
  295. };
  296. pinmux_enable_mdc_mdio_2: enable-mdc-mdio-2 {
  297. pinctrl-single,bits = <0x0 0x800 0x800>;
  298. };
  299. pinmux_enable_mdc_mdio_1: enable-mdc-mdio-1 {
  300. pinctrl-single,bits = <0x0 0x400 0x400>;
  301. };
  302. pinmux_enable_mdc_mdio_0: enable-mdc-mdio-0 {
  303. pinctrl-single,bits = <0x0 0x200 0x200>;
  304. };
  305. /* Enable GPIO6 and GPIO7, possibly unknown others */
  306. pinmux_disable_jtag: disable_jtag {
  307. pinctrl-single,bits = <0x0 0x0 0x8000>;
  308. };
  309. /* Controls GPIO0 */
  310. pinmux_disable_sys_led: disable_sys_led {
  311. pinctrl-single,bits = <0x0 0x0 0x100>;
  312. };
  313. pinmux_disable_ext_cpu: disable-ext-cpu {
  314. pinctrl-single,bits = <0x0 0x0 0x4>;
  315. };
  316. };
  317. pinmux@1b0007d4 {
  318. compatible = "pinctrl-single";
  319. reg = <0x1b0007d4 0x4>;
  320. pinctrl-single,bit-per-mux;
  321. pinctrl-single,register-width = <32>;
  322. pinctrl-single,function-mask = <0x1>;
  323. #pinctrl-cells = <2>;
  324. pinmux_gpio_mdio_en: gpio-mdio-en {
  325. pinctrl-single,bits = <0x0 0x100 0x100>;
  326. };
  327. };
  328. switch0: switch@1b000000 {
  329. compatible = "realtek,rtl83xx-switch";
  330. status = "okay";
  331. interrupt-parent = <&gic>;
  332. #interrupt-cells = <3>;
  333. interrupts = <GIC_SHARED 15 IRQ_TYPE_LEVEL_HIGH>;
  334. };
  335. };