mt7629.dtsi 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Copyright (c) 2019 MediaTek Inc.
  4. *
  5. * Author: Ryder Lee <[email protected]>
  6. */
  7. #include <dt-bindings/interrupt-controller/irq.h>
  8. #include <dt-bindings/interrupt-controller/arm-gic.h>
  9. #include <dt-bindings/clock/mt7629-clk.h>
  10. #include <dt-bindings/power/mt7622-power.h>
  11. #include <dt-bindings/gpio/gpio.h>
  12. #include <dt-bindings/phy/phy.h>
  13. #include <dt-bindings/reset/mt7629-resets.h>
  14. / {
  15. compatible = "mediatek,mt7629";
  16. interrupt-parent = <&sysirq>;
  17. #address-cells = <1>;
  18. #size-cells = <1>;
  19. cpus {
  20. #address-cells = <1>;
  21. #size-cells = <0>;
  22. enable-method = "mediatek,mt6589-smp";
  23. cpu0: cpu@0 {
  24. device_type = "cpu";
  25. compatible = "arm,cortex-a7";
  26. reg = <0x0>;
  27. clock-frequency = <1250000000>;
  28. cci-control-port = <&cci_control2>;
  29. };
  30. cpu1: cpu@1 {
  31. device_type = "cpu";
  32. compatible = "arm,cortex-a7";
  33. reg = <0x1>;
  34. clock-frequency = <1250000000>;
  35. cci-control-port = <&cci_control2>;
  36. };
  37. };
  38. pmu {
  39. compatible = "arm,cortex-a7-pmu";
  40. interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_LOW>,
  41. <GIC_SPI 9 IRQ_TYPE_LEVEL_LOW>;
  42. interrupt-affinity = <&cpu0>, <&cpu1>;
  43. };
  44. clk20m: oscillator-0 {
  45. compatible = "fixed-clock";
  46. #clock-cells = <0>;
  47. clock-frequency = <20000000>;
  48. clock-output-names = "clk20m";
  49. };
  50. clk40m: oscillator-1 {
  51. compatible = "fixed-clock";
  52. #clock-cells = <0>;
  53. clock-frequency = <40000000>;
  54. clock-output-names = "clkxtal";
  55. };
  56. timer {
  57. compatible = "arm,armv7-timer";
  58. interrupt-parent = <&gic>;
  59. interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
  60. <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
  61. <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
  62. <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
  63. clock-frequency = <20000000>;
  64. };
  65. soc {
  66. compatible = "simple-bus";
  67. #address-cells = <1>;
  68. #size-cells = <1>;
  69. ranges;
  70. infracfg: syscon@10000000 {
  71. compatible = "mediatek,mt7629-infracfg", "syscon";
  72. reg = <0x10000000 0x1000>;
  73. #clock-cells = <1>;
  74. };
  75. pericfg: syscon@10002000 {
  76. compatible = "mediatek,mt7629-pericfg", "syscon";
  77. reg = <0x10002000 0x1000>;
  78. #clock-cells = <1>;
  79. };
  80. scpsys: power-controller@10006000 {
  81. compatible = "mediatek,mt7629-scpsys",
  82. "mediatek,mt7622-scpsys";
  83. #power-domain-cells = <1>;
  84. reg = <0x10006000 0x1000>;
  85. clocks = <&topckgen CLK_TOP_HIF_SEL>;
  86. clock-names = "hif_sel";
  87. assigned-clocks = <&topckgen CLK_TOP_HIF_SEL>;
  88. assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL1_D2>;
  89. infracfg = <&infracfg>;
  90. };
  91. timer: timer@10009000 {
  92. compatible = "mediatek,mt7629-timer",
  93. "mediatek,mt6765-timer";
  94. reg = <0x10009000 0x60>;
  95. interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,
  96. <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
  97. clocks = <&clk20m>;
  98. clock-names = "clk20m";
  99. };
  100. sysirq: interrupt-controller@10200a80 {
  101. compatible = "mediatek,mt7629-sysirq",
  102. "mediatek,mt6577-sysirq";
  103. reg = <0x10200a80 0x20>;
  104. interrupt-controller;
  105. #interrupt-cells = <3>;
  106. interrupt-parent = <&gic>;
  107. };
  108. apmixedsys: syscon@10209000 {
  109. compatible = "mediatek,mt7629-apmixedsys", "syscon";
  110. reg = <0x10209000 0x1000>;
  111. #clock-cells = <1>;
  112. };
  113. rng: rng@1020f000 {
  114. compatible = "mediatek,mt7629-rng",
  115. "mediatek,mt7623-rng";
  116. reg = <0x1020f000 0x100>;
  117. clocks = <&infracfg CLK_INFRA_TRNG_PD>;
  118. clock-names = "rng";
  119. };
  120. topckgen: syscon@10210000 {
  121. compatible = "mediatek,mt7629-topckgen", "syscon";
  122. reg = <0x10210000 0x1000>;
  123. #clock-cells = <1>;
  124. };
  125. watchdog: watchdog@10212000 {
  126. compatible = "mediatek,mt7629-wdt",
  127. "mediatek,mt6589-wdt";
  128. reg = <0x10212000 0x100>;
  129. };
  130. pio: pinctrl@10217000 {
  131. compatible = "mediatek,mt7629-pinctrl";
  132. reg = <0x10217000 0x8000>,
  133. <0x10005000 0x1000>;
  134. reg-names = "base", "eint";
  135. gpio-controller;
  136. gpio-ranges = <&pio 0 0 79>;
  137. #gpio-cells = <2>;
  138. #interrupt-cells = <2>;
  139. interrupt-controller;
  140. interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
  141. interrupt-parent = <&gic>;
  142. };
  143. gic: interrupt-controller@10300000 {
  144. compatible = "arm,gic-400";
  145. interrupt-controller;
  146. #interrupt-cells = <3>;
  147. interrupt-parent = <&gic>;
  148. reg = <0x10310000 0x1000>,
  149. <0x10320000 0x1000>,
  150. <0x10340000 0x2000>,
  151. <0x10360000 0x2000>;
  152. };
  153. cci: cci@10390000 {
  154. compatible = "arm,cci-400";
  155. #address-cells = <1>;
  156. #size-cells = <1>;
  157. reg = <0x10390000 0x1000>;
  158. ranges = <0 0x10390000 0x10000>;
  159. cci_control0: slave-if@1000 {
  160. compatible = "arm,cci-400-ctrl-if";
  161. interface-type = "ace-lite";
  162. reg = <0x1000 0x1000>;
  163. };
  164. cci_control1: slave-if@4000 {
  165. compatible = "arm,cci-400-ctrl-if";
  166. interface-type = "ace";
  167. reg = <0x4000 0x1000>;
  168. };
  169. cci_control2: slave-if@5000 {
  170. compatible = "arm,cci-400-ctrl-if";
  171. interface-type = "ace";
  172. reg = <0x5000 0x1000>;
  173. };
  174. pmu@9000 {
  175. compatible = "arm,cci-400-pmu,r1";
  176. reg = <0x9000 0x5000>;
  177. interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
  178. <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
  179. <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
  180. <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
  181. <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
  182. };
  183. };
  184. uart0: serial@11002000 {
  185. compatible = "mediatek,mt7629-uart",
  186. "mediatek,mt6577-uart";
  187. reg = <0x11002000 0x400>;
  188. interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_LOW>;
  189. clocks = <&topckgen CLK_TOP_UART_SEL>,
  190. <&pericfg CLK_PERI_UART0_PD>;
  191. clock-names = "baud", "bus";
  192. status = "disabled";
  193. };
  194. uart1: serial@11003000 {
  195. compatible = "mediatek,mt7629-uart",
  196. "mediatek,mt6577-uart";
  197. reg = <0x11003000 0x400>;
  198. interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_LOW>;
  199. clocks = <&topckgen CLK_TOP_UART_SEL>,
  200. <&pericfg CLK_PERI_UART1_PD>;
  201. clock-names = "baud", "bus";
  202. status = "disabled";
  203. };
  204. uart2: serial@11004000 {
  205. compatible = "mediatek,mt7629-uart",
  206. "mediatek,mt6577-uart";
  207. reg = <0x11004000 0x400>;
  208. interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_LOW>;
  209. clocks = <&topckgen CLK_TOP_UART_SEL>,
  210. <&pericfg CLK_PERI_UART2_PD>;
  211. clock-names = "baud", "bus";
  212. status = "disabled";
  213. };
  214. pwm: pwm@11006000 {
  215. compatible = "mediatek,mt7629-pwm";
  216. reg = <0x11006000 0x1000>;
  217. #pwm-cells = <2>;
  218. clocks = <&topckgen CLK_TOP_PWM_SEL>,
  219. <&pericfg CLK_PERI_PWM_PD>,
  220. <&pericfg CLK_PERI_PWM1_PD>;
  221. clock-names = "top", "main", "pwm1";
  222. assigned-clocks = <&topckgen CLK_TOP_PWM_SEL>;
  223. assigned-clock-parents =
  224. <&topckgen CLK_TOP_UNIVPLL2_D4>;
  225. status = "disabled";
  226. };
  227. i2c: i2c@11007000 {
  228. compatible = "mediatek,mt7629-i2c",
  229. "mediatek,mt2712-i2c";
  230. reg = <0x11007000 0x90>,
  231. <0x11000100 0x80>;
  232. interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_LOW>;
  233. clock-div = <4>;
  234. clocks = <&pericfg CLK_PERI_I2C0_PD>,
  235. <&pericfg CLK_PERI_AP_DMA_PD>;
  236. clock-names = "main", "dma";
  237. assigned-clocks = <&topckgen CLK_TOP_AXI_SEL>;
  238. assigned-clock-parents = <&topckgen CLK_TOP_SYSPLL1_D2>;
  239. #address-cells = <1>;
  240. #size-cells = <0>;
  241. status = "disabled";
  242. };
  243. spi: spi@1100a000 {
  244. compatible = "mediatek,mt7629-spi",
  245. "mediatek,mt7622-spi";
  246. #address-cells = <1>;
  247. #size-cells = <0>;
  248. reg = <0x1100a000 0x100>;
  249. interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_LOW>;
  250. clocks = <&topckgen CLK_TOP_SYSPLL3_D2>,
  251. <&topckgen CLK_TOP_SPI0_SEL>,
  252. <&pericfg CLK_PERI_SPI0_PD>;
  253. clock-names = "parent-clk", "sel-clk", "spi-clk";
  254. status = "disabled";
  255. };
  256. qspi: spi@11014000 {
  257. compatible = "mediatek,mt7629-nor",
  258. "mediatek,mt8173-nor";
  259. reg = <0x11014000 0xe0>;
  260. clocks = <&pericfg CLK_PERI_FLASH_PD>,
  261. <&topckgen CLK_TOP_FLASH_SEL>;
  262. clock-names = "spi", "sf";
  263. #address-cells = <1>;
  264. #size-cells = <0>;
  265. status = "disabled";
  266. };
  267. ssusbsys: syscon@1a000000 {
  268. compatible = "mediatek,mt7629-ssusbsys", "syscon";
  269. reg = <0x1a000000 0x1000>;
  270. #clock-cells = <1>;
  271. #reset-cells = <1>;
  272. };
  273. ssusb: usb@1a0c0000 {
  274. compatible = "mediatek,mt7629-xhci",
  275. "mediatek,mtk-xhci";
  276. reg = <0x1a0c0000 0x01000>,
  277. <0x1a0c3e00 0x0100>;
  278. reg-names = "mac", "ippc";
  279. interrupts = <GIC_SPI 232 IRQ_TYPE_LEVEL_LOW>;
  280. clocks = <&ssusbsys CLK_SSUSB_SYS_EN>,
  281. <&ssusbsys CLK_SSUSB_REF_EN>,
  282. <&ssusbsys CLK_SSUSB_MCU_EN>,
  283. <&ssusbsys CLK_SSUSB_DMA_EN>;
  284. clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck";
  285. assigned-clocks = <&topckgen CLK_TOP_AXI_SEL>,
  286. <&topckgen CLK_TOP_SATA_SEL>,
  287. <&topckgen CLK_TOP_HIF_SEL>;
  288. assigned-clock-parents = <&topckgen CLK_TOP_SYSPLL1_D2>,
  289. <&topckgen CLK_TOP_UNIVPLL2_D4>,
  290. <&topckgen CLK_TOP_UNIVPLL1_D2>;
  291. power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF1>;
  292. phys = <&u2port0 PHY_TYPE_USB2>,
  293. <&u3port0 PHY_TYPE_USB3>;
  294. status = "disabled";
  295. };
  296. u3phy0: t-phy@1a0c4000 {
  297. compatible = "mediatek,mt7629-tphy",
  298. "mediatek,generic-tphy-v2";
  299. #address-cells = <1>;
  300. #size-cells = <1>;
  301. ranges = <0 0x1a0c4000 0xe00>;
  302. status = "disabled";
  303. u2port0: usb-phy@0 {
  304. reg = <0 0x700>;
  305. clocks = <&ssusbsys CLK_SSUSB_U2_PHY_EN>;
  306. clock-names = "ref";
  307. #phy-cells = <1>;
  308. status = "okay";
  309. };
  310. u3port0: usb-phy@700 {
  311. reg = <0x700 0x700>;
  312. clocks = <&clk20m>;
  313. clock-names = "ref";
  314. #phy-cells = <1>;
  315. status = "okay";
  316. };
  317. };
  318. pciesys: syscon@1a100800 {
  319. compatible = "mediatek,mt7629-pciesys", "syscon";
  320. reg = <0x1a100800 0x1000>;
  321. #clock-cells = <1>;
  322. #reset-cells = <1>;
  323. };
  324. pciecfg: pciecfg@1a140000 {
  325. compatible = "mediatek,generic-pciecfg", "syscon";
  326. reg = <0x1a140000 0x1000>;
  327. };
  328. pcie1: pcie@1a145000 {
  329. compatible = "mediatek,mt7629-pcie";
  330. device_type = "pci";
  331. reg = <0x1a145000 0x1000>;
  332. reg-names = "port1";
  333. linux,pci-domain = <1>;
  334. #address-cells = <3>;
  335. #size-cells = <2>;
  336. interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_LOW>;
  337. interrupt-names = "pcie_irq";
  338. clocks = <&pciesys CLK_PCIE_P1_MAC_EN>,
  339. <&pciesys CLK_PCIE_P0_AHB_EN>,
  340. <&pciesys CLK_PCIE_P1_AUX_EN>,
  341. <&pciesys CLK_PCIE_P1_AXI_EN>,
  342. <&pciesys CLK_PCIE_P1_OBFF_EN>,
  343. <&pciesys CLK_PCIE_P1_PIPE_EN>;
  344. clock-names = "sys_ck1", "ahb_ck1",
  345. "aux_ck1", "axi_ck1",
  346. "obff_ck1", "pipe_ck1";
  347. assigned-clocks = <&topckgen CLK_TOP_SATA_SEL>,
  348. <&topckgen CLK_TOP_AXI_SEL>,
  349. <&topckgen CLK_TOP_HIF_SEL>;
  350. assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL2_D4>,
  351. <&topckgen CLK_TOP_SYSPLL1_D2>,
  352. <&topckgen CLK_TOP_UNIVPLL1_D2>;
  353. phys = <&pcieport1 PHY_TYPE_PCIE>;
  354. phy-names = "pcie-phy1";
  355. power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF0>;
  356. bus-range = <0x00 0xff>;
  357. ranges = <0x82000000 0 0x20000000 0x20000000 0 0x10000000>;
  358. status = "disabled";
  359. #interrupt-cells = <1>;
  360. interrupt-map-mask = <0 0 0 7>;
  361. interrupt-map = <0 0 0 1 &pcie_intc1 0>,
  362. <0 0 0 2 &pcie_intc1 1>,
  363. <0 0 0 3 &pcie_intc1 2>,
  364. <0 0 0 4 &pcie_intc1 3>;
  365. pcie_intc1: interrupt-controller {
  366. interrupt-controller;
  367. #address-cells = <0>;
  368. #interrupt-cells = <1>;
  369. };
  370. };
  371. pciephy1: t-phy@1a14a000 {
  372. compatible = "mediatek,mt7629-tphy",
  373. "mediatek,generic-tphy-v2";
  374. #address-cells = <1>;
  375. #size-cells = <1>;
  376. ranges = <0 0x1a14a000 0x1000>;
  377. status = "disabled";
  378. pcieport1: pcie-phy@0 {
  379. reg = <0 0x1000>;
  380. clocks = <&clk20m>;
  381. clock-names = "ref";
  382. #phy-cells = <1>;
  383. status = "okay";
  384. };
  385. };
  386. ethsys: syscon@1b000000 {
  387. compatible = "mediatek,mt7629-ethsys", "syscon";
  388. reg = <0x1b000000 0x1000>;
  389. #clock-cells = <1>;
  390. #reset-cells = <1>;
  391. };
  392. eth: ethernet@1b100000 {
  393. compatible = "mediatek,mt7629-eth","syscon";
  394. reg = <0x1b100000 0x20000>;
  395. interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_LOW>,
  396. <GIC_SPI 224 IRQ_TYPE_LEVEL_LOW>,
  397. <GIC_SPI 225 IRQ_TYPE_LEVEL_LOW>;
  398. clocks = <&topckgen CLK_TOP_ETH_SEL>,
  399. <&topckgen CLK_TOP_F10M_REF_SEL>,
  400. <&ethsys CLK_ETH_ESW_EN>,
  401. <&ethsys CLK_ETH_GP0_EN>,
  402. <&ethsys CLK_ETH_GP1_EN>,
  403. <&ethsys CLK_ETH_GP2_EN>,
  404. <&ethsys CLK_ETH_FE_EN>,
  405. <&sgmiisys0 CLK_SGMII_TX_EN>,
  406. <&sgmiisys0 CLK_SGMII_RX_EN>,
  407. <&sgmiisys0 CLK_SGMII_CDR_REF>,
  408. <&sgmiisys0 CLK_SGMII_CDR_FB>,
  409. <&sgmiisys1 CLK_SGMII_TX_EN>,
  410. <&sgmiisys1 CLK_SGMII_RX_EN>,
  411. <&sgmiisys1 CLK_SGMII_CDR_REF>,
  412. <&sgmiisys1 CLK_SGMII_CDR_FB>,
  413. <&apmixedsys CLK_APMIXED_SGMIPLL>,
  414. <&apmixedsys CLK_APMIXED_ETH2PLL>;
  415. clock-names = "ethif", "sgmiitop", "esw", "gp0", "gp1",
  416. "gp2", "fe", "sgmii_tx250m", "sgmii_rx250m",
  417. "sgmii_cdr_ref", "sgmii_cdr_fb",
  418. "sgmii2_tx250m", "sgmii2_rx250m",
  419. "sgmii2_cdr_ref", "sgmii2_cdr_fb",
  420. "sgmii_ck", "eth2pll";
  421. assigned-clocks = <&topckgen CLK_TOP_ETH_SEL>,
  422. <&topckgen CLK_TOP_F10M_REF_SEL>;
  423. assigned-clock-parents = <&topckgen CLK_TOP_UNIVPLL1_D2>,
  424. <&topckgen CLK_TOP_SGMIIPLL_D2>;
  425. power-domains = <&scpsys MT7622_POWER_DOMAIN_ETHSYS>;
  426. mediatek,ethsys = <&ethsys>;
  427. mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>;
  428. mediatek,infracfg = <&infracfg>;
  429. #address-cells = <1>;
  430. #size-cells = <0>;
  431. status = "disabled";
  432. };
  433. sgmiisys0: syscon@1b128000 {
  434. compatible = "mediatek,mt7629-sgmiisys", "syscon";
  435. reg = <0x1b128000 0x3000>;
  436. #clock-cells = <1>;
  437. };
  438. sgmiisys1: syscon@1b130000 {
  439. compatible = "mediatek,mt7629-sgmiisys", "syscon";
  440. reg = <0x1b130000 0x3000>;
  441. #clock-cells = <1>;
  442. };
  443. };
  444. };