mt7629.dtsi 13 KB

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