blob: 5b4cadc22f7cd8504cf5cd50b49e8562547b9e54 [file] [log] [blame]
developerff9f2d42022-09-09 19:59:11 +08001// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (c) 2022 MediaTek Inc.
4 * Author: Sam Shih <sam.shih@mediatek.com>
5 */
6
7#include <dt-bindings/interrupt-controller/irq.h>
8#include <dt-bindings/interrupt-controller/arm-gic.h>
John Crispind5ef9252025-01-27 14:40:44 +01009#include <dt-bindings/phy/phy.h>
developerff9f2d42022-09-09 19:59:11 +080010#include <dt-bindings/clock/mt7981-clk.h>
11#include <dt-bindings/reset/mt7629-reset.h>
12#include <dt-bindings/pinctrl/mt65xx.h>
13
14/ {
15 compatible = "mediatek,mt7981";
16 interrupt-parent = <&gic>;
17 #address-cells = <1>;
18 #size-cells = <1>;
19 cpus {
20 #address-cells = <1>;
21 #size-cells = <0>;
22 cpu0: cpu@0 {
23 device_type = "cpu";
24 compatible = "arm,cortex-a53";
25 reg = <0x0>;
26 mediatek,hwver = <&hwver>;
27 };
28 cpu1: cpu@1 {
29 device_type = "cpu";
30 compatible = "arm,cortex-a53";
31 reg = <0x1>;
32 mediatek,hwver = <&hwver>;
33 };
34 };
35
36 gpt_clk: gpt_dummy20m {
37 compatible = "fixed-clock";
38 clock-frequency = <13000000>;
39 #clock-cells = <0>;
Simon Glassd3a98cb2023-02-13 08:56:33 -070040 bootph-all;
developerff9f2d42022-09-09 19:59:11 +080041 };
42
43 hwver: hwver {
44 compatible = "mediatek,hwver", "syscon";
45 reg = <0x8000000 0x1000>;
46 };
47
48 timer {
49 compatible = "arm,armv8-timer";
50 interrupt-parent = <&gic>;
51 clock-frequency = <13000000>;
52 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
53 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
54 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
55 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
56 arm,cpu-registers-not-fw-configured;
57 };
58
59 timer0: timer@10008000 {
60 compatible = "mediatek,mt7986-timer";
61 reg = <0x10008000 0x1000>;
62 interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
63 clocks = <&gpt_clk>;
64 clock-names = "gpt-clk";
Simon Glassd3a98cb2023-02-13 08:56:33 -070065 bootph-all;
developerff9f2d42022-09-09 19:59:11 +080066 };
67
68 watchdog: watchdog@1001c000 {
69 compatible = "mediatek,mt7986-wdt";
70 reg = <0x1001c000 0x1000>;
71 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
72 #reset-cells = <1>;
73 status = "disabled";
74 };
75
76 gic: interrupt-controller@c000000 {
77 compatible = "arm,gic-v3";
78 #interrupt-cells = <3>;
79 interrupt-parent = <&gic>;
80 interrupt-controller;
81 reg = <0x0c000000 0x40000>, /* GICD */
82 <0x0c080000 0x200000>; /* GICR */
83
84 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
85 };
86
87 fixed_plls: apmixedsys@1001e000 {
88 compatible = "mediatek,mt7981-fixed-plls";
89 reg = <0x1001e000 0x1000>;
90 #clock-cells = <1>;
Simon Glassd3a98cb2023-02-13 08:56:33 -070091 bootph-all;
developerff9f2d42022-09-09 19:59:11 +080092 };
93
94 topckgen: topckgen@1001b000 {
95 compatible = "mediatek,mt7981-topckgen";
96 reg = <0x1001b000 0x1000>;
97 clock-parent = <&fixed_plls>;
98 #clock-cells = <1>;
Simon Glassd3a98cb2023-02-13 08:56:33 -070099 bootph-all;
developerff9f2d42022-09-09 19:59:11 +0800100 };
101
developerff9f2d42022-09-09 19:59:11 +0800102 infracfg: infracfg@10001000 {
103 compatible = "mediatek,mt7981-infracfg";
104 reg = <0x10001000 0x30>;
105 clock-parent = <&topckgen>;
106 #clock-cells = <1>;
Simon Glassd3a98cb2023-02-13 08:56:33 -0700107 bootph-all;
developerff9f2d42022-09-09 19:59:11 +0800108 };
109
Christian Marangi68d05782025-01-27 14:40:43 +0100110 pio: pinctrl@11d00000 {
developerff9f2d42022-09-09 19:59:11 +0800111 compatible = "mediatek,mt7981-pinctrl";
112 reg = <0x11d00000 0x1000>,
113 <0x11c00000 0x1000>,
114 <0x11c10000 0x1000>,
115 <0x11d20000 0x1000>,
116 <0x11e00000 0x1000>,
117 <0x11e20000 0x1000>,
118 <0x11f00000 0x1000>,
119 <0x11f10000 0x1000>,
120 <0x1000b000 0x1000>;
Christian Marangid205efa2025-01-27 14:40:38 +0100121 reg-names = "gpio", "iocfg_rt", "iocfg_rm",
122 "iocfg_rb", "iocfg_lb", "iocfg_bl",
123 "iocfg_tm", "iocfg_tl", "eint";
Christian Marangi68d05782025-01-27 14:40:43 +0100124 gpio-controller;
125 #gpio-cells = <2>;
developerff9f2d42022-09-09 19:59:11 +0800126 };
127
128 pwm: pwm@10048000 {
129 compatible = "mediatek,mt7981-pwm";
130 reg = <0x10048000 0x1000>;
131 #clock-cells = <1>;
132 #pwm-cells = <2>;
133 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
Christian Marangif2451642024-08-02 15:53:15 +0200134 clocks = <&topckgen CLK_TOP_PWM_SEL>,
135 <&infracfg CLK_INFRA_PWM_BSEL>,
136 <&infracfg CLK_INFRA_PWM1_CK>,
137 <&infracfg CLK_INFRA_PWM2_CK>,
138 <&infracfg CLK_INFRA_PWM3_CK>;
developerd24fd7e2025-01-17 17:18:06 +0800139 assigned-clocks = <&topckgen CLK_TOP_PWM_SEL>,
140 <&infracfg CLK_INFRA_PWM1_SEL>,
141 <&infracfg CLK_INFRA_PWM2_SEL>,
142 <&infracfg CLK_INFRA_PWM3_SEL>;
143 assigned-clock-parents = <&topckgen CLK_TOP_CB_CKSQ_40M>,
144 <&topckgen CLK_TOP_PWM_SEL>,
145 <&topckgen CLK_TOP_PWM_SEL>,
146 <&topckgen CLK_TOP_PWM_SEL>;
developerff9f2d42022-09-09 19:59:11 +0800147 clock-names = "top", "main", "pwm1", "pwm2", "pwm3";
148 status = "disabled";
149 };
150
developera98189e2023-07-19 17:16:19 +0800151 i2c0: i2c@11007000 {
152 compatible = "mediatek,mt7981-i2c";
153 reg = <0x11007000 0x1000>,
154 <0x10217080 0x80>;
155 interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
156 clock-div = <1>;
Christian Marangif2451642024-08-02 15:53:15 +0200157 clocks = <&infracfg CLK_INFRA_I2C0_CK>,
158 <&infracfg CLK_INFRA_AP_DMA_CK>;
developera98189e2023-07-19 17:16:19 +0800159 clock-names = "main", "dma";
160 #address-cells = <1>;
161 #size-cells = <0>;
162 status = "disabled";
163 };
164
developerff9f2d42022-09-09 19:59:11 +0800165 uart0: serial@11002000 {
166 compatible = "mediatek,hsuart";
167 reg = <0x11002000 0x400>;
168 interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
Christian Marangif2451642024-08-02 15:53:15 +0200169 clocks = <&infracfg CLK_INFRA_UART0_CK>;
170 assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
171 <&infracfg CLK_INFRA_UART0_SEL>;
172 assigned-clock-parents = <&topckgen CLK_TOP_CB_CKSQ_40M>,
173 <&topckgen CLK_TOP_UART_SEL>;
developerff9f2d42022-09-09 19:59:11 +0800174 mediatek,force-highspeed;
175 status = "disabled";
Simon Glassd3a98cb2023-02-13 08:56:33 -0700176 bootph-all;
developerff9f2d42022-09-09 19:59:11 +0800177 };
178
179 uart1: serial@11003000 {
180 compatible = "mediatek,hsuart";
181 reg = <0x11003000 0x400>;
182 interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
Christian Marangif2451642024-08-02 15:53:15 +0200183 clocks = <&infracfg CLK_INFRA_UART1_CK>;
184 assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
185 <&infracfg CLK_INFRA_UART1_SEL>;
186 assigned-clock-parents = <&topckgen CLK_TOP_CB_CKSQ_40M>,
187 <&topckgen CLK_TOP_UART_SEL>;
developerff9f2d42022-09-09 19:59:11 +0800188 mediatek,force-highspeed;
189 status = "disabled";
190 };
191
192 uart2: serial@11004000 {
193 compatible = "mediatek,hsuart";
194 reg = <0x11004000 0x400>;
195 interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
Christian Marangif2451642024-08-02 15:53:15 +0200196 clocks = <&infracfg CLK_INFRA_UART2_CK>;
197 assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
198 <&infracfg CLK_INFRA_UART2_SEL>;
199 assigned-clock-parents = <&topckgen CLK_TOP_CB_CKSQ_40M>,
200 <&topckgen CLK_TOP_UART_SEL>;
developerff9f2d42022-09-09 19:59:11 +0800201 mediatek,force-highspeed;
202 status = "disabled";
203 };
204
205 snand: snand@11005000 {
206 compatible = "mediatek,mt7986-snand";
207 reg = <0x11005000 0x1000>,
208 <0x11006000 0x1000>;
209 reg-names = "nfi", "ecc";
Christian Marangif2451642024-08-02 15:53:15 +0200210 clocks = <&infracfg CLK_INFRA_SPINFI1_CK>,
211 <&infracfg CLK_INFRA_NFI1_CK>,
212 <&infracfg CLK_INFRA_NFI_HCK_CK>;
developerff9f2d42022-09-09 19:59:11 +0800213 clock-names = "pad_clk", "nfi_clk", "nfi_hclk";
Christian Marangif2451642024-08-02 15:53:15 +0200214 assigned-clocks = <&topckgen CLK_TOP_SPINFI_SEL>,
215 <&topckgen CLK_TOP_NFI1X_SEL>;
216 assigned-clock-parents = <&topckgen CLK_TOP_CB_M_D8>,
217 <&topckgen CLK_TOP_CB_M_D8>;
developerff9f2d42022-09-09 19:59:11 +0800218 status = "disabled";
219 };
220
221 ethsys: syscon@15000000 {
222 compatible = "mediatek,mt7981-ethsys", "syscon";
223 reg = <0x15000000 0x1000>;
224 clock-parent = <&topckgen>;
225 #clock-cells = <1>;
226 #reset-cells = <1>;
227 };
228
229 eth: ethernet@15100000 {
230 compatible = "mediatek,mt7981-eth", "syscon";
231 reg = <0x15100000 0x20000>;
232 resets = <&ethsys ETHSYS_FE_RST>;
233 reset-names = "fe";
234 mediatek,ethsys = <&ethsys>;
235 mediatek,sgmiisys = <&sgmiisys0>;
developercdb1f3102023-07-19 17:17:27 +0800236 mediatek,infracfg = <&topmisc>;
developerff9f2d42022-09-09 19:59:11 +0800237 #address-cells = <1>;
238 #size-cells = <0>;
239 status = "disabled";
240 };
241
242 sgmiisys0: syscon@10060000 {
Christian Marangibe9dbee2024-08-02 15:53:10 +0200243 compatible = "mediatek,mt7981-sgmiisys_0", "syscon";
developerff9f2d42022-09-09 19:59:11 +0800244 reg = <0x10060000 0x1000>;
245 pn_swap;
246 #clock-cells = <1>;
247 };
248
249 sgmiisys1: syscon@10070000 {
Christian Marangibe9dbee2024-08-02 15:53:10 +0200250 compatible = "mediatek,mt7981-sgmiisys_1", "syscon";
developerff9f2d42022-09-09 19:59:11 +0800251 reg = <0x10070000 0x1000>;
252 #clock-cells = <1>;
253 };
254
developercdb1f3102023-07-19 17:17:27 +0800255 topmisc: topmisc@11d10000 {
256 compatible = "mediatek,mt7981-topmisc", "syscon";
257 reg = <0x11d10000 0x10000>;
258 #clock-cells = <1>;
259 };
260
developerff9f2d42022-09-09 19:59:11 +0800261 spi0: spi@1100a000 {
262 compatible = "mediatek,ipm-spi";
263 reg = <0x1100a000 0x100>;
Christian Marangif2451642024-08-02 15:53:15 +0200264 clocks = <&infracfg CLK_INFRA_SPI0_CK>,
265 <&topckgen CLK_TOP_SPI_SEL>;
266 assigned-clocks = <&topckgen CLK_TOP_SPI_SEL>,
267 <&infracfg CLK_INFRA_SPI0_SEL>;
268 assigned-clock-parents = <&topckgen CLK_TOP_CB_M_D2>,
269 <&topckgen CLK_TOP_SPI_SEL>;
Christian Marangi821358e2024-08-02 15:53:07 +0200270 clock-names = "spi-clk", "sel-clk";
developerff9f2d42022-09-09 19:59:11 +0800271 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
272 status = "disabled";
273 };
274
275 spi1: spi@1100b000 {
276 compatible = "mediatek,ipm-spi";
277 reg = <0x1100b000 0x100>;
278 interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
Christian Marangif2451642024-08-02 15:53:15 +0200279 clocks = <&infracfg CLK_INFRA_SPI1_CK>,
280 <&topckgen CLK_TOP_SPIM_MST_SEL>;
281 assigned-clocks = <&topckgen CLK_TOP_SPIM_MST_SEL>,
282 <&infracfg CLK_INFRA_SPI1_SEL>;
283 assigned-clock-parents = <&topckgen CLK_TOP_CB_M_D2>,
284 <&topckgen CLK_TOP_SPIM_MST_SEL>;
Christian Marangi821358e2024-08-02 15:53:07 +0200285 clock-names = "spi-clk", "sel-clk";
developerff9f2d42022-09-09 19:59:11 +0800286 status = "disabled";
287 };
288
289 spi2: spi@11009000 {
290 compatible = "mediatek,ipm-spi";
291 reg = <0x11009000 0x100>;
Christian Marangif2451642024-08-02 15:53:15 +0200292 clocks = <&infracfg CLK_INFRA_SPI2_CK>,
293 <&topckgen CLK_TOP_SPI_SEL>;
294 assigned-clocks = <&topckgen CLK_TOP_SPI_SEL>,
295 <&infracfg CLK_INFRA_SPI2_SEL>;
296 assigned-clock-parents = <&topckgen CLK_TOP_CB_M_D2>,
297 <&topckgen CLK_TOP_SPI_SEL>;
Christian Marangi821358e2024-08-02 15:53:07 +0200298 clock-names = "spi-clk", "sel-clk";
developerff9f2d42022-09-09 19:59:11 +0800299 interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
300 status = "disabled";
301 };
302
303 mmc0: mmc@11230000 {
304 compatible = "mediatek,mt7981-mmc";
305 reg = <0x11230000 0x1000>,
306 <0x11C20000 0x1000>;
307 interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
developera6f49362025-01-17 17:18:55 +0800308 clocks = <&topckgen CLK_TOP_EMMC_208M>,
309 <&topckgen CLK_TOP_EMMC_400M>,
Christian Marangif2451642024-08-02 15:53:15 +0200310 <&infracfg CLK_INFRA_MSDC_CK>;
developera6f49362025-01-17 17:18:55 +0800311 assigned-clocks = <&topckgen CLK_TOP_EMMC_208M_SEL>,
312 <&topckgen CLK_TOP_EMMC_400M_SEL>;
313 assigned-clock-parents = <&topckgen CLK_TOP_CB_M_D2>,
314 <&topckgen CLK_TOP_CB_NET2_D2>;
developerff9f2d42022-09-09 19:59:11 +0800315 clock-names = "source", "hclk", "source_cg";
316 status = "disabled";
317 };
318
John Crispind5ef9252025-01-27 14:40:44 +0100319 xhci: xhci@11200000 {
320 compatible = "mediatek,mt7981-xhci",
321 "mediatek,mtk-xhci";
322 reg = <0x11200000 0x2e00>,
323 <0x11203e00 0x0100>;
324 reg-names = "mac", "ippc";
325 interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
326 phys = <&u2port0 PHY_TYPE_USB2>,
327 <&u3port0 PHY_TYPE_USB3>;
328 clocks = <&infracfg CLK_INFRA_IUSB_SYS_CK>,
329 <&infracfg CLK_INFRA_IUSB_CK>,
330 <&infracfg CLK_INFRA_IUSB_133_CK>,
331 <&infracfg CLK_INFRA_IUSB_66M_CK>,
332 <&topckgen CLK_TOP_U2U3_XHCI_SEL>;
333 clock-names = "sys_ck",
334 "ref_ck",
335 "mcu_ck",
336 "dma_ck",
337 "xhci_ck";
338 mediatek,u3p-dis-msk = <0x1>;
339 status = "okay";
340 };
341
Christian Marangi34bd8552025-01-27 14:40:45 +0100342 pcie: pcie@11280000 {
343 compatible = "mediatek,mt8192-pcie";
344 device_type = "pci";
345 reg = <0x11280000 0x4000>;
346 reg-names = "pcie-mac";
347 #address-cells = <3>;
348 #size-cells = <2>;
349 interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
350 clocks = <&infracfg CLK_INFRA_IPCIE_CK>,
351 <&infracfg CLK_INFRA_IPCIE_PIPE_CK>,
352 <&infracfg CLK_INFRA_IPCIER_CK>,
353 <&infracfg CLK_INFRA_IPCIEB_CK>;
354 clock-names = "pl_250m", "tl_26m", "peri_26m", "top_133m";
355 phys = <&u3port0 PHY_TYPE_PCIE>;
356 phy-names = "pcie-phy";
357 bus-range = <0x00 0xff>;
358 ranges = <0x82000000 0 0x20000000 0x20000000 0 0x10000000>;
359
360 #interrupt-cells = <1>;
361
362 interrupt-map-mask = <0 0 0 7>;
363 interrupt-map = <0 0 0 1 &pcie_intc 0>,
364 <0 0 0 2 &pcie_intc 1>,
365 <0 0 0 3 &pcie_intc 2>,
366 <0 0 0 4 &pcie_intc 3>;
367
368 status = "disabled";
369
370 pcie_intc: interrupt-controller {
371 interrupt-controller;
372 #interrupt-cells = <1>;
373 #address-cells = <0>;
374 };
375 };
376
John Crispind5ef9252025-01-27 14:40:44 +0100377 usbtphy: usb-phy@11e10000 {
378 compatible = "mediatek,mt7981",
379 "mediatek,generic-tphy-v2";
380 #address-cells = <1>;
381 #size-cells = <1>;
382 status = "okay";
383
384 u2port0: usb-phy@11e10000 {
385 reg = <0x11e10000 0x700>;
386 clocks = <&topckgen CLK_TOP_USB_FRMCNT_SEL>;
387 clock-names = "ref";
388 #phy-cells = <1>;
389 status = "okay";
390 };
391
392 u3port0: usb-phy@11e10700 {
393 reg = <0x11e10700 0x900>;
394 clocks = <&topckgen CLK_TOP_USB3_PHY_SEL>;
395 clock-names = "ref";
396 #phy-cells = <1>;
397 mediatek,syscon-type = <&topmisc 0x218 0>;
398 status = "okay";
399 };
400 };
developerff9f2d42022-09-09 19:59:11 +0800401};