2 * Copyright (c) 2016 MediaTek Inc.
3 * Author: John Crispin <blogic@openwrt.org>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
15 #include <dt-bindings/interrupt-controller/irq.h>
16 #include <dt-bindings/interrupt-controller/arm-gic.h>
17 #include <dt-bindings/clock/mt2701-clk.h>
18 #include <dt-bindings/power/mt2701-power.h>
19 #include <dt-bindings/phy/phy.h>
20 #include <dt-bindings/reset/mt2701-resets.h>
21 #include <dt-bindings/pinctrl/mt7623-pinfunc.h>
22 #include "skeleton64.dtsi"
26 compatible = "mediatek,mt7623";
27 interrupt-parent = <&sysirq>;
32 enable-method = "mediatek,mt6589-smp";
36 compatible = "arm,cortex-a7";
38 clocks = <&infracfg CLK_INFRA_CPUSEL>,
39 <&apmixedsys CLK_APMIXED_MAINPLL>;
40 clock-names = "cpu", "intermediate";
51 compatible = "arm,cortex-a7";
53 clocks = <&infracfg CLK_INFRA_CPUSEL>,
54 <&apmixedsys CLK_APMIXED_MAINPLL>;
55 clock-names = "cpu", "intermediate";
66 compatible = "arm,cortex-a7";
68 clocks = <&infracfg CLK_INFRA_CPUSEL>,
69 <&apmixedsys CLK_APMIXED_MAINPLL>;
70 clock-names = "cpu", "intermediate";
81 compatible = "arm,cortex-a7";
83 clocks = <&infracfg CLK_INFRA_CPUSEL>,
84 <&apmixedsys CLK_APMIXED_MAINPLL>;
85 clock-names = "cpu", "intermediate";
96 system_clk: dummy13m {
97 compatible = "fixed-clock";
98 clock-frequency = <13000000>;
103 compatible = "fixed-clock";
104 clock-frequency = <32000>;
106 clock-output-names = "clk32k";
110 compatible = "fixed-clock";
111 clock-frequency = <26000000>;
113 clock-output-names = "clk26m";
117 compatible = "arm,armv7-timer";
118 interrupt-parent = <&gic>;
119 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
120 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
121 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
122 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
123 clock-frequency = <13000000>;
124 arm,cpu-registers-not-fw-configured;
127 topckgen: power-controller@10000000 {
128 compatible = "mediatek,mt7623-topckgen",
129 "mediatek,mt2701-topckgen",
131 reg = <0 0x10000000 0 0x1000>;
135 infracfg: power-controller@10001000 {
136 compatible = "mediatek,mt7623-infracfg",
137 "mediatek,mt2701-infracfg",
139 reg = <0 0x10001000 0 0x1000>;
144 pericfg: pericfg@10003000 {
145 compatible = "mediatek,mt7623-pericfg",
146 "mediatek,mt2701-pericfg",
148 reg = <0 0x10003000 0 0x1000>;
153 pio: pinctrl@10005000 {
154 compatible = "mediatek,mt2701-pinctrl";
155 reg = <0 0x1000b000 0 0x1000>;
156 mediatek,pctl-regmap = <&syscfg_pctl_a>;
160 interrupt-controller;
161 interrupt-parent = <&gic>;
162 #interrupt-cells = <2>;
163 interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
164 <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
167 syscfg_pctl_a: syscfg@10005000 {
168 compatible = "mediatek,mt7623-pctl-a-syscfg",
169 "mediatek,mt2701-pctl-a-syscfg",
171 reg = <0 0x10005000 0 0x1000>;
174 scpsys: scpsys@10006000 {
175 #power-domain-cells = <1>;
176 compatible = "mediatek,mt7623-scpsys",
177 "mediatek,mt2701-scpsys";
178 reg = <0 0x10006000 0 0x1000>;
179 infracfg = <&infracfg>;
181 <&topckgen CLK_TOP_MM_SEL>,
182 <&topckgen CLK_TOP_ETHIF_SEL>;
183 clock-names = "mfg", "mm", "ethif";
186 watchdog: watchdog@10007000 {
187 compatible = "mediatek,mt7623-wdt",
188 "mediatek,mt6589-wdt";
189 reg = <0 0x10007000 0 0x100>;
192 timer: timer@10008000 {
193 compatible = "mediatek,mt7623-timer",
194 "mediatek,mt6577-timer";
195 reg = <0 0x10008000 0 0x80>;
196 interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_LOW>;
197 clocks = <&system_clk>, <&rtc_clk>;
198 clock-names = "system-clk", "rtc-clk";
201 pwrap: pwrap@1000d000 {
202 compatible = "mediatek,mt7623-pwrap",
203 "mediatek,mt2701-pwrap";
204 reg = <0 0x1000d000 0 0x1000>;
206 interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
207 resets = <&infracfg MT2701_INFRA_PMIC_WRAP_RST>;
208 reset-names = "pwrap";
209 clocks = <&infracfg CLK_INFRA_PMICSPI>,
210 <&infracfg CLK_INFRA_PMICWRAP>;
211 clock-names = "spi", "wrap";
214 sysirq: interrupt-controller@10200100 {
215 compatible = "mediatek,mt7623-sysirq",
216 "mediatek,mt6577-sysirq";
217 interrupt-controller;
218 #interrupt-cells = <3>;
219 interrupt-parent = <&gic>;
220 reg = <0 0x10200100 0 0x1c>;
223 efuse: efuse@10206000 {
224 compatible = "mediatek,mt7623-efuse",
226 reg = <0 0x10206000 0 0x1000>;
227 #address-cells = <1>;
231 thermal_calibration: calib@424 {
236 apmixedsys: apmixedsys@10209000 {
237 compatible = "mediatek,mt7623-apmixedsys",
238 "mediatek,mt2701-apmixedsys";
239 reg = <0 0x10209000 0 0x1000>;
243 gic: interrupt-controller@10211000 {
244 compatible = "arm,cortex-a7-gic";
245 interrupt-controller;
246 #interrupt-cells = <3>;
247 interrupt-parent = <&gic>;
248 reg = <0 0x10211000 0 0x1000>,
249 <0 0x10212000 0 0x1000>,
250 <0 0x10214000 0 0x2000>,
251 <0 0x10216000 0 0x2000>;
254 auxadc: adc@11001000 {
255 compatible = "mediatek,mt7623-auxadc",
256 "mediatek,mt2701-auxadc";
257 reg = <0 0x11001000 0 0x1000>;
258 clocks = <&pericfg CLK_PERI_AUXADC>;
259 clock-names = "main";
260 #io-channel-cells = <1>;
263 uart0: serial@11002000 {
264 compatible = "mediatek,mt7623-uart",
265 "mediatek,mt6577-uart";
266 reg = <0 0x11002000 0 0x400>;
267 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_LOW>;
268 clocks = <&pericfg CLK_PERI_UART0_SEL>,
269 <&pericfg CLK_PERI_UART0>;
270 clock-names = "baud", "bus";
274 uart1: serial@11003000 {
275 compatible = "mediatek,mt7623-uart",
276 "mediatek,mt6577-uart";
277 reg = <0 0x11003000 0 0x400>;
278 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_LOW>;
279 clocks = <&pericfg CLK_PERI_UART1_SEL>,
280 <&pericfg CLK_PERI_UART1>;
281 clock-names = "baud", "bus";
285 uart2: serial@11004000 {
286 compatible = "mediatek,mt7623-uart",
287 "mediatek,mt6577-uart";
288 reg = <0 0x11004000 0 0x400>;
289 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_LOW>;
290 clocks = <&pericfg CLK_PERI_UART2_SEL>,
291 <&pericfg CLK_PERI_UART2>;
292 clock-names = "baud", "bus";
296 uart3: serial@11005000 {
297 compatible = "mediatek,mt7623-uart",
298 "mediatek,mt6577-uart";
299 reg = <0 0x11005000 0 0x400>;
300 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_LOW>;
301 clocks = <&pericfg CLK_PERI_UART3_SEL>,
302 <&pericfg CLK_PERI_UART3>;
303 clock-names = "baud", "bus";
308 compatible = "mediatek,mt7623-pwm";
310 reg = <0 0x11006000 0 0x1000>;
311 resets = <&pericfg MT2701_PERI_PWM_SW_RST>;
315 clocks = <&topckgen CLK_TOP_PWM_SEL>,
316 <&pericfg CLK_PERI_PWM>,
317 <&pericfg CLK_PERI_PWM1>,
318 <&pericfg CLK_PERI_PWM2>,
319 <&pericfg CLK_PERI_PWM3>,
320 <&pericfg CLK_PERI_PWM4>,
321 <&pericfg CLK_PERI_PWM5>;
322 clock-names = "top", "main", "pwm1", "pwm2",
323 "pwm3", "pwm4", "pwm5";
329 compatible = "mediatek,mt7623-i2c",
330 "mediatek,mt6577-i2c";
331 reg = <0 0x11007000 0 0x70>,
332 <0 0x11000200 0 0x80>;
333 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_LOW>;
335 clocks = <&pericfg CLK_PERI_I2C0>,
336 <&pericfg CLK_PERI_AP_DMA>;
337 clock-names = "main", "dma";
338 #address-cells = <1>;
344 compatible = "mediatek,mt7623-i2c",
345 "mediatek,mt6577-i2c";
346 reg = <0 0x11008000 0 0x70>,
347 <0 0x11000280 0 0x80>;
348 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_LOW>;
350 clocks = <&pericfg CLK_PERI_I2C1>,
351 <&pericfg CLK_PERI_AP_DMA>;
352 clock-names = "main", "dma";
353 #address-cells = <1>;
359 compatible = "mediatek,mt7623-i2c",
360 "mediatek,mt6577-i2c";
361 reg = <0 0x11009000 0 0x70>,
362 <0 0x11000300 0 0x80>;
363 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_LOW>;
365 clocks = <&pericfg CLK_PERI_I2C2>,
366 <&pericfg CLK_PERI_AP_DMA>;
367 clock-names = "main", "dma";
368 #address-cells = <1>;
374 compatible = "mediatek,mt7623-spi",
375 "mediatek,mt6589-spi";
376 reg = <0 0x1100a000 0 0x1000>;
377 interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_LOW>;
378 clocks = <&pericfg CLK_PERI_SPI0>;
379 clock-names = "main";
384 thermal: thermal@1100b000 {
385 #thermal-sensor-cells = <1>;
386 compatible = "mediatek,mt2701-thermal",
387 "mediatek,mt2701-thermal";
388 reg = <0 0x1100b000 0 0x1000>;
389 interrupts = <0 70 IRQ_TYPE_LEVEL_LOW>;
390 clocks = <&pericfg CLK_PERI_THERM>,
391 <&pericfg CLK_PERI_AUXADC>;
392 clock-names = "therm", "auxadc";
393 resets = <&pericfg MT2701_PERI_THERM_SW_RST>;
394 reset-names = "therm";
395 mediatek,auxadc = <&auxadc>;
396 mediatek,apmixedsys = <&apmixedsys>;
398 nvmem-cells = <&thermal_calibration>;
399 nvmem-cell-names = "calibration-data";
402 nandc: nfi@1100d000 {
403 compatible = "mediatek,mt7623-nfc",
404 "mediatek,mt2701-nfc";
405 reg = <0 0x1100d000 0 0x1000>;
406 power-domains = <&scpsys MT2701_POWER_DOMAIN_IFR_MSC>;
407 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_LOW>;
408 clocks = <&pericfg CLK_PERI_NFI>,
409 <&pericfg CLK_PERI_NFI_PAD>;
410 clock-names = "nfi_clk", "pad_clk";
413 #address-cells = <1>;
418 compatible = "mediatek,mt7623-ecc",
419 "mediatek,mt2701-ecc";
420 reg = <0 0x1100e000 0 0x1000>;
421 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_LOW>;
422 clocks = <&pericfg CLK_PERI_NFI_ECC>;
423 clock-names = "nfiecc_clk";
428 compatible = "mediatek,mt7623-mmc",
429 "mediatek,mt8135-mmc";
430 reg = <0 0x11230000 0 0x1000>;
431 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_LOW>;
432 clocks = <&pericfg CLK_PERI_MSDC30_0>,
433 <&topckgen CLK_TOP_MSDC30_0_SEL>;
434 clock-names = "source", "hclk";
439 compatible = "mediatek,mt7623-mmc",
440 "mediatek,mt8135-mmc";
441 reg = <0 0x11240000 0 0x1000>;
442 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_LOW>;
443 clocks = <&pericfg CLK_PERI_MSDC30_1>,
444 <&topckgen CLK_TOP_MSDC30_1_SEL>;
445 clock-names = "source", "hclk";
450 compatible = "mediatek,mt7623-xhci",
451 "mediatek,mt8173-xhci";
452 reg = <0 0x1a1c0000 0 0x1000>,
453 <0 0x1a1c4700 0 0x0100>;
454 interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_LOW>;
455 clocks = <&hifsys CLK_HIFSYS_USB0PHY>,
456 <&topckgen CLK_TOP_ETHIF_SEL>;
457 clock-names = "sys_ck", "ethif";
458 power-domains = <&scpsys MT2701_POWER_DOMAIN_HIF>;
459 phys = <&phy_port0 PHY_TYPE_USB3>;
463 u3phy1: usb-phy@1a1c4000 {
464 compatible = "mediatek,mt2701-u3phy",
465 "mediatek,mt8173-u3phy";
466 reg = <0 0x1a1c4000 0 0x0700>;
468 clock-names = "u3phya_ref";
470 #address-cells = <2>;
475 phy_port0: phy_port0: port@1a1c4800 {
476 reg = <0 0x1a1c4800 0 0x800>;
483 compatible = "mediatek,mt2701-xhci",
484 "mediatek,mt8173-xhci";
485 reg = <0 0x1a240000 0 0x1000>,
486 <0 0x1a244700 0 0x0100>;
487 interrupts = <GIC_SPI 197 IRQ_TYPE_LEVEL_LOW>;
488 clocks = <&hifsys CLK_HIFSYS_USB1PHY>,
489 <&topckgen CLK_TOP_ETHIF_SEL>;
490 clock-names = "sys_ck", "ethif";
491 power-domains = <&scpsys MT2701_POWER_DOMAIN_HIF>;
496 u3phy2: usb-phy@1a244000 {
497 compatible = "mediatek,mt2701-u3phy",
498 "mediatek,mt8173-u3phy";
499 reg = <0 0x1a244000 0 0x0700>,
500 <0 0x1a244800 0 0x0800>;
502 clock-names = "u3phya_ref";
507 hifsys: clock-controller@1a000000 {
508 compatible = "mediatek,mt7623-hifsys",
509 "mediatek,mt2701-hifsys",
511 reg = <0 0x1a000000 0 0x1000>;
516 pcie: pcie@1a140000 {
517 compatible = "mediatek,mt7623-pcie";
519 reg = <0 0x1a140000 0 0x8000>, /* PCI-Express registers */
520 <0 0x1a149000 0 0x1000>, /* PCI-Express PHY0 */
521 <0 0x1a14a000 0 0x1000>, /* PCI-Express PHY1 */
522 <0 0x1a244000 0 0x1000>; /* PCI-Express PHY2 */
523 reg-names = "pcie", "pcie phy0", "pcie phy1", "pcie phy2";
524 interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_LOW>,
525 <GIC_SPI 194 IRQ_TYPE_LEVEL_LOW>,
526 <GIC_SPI 195 IRQ_TYPE_LEVEL_LOW>;
527 interrupt-names = "pcie0", "pcie1", "pcie2";
528 clocks = <&topckgen CLK_TOP_ETHIF_SEL>;
529 clock-names = "pcie";
530 power-domains = <&scpsys MT2701_POWER_DOMAIN_HIF>;
531 resets = <&hifsys MT2701_HIFSYS_PCIE0_RST>,
532 <&hifsys MT2701_HIFSYS_PCIE1_RST>,
533 <&hifsys MT2701_HIFSYS_PCIE2_RST>;
534 reset-names = "pcie0", "pcie1", "pcie2";
536 mediatek,hifsys = <&hifsys>;
538 bus-range = <0x00 0xff>;
539 #address-cells = <3>;
542 ranges = <0x81000000 0 0x1a160000 0 0x1a160000 0 0x00010000 /* io space */
543 0x83000000 0 0x60000000 0 0x60000000 0 0x10000000>; /* pci memory */
549 reg = <0x0800 0 0 0 0>;
551 #address-cells = <3>;
558 reg = <0x1000 0 0 0 0>;
560 #address-cells = <3>;
567 reg = <0x1800 0 0 0 0>;
569 #address-cells = <3>;
575 ethsys: syscon@1b000000 {
576 compatible = "mediatek,mt7623-ethsys",
577 "mediatek,mt2701-ethsys",
579 reg = <0 0x1b000000 0 0x1000>;
584 eth: ethernet@1b100000 {
585 compatible = "mediatek,mt7623-eth",
586 "mediatek,mt2701-eth",
588 reg = <0 0x1b100000 0 0x20000>;
590 clocks = <&topckgen CLK_TOP_ETHIF_SEL>,
591 <ðsys CLK_ETHSYS_ESW>,
592 <ðsys CLK_ETHSYS_GP2>,
593 <ðsys CLK_ETHSYS_GP1>,
594 <&apmixedsys CLK_APMIXED_TRGPLL>;
595 clock-names = "ethif", "esw", "gp2", "gp1", "trgpll";
596 interrupts = <GIC_SPI 200 IRQ_TYPE_LEVEL_LOW
597 GIC_SPI 199 IRQ_TYPE_LEVEL_LOW
598 GIC_SPI 198 IRQ_TYPE_LEVEL_LOW>;
599 power-domains = <&scpsys MT2701_POWER_DOMAIN_ETH>;
601 resets = <ðsys 6>;
604 mediatek,ethsys = <ðsys>;
605 mediatek,pctl = <&syscfg_pctl_a>;
607 #address-cells = <1>;
613 compatible = "mediatek,eth-mac";
628 compatible = "mediatek,eth-mac";
635 #address-cells = <1>;