1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
3 * Copyright (C) 2023 MediaTek Inc.
4 * Author: Sam.Shih <sam.shih@mediatek.com>
7 #include <dt-bindings/clock/mediatek,mt7988-clk.h>
8 #include <dt-bindings/interrupt-controller/arm-gic.h>
9 #include <dt-bindings/interrupt-controller/irq.h>
10 #include <dt-bindings/leds/common.h>
11 #include <dt-bindings/phy/phy.h>
12 #include <dt-bindings/pinctrl/mt65xx.h>
13 #include <dt-bindings/reset/ti-syscon.h>
14 #include <dt-bindings/thermal/thermal.h>
17 compatible = "mediatek,mt7988";
18 interrupt-parent = <&gic>;
23 compatible = "mediatek,mt7988-cci",
24 "mediatek,mt8183-cci";
25 clocks = <&mcusys CLK_MCU_BUS_DIV_SEL>,
26 <&topckgen CLK_TOP_XTAL>;
27 clock-names = "cci", "intermediate";
28 operating-points-v2 = <&cci_opp>;
36 compatible = "arm,cortex-a73";
37 enable-method = "psci";
39 clocks = <&mcusys CLK_MCU_ARM_DIV_SEL>,
40 <&topckgen CLK_TOP_XTAL>;
41 clock-names = "cpu", "intermediate";
42 operating-points-v2 = <&cluster0_opp>;
43 mediatek,cci = <&cci>;
48 compatible = "arm,cortex-a73";
49 enable-method = "psci";
51 clocks = <&mcusys CLK_MCU_ARM_DIV_SEL>,
52 <&topckgen CLK_TOP_XTAL>;
53 clock-names = "cpu", "intermediate";
54 operating-points-v2 = <&cluster0_opp>;
55 mediatek,cci = <&cci>;
60 compatible = "arm,cortex-a73";
61 enable-method = "psci";
63 clocks = <&mcusys CLK_MCU_ARM_DIV_SEL>,
64 <&topckgen CLK_TOP_XTAL>;
65 clock-names = "cpu", "intermediate";
66 operating-points-v2 = <&cluster0_opp>;
67 mediatek,cci = <&cci>;
72 compatible = "arm,cortex-a73";
73 enable-method = "psci";
75 clocks = <&mcusys CLK_MCU_ARM_DIV_SEL>,
76 <&topckgen CLK_TOP_XTAL>;
77 clock-names = "cpu", "intermediate";
78 operating-points-v2 = <&cluster0_opp>;
79 mediatek,cci = <&cci>;
82 cluster0_opp: opp_table0 {
83 compatible = "operating-points-v2";
86 opp-hz = /bits/ 64 <800000000>;
87 opp-microvolt = <850000>;
90 opp-hz = /bits/ 64 <1100000000>;
91 opp-microvolt = <850000>;
94 opp-hz = /bits/ 64 <1500000000>;
95 opp-microvolt = <850000>;
98 opp-hz = /bits/ 64 <1800000000>;
99 opp-microvolt = <900000>;
104 cci_opp: opp_table_cci {
105 compatible = "operating-points-v2";
108 opp-hz = /bits/ 64 <480000000>;
109 opp-microvolt = <850000>;
112 opp-hz = /bits/ 64 <660000000>;
113 opp-microvolt = <850000>;
116 opp-hz = /bits/ 64 <900000000>;
117 opp-microvolt = <850000>;
120 opp-hz = /bits/ 64 <1080000000>;
121 opp-microvolt = <900000>;
125 clk40m: oscillator@0 {
126 compatible = "fixed-clock";
127 clock-frequency = <40000000>;
129 clock-output-names = "clkxtal";
133 compatible = "arm,cortex-a73-pmu";
134 interrupt-parent = <&gic>;
135 interrupt = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
139 compatible = "arm,psci-0.2";
143 reg_1p8v: regulator-1p8v {
144 compatible = "regulator-fixed";
145 regulator-name = "fixed-1.8V";
146 regulator-min-microvolt = <1800000>;
147 regulator-max-microvolt = <1800000>;
152 reg_3p3v: regulator-3p3v {
153 compatible = "regulator-fixed";
154 regulator-name = "fixed-3.3V";
155 regulator-min-microvolt = <3300000>;
156 regulator-max-microvolt = <3300000>;
162 #address-cells = <2>;
166 /* 320 KiB reserved for ARM Trusted Firmware (BL31 and BL32) */
167 secmon_reserved: secmon@43000000 {
168 reg = <0 0x43000000 0 0x50000>;
174 #address-cells = <2>;
176 compatible = "simple-bus";
179 gic: interrupt-controller@c000000 {
180 compatible = "arm,gic-v3";
181 #interrupt-cells = <3>;
182 interrupt-parent = <&gic>;
183 interrupt-controller;
184 reg = <0 0x0c000000 0 0x40000>, /* GICD */
185 <0 0x0c080000 0 0x200000>, /* GICR */
186 <0 0x0c400000 0 0x2000>, /* GICC */
187 <0 0x0c410000 0 0x1000>, /* GICH */
188 <0 0x0c420000 0 0x2000>; /* GICV */
190 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
193 phyfw: phy-firmware@f000000 {
194 compatible = "mediatek,2p5gphy-fw";
195 reg = <0 0x0f000000 0 0x8000>,
196 <0 0x0f100000 0 0x20000>,
197 <0 0x0f0f0000 0 0x200>;
200 infracfg: infracfg@10001000 {
201 compatible = "mediatek,mt7988-infracfg", "syscon";
202 reg = <0 0x10001000 0 0x1000>;
206 topckgen: topckgen@1001b000 {
207 compatible = "mediatek,mt7988-topckgen", "syscon";
208 reg = <0 0x1001b000 0 0x1000>;
212 watchdog: watchdog@1001c000 {
213 compatible = "mediatek,mt7988-wdt",
214 "mediatek,mt6589-wdt",
216 reg = <0 0x1001c000 0 0x1000>;
217 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
221 apmixedsys: apmixedsys@1001e000 {
222 compatible = "mediatek,mt7988-apmixedsys";
223 reg = <0 0x1001e000 0 0x1000>;
227 pio: pinctrl@1001f000 {
228 compatible = "mediatek,mt7988-pinctrl", "syscon";
229 reg = <0 0x1001f000 0 0x1000>,
230 <0 0x11c10000 0 0x1000>,
231 <0 0x11d00000 0 0x1000>,
232 <0 0x11d20000 0 0x1000>,
233 <0 0x11e00000 0 0x1000>,
234 <0 0x11f00000 0 0x1000>,
235 <0 0x1000b000 0 0x1000>;
236 reg-names = "gpio_base", "iocfg_tr_base",
237 "iocfg_br_base", "iocfg_rb_base",
238 "iocfg_lb_base", "iocfg_tl_base", "eint";
241 gpio-ranges = <&pio 0 0 84>;
242 interrupt-controller;
243 interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
244 interrupt-parent = <&gic>;
245 #interrupt-cells = <2>;
247 mdio0_pins: mdio0-pins {
250 groups = "mdc_mdio0";
254 groups = "mdc_mdio0";
255 drive-strength = <MTK_DRIVE_8mA>;
259 i2c0_pins: i2c0-pins-g0 {
266 i2c1_pins: i2c1-pins-g0 {
273 i2c1_sfp_pins: i2c1-sfp-pins-g0 {
280 i2c2_pins: i2c2-pins {
287 i2c2_0_pins: i2c2-pins-g0 {
294 i2c2_1_pins: i2c2-pins-g1 {
301 gbe0_led0_pins: gbe0-led0-pins {
304 groups = "gbe0_led0";
308 gbe1_led0_pins: gbe1-led0-pins {
311 groups = "gbe1_led0";
315 gbe2_led0_pins: gbe2-led0-pins {
318 groups = "gbe2_led0";
322 gbe3_led0_pins: gbe3-led0-pins {
325 groups = "gbe3_led0";
329 gbe0_led1_pins: gbe0-led1-pins {
332 groups = "gbe0_led1";
336 gbe1_led1_pins: gbe1-led1-pins {
339 groups = "gbe1_led1";
343 gbe2_led1_pins: gbe2-led1-pins {
346 groups = "gbe2_led1";
350 gbe3_led1_pins: gbe3-led1-pins {
353 groups = "gbe3_led1";
357 i2p5gbe_led0_pins: 2p5gbe-led0-pins {
360 groups = "2p5gbe_led0";
364 i2p5gbe_led1_pins: 2p5gbe-led1-pins {
367 groups = "2p5gbe_led1";
371 mmc0_pins_emmc_45: mmc0-pins-emmc-45 {
378 mmc0_pins_emmc_51: mmc0-pins-emmc-51 {
385 mmc0_pins_sdcard: mmc0-pins-sdcard {
392 uart0_pins: uart0-pins {
399 snfi_pins: snfi-pins {
406 spi0_pins: spi0-pins {
413 spi0_flash_pins: spi0-flash-pins {
416 groups = "spi0", "spi0_wp_hold";
420 spi1_pins: spi1-pins {
427 spi2_pins: spi2-pins {
434 spi2_flash_pins: spi2-flash-pins {
437 groups = "spi2", "spi2_wp_hold";
441 pcie0_pins: pcie0-pins {
444 groups = "pcie_2l_0_pereset", "pcie_clk_req_n0_0",
449 pcie1_pins: pcie1-pins {
452 groups = "pcie_2l_1_pereset", "pcie_clk_req_n1",
457 pcie2_pins: pcie2-pins {
460 groups = "pcie_1l_0_pereset", "pcie_clk_req_n2_0",
465 pcie3_pins: pcie3-pins {
468 groups = "pcie_1l_1_pereset", "pcie_clk_req_n3",
475 compatible = "mediatek,mt7988-pwm";
476 reg = <0 0x10048000 0 0x1000>;
478 clocks = <&infracfg CLK_INFRA_66M_PWM_BCK>,
479 <&infracfg CLK_INFRA_66M_PWM_HCK>,
480 <&infracfg CLK_INFRA_66M_PWM_CK1>,
481 <&infracfg CLK_INFRA_66M_PWM_CK2>,
482 <&infracfg CLK_INFRA_66M_PWM_CK3>,
483 <&infracfg CLK_INFRA_66M_PWM_CK4>,
484 <&infracfg CLK_INFRA_66M_PWM_CK5>,
485 <&infracfg CLK_INFRA_66M_PWM_CK6>,
486 <&infracfg CLK_INFRA_66M_PWM_CK7>,
487 <&infracfg CLK_INFRA_66M_PWM_CK8>;
488 clock-names = "top", "main", "pwm1", "pwm2", "pwm3",
489 "pwm4","pwm5","pwm6","pwm7","pwm8";
493 sgmiisys0: syscon@10060000 {
494 compatible = "mediatek,mt7988-sgmiisys",
495 "mediatek,mt7988-sgmiisys_0",
497 reg = <0 0x10060000 0 0x1000>;
501 sgmiisys1: syscon@10070000 {
502 compatible = "mediatek,mt7988-sgmiisys",
503 "mediatek,mt7988-sgmiisys_1",
505 reg = <0 0x10070000 0 0x1000>;
509 usxgmiisys0: usxgmiisys@10080000 {
510 compatible = "mediatek,mt7988-usxgmiisys",
511 "mediatek,mt7988-usxgmiisys_0",
513 reg = <0 0x10080000 0 0x1000>;
517 usxgmiisys1: usxgmiisys@10081000 {
518 compatible = "mediatek,mt7988-usxgmiisys",
519 "mediatek,mt7988-usxgmiisys_1",
521 reg = <0 0x10081000 0 0x1000>;
525 mcusys: mcusys@100e0000 {
526 compatible = "mediatek,mt7988-mcusys", "syscon";
527 reg = <0 0x100e0000 0 0x1000>;
531 uart0: serial@11000000 {
532 compatible = "mediatek,mt7986-uart",
533 "mediatek,mt6577-uart";
534 reg = <0 0x11000000 0 0x100>;
535 interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
537 * 8250-mtk driver don't control "baud" clock since commit
538 * e32a83c70cf9 (kernel v5.7), but both "baud" and "bus" clocks
539 * still need to be passed to the driver to prevent probe fail
541 clocks = <&topckgen CLK_TOP_UART_SEL>,
542 <&infracfg CLK_INFRA_52M_UART0_CK>;
543 clock-names = "baud", "bus";
544 assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
545 <&infracfg CLK_INFRA_MUX_UART0_SEL>;
546 assigned-clock-parents = <&topckgen CLK_TOP_XTAL>,
547 <&topckgen CLK_TOP_UART_SEL>;
548 pinctrl-names = "default";
549 pinctrl-0 = <&uart0_pins>;
553 snand: spi@11001000 {
554 compatible = "mediatek,mt7986-snand";
555 reg = <0 0x11001000 0 0x1000>;
556 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
557 clocks = <&infracfg CLK_INFRA_SPINFI>,
558 <&infracfg CLK_INFRA_NFI>;
559 clock-names = "pad_clk", "nfi_clk";
560 assigned-clocks = <&topckgen CLK_TOP_SPINFI_SEL>,
561 <&topckgen CLK_TOP_NFI1X_SEL>;
562 assigned-clock-parents = <&topckgen CLK_TOP_MPLL_D8>,
563 <&topckgen CLK_TOP_MPLL_D8>;
564 nand-ecc-engine = <&bch>;
566 #address-cells = <1>;
568 pinctrl-names = "default";
569 pinctrl-0 = <&snfi_pins>;
574 compatible = "mediatek,mt7686-ecc";
575 reg = <0 0x11002000 0 0x1000>;
576 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
577 clocks = <&topckgen CLK_TOP_NFI1X_SEL>;
578 clock-names = "nfiecc_clk";
583 compatible = "mediatek,mt7988-i2c",
584 "mediatek,mt7981-i2c";
585 reg = <0 0x11003000 0 0x1000>,
586 <0 0x10217080 0 0x80>;
587 interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
589 clocks = <&infracfg CLK_INFRA_I2C_BCK>,
590 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
591 clock-names = "main", "dma";
592 #address-cells = <1>;
598 compatible = "mediatek,mt7988-i2c",
599 "mediatek,mt7981-i2c";
600 reg = <0 0x11004000 0 0x1000>,
601 <0 0x10217100 0 0x80>;
602 interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
604 clocks = <&infracfg CLK_INFRA_I2C_BCK>,
605 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
606 clock-names = "main", "dma";
607 #address-cells = <1>;
613 compatible = "mediatek,mt7988-i2c",
614 "mediatek,mt7981-i2c";
615 reg = <0 0x11005000 0 0x1000>,
616 <0 0x10217180 0 0x80>;
617 interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
619 clocks = <&infracfg CLK_INFRA_I2C_BCK>,
620 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
621 clock-names = "main", "dma";
622 #address-cells = <1>;
628 compatible = "mediatek,ipm-spi-quad", "mediatek,spi-ipm";
629 reg = <0 0x11007000 0 0x100>;
630 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
631 clocks = <&topckgen CLK_TOP_MPLL_D2>,
632 <&topckgen CLK_TOP_SPI_SEL>,
633 <&infracfg CLK_INFRA_104M_SPI0>,
634 <&infracfg CLK_INFRA_66M_SPI0_HCK>;
635 clock-names = "parent-clk", "sel-clk", "spi-clk",
637 #address-cells = <1>;
643 compatible = "mediatek,ipm-spi-single", "mediatek,spi-ipm";
644 reg = <0 0x11008000 0 0x100>;
645 interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
646 clocks = <&topckgen CLK_TOP_MPLL_D2>,
647 <&topckgen CLK_TOP_SPI_SEL>,
648 <&infracfg CLK_INFRA_104M_SPI1>,
649 <&infracfg CLK_INFRA_66M_SPI1_HCK>;
650 clock-names = "parent-clk", "sel-clk", "spi-clk",
652 #address-cells = <1>;
654 pinctrl-names = "default";
655 pinctrl-0 = <&spi1_pins>;
660 compatible = "mediatek,ipm-spi-quad", "mediatek,spi-ipm";
661 reg = <0 0x11009000 0 0x100>;
662 interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
663 clocks = <&topckgen CLK_TOP_MPLL_D2>,
664 <&topckgen CLK_TOP_SPI_SEL>,
665 <&infracfg CLK_INFRA_104M_SPI2_BCK>,
666 <&infracfg CLK_INFRA_66M_SPI2_HCK>;
667 clock-names = "parent-clk", "sel-clk", "spi-clk",
669 #address-cells = <1>;
675 compatible = "pwm-fan";
676 /* cooling level (0, 1, 2) : (0% duty, 50% duty, 100% duty) */
677 cooling-levels = <0 128 255>;
678 #cooling-cells = <2>;
679 #thermal-sensor-cells = <1>;
683 lvts: lvts@1100a000 {
684 compatible = "mediatek,mt7988-lvts";
685 #thermal-sensor-cells = <1>;
686 reg = <0 0x1100a000 0 0x1000>;
687 clocks = <&infracfg CLK_INFRA_26M_THERM_SYSTEM>;
688 clock-names = "lvts_clk";
689 nvmem-cells = <&lvts_calibration>;
690 nvmem-cell-names = "e_data1";
693 ssusb0: usb@11190000 {
694 compatible = "mediatek,mt7988-xhci",
696 reg = <0 0x11190000 0 0x2e00>,
697 <0 0x11193e00 0 0x0100>;
698 reg-names = "mac", "ippc";
699 interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
700 phys = <&xphyu2port0 PHY_TYPE_USB2>,
701 <&xphyu3port0 PHY_TYPE_USB3>;
702 clocks = <&infracfg CLK_INFRA_USB_SYS>,
703 <&infracfg CLK_INFRA_USB_XHCI>,
704 <&infracfg CLK_INFRA_USB_REF>,
705 <&infracfg CLK_INFRA_66M_USB_HCK>,
706 <&infracfg CLK_INFRA_133M_USB_HCK>;
707 clock-names = "sys_ck",
712 #address-cells = <2>;
714 mediatek,p0_speed_fixup;
718 ssusb1: usb@11200000 {
719 compatible = "mediatek,mt7988-xhci",
721 reg = <0 0x11200000 0 0x2e00>,
722 <0 0x11203e00 0 0x0100>;
723 reg-names = "mac", "ippc";
724 interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
725 phys = <&tphyu2port0 PHY_TYPE_USB2>,
726 <&tphyu3port0 PHY_TYPE_USB3>;
727 clocks = <&infracfg CLK_INFRA_USB_SYS_CK_P1>,
728 <&infracfg CLK_INFRA_USB_XHCI_CK_P1>,
729 <&infracfg CLK_INFRA_USB_CK_P1>,
730 <&infracfg CLK_INFRA_66M_USB_HCK_CK_P1>,
731 <&infracfg CLK_INFRA_133M_USB_HCK_CK_P1>;
732 clock-names = "sys_ck",
737 #address-cells = <2>;
742 afe: audio-controller@11210000 {
743 compatible = "mediatek,mt79xx-audio";
744 reg = <0 0x11210000 0 0x9000>;
745 interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
746 clocks = <&infracfg CLK_INFRA_66M_AUD_SLV_BCK>,
747 <&infracfg CLK_INFRA_AUD_26M>,
748 <&infracfg CLK_INFRA_AUD_L>,
749 <&infracfg CLK_INFRA_AUD_AUD>,
750 <&infracfg CLK_INFRA_AUD_EG2>,
751 <&topckgen CLK_TOP_AUD_SEL>,
752 <&topckgen CLK_TOP_AUD_I2S_M>;
753 clock-names = "aud_bus_ck",
760 assigned-clocks = <&topckgen CLK_TOP_AUD_SEL>,
761 <&topckgen CLK_TOP_A1SYS_SEL>,
762 <&topckgen CLK_TOP_AUD_L_SEL>,
763 <&topckgen CLK_TOP_A_TUNER_SEL>;
764 assigned-clock-parents = <&apmixedsys CLK_APMIXED_APLL2>,
765 <&topckgen CLK_TOP_APLL2_D4>,
766 <&apmixedsys CLK_APMIXED_APLL2>,
767 <&topckgen CLK_TOP_APLL2_D4>;
772 compatible = "mediatek,mt7986-mmc",
773 "mediatek,mt7981-mmc";
774 reg = <0 0x11230000 0 0x1000>,
775 <0 0x11D60000 0 0x1000>;
776 interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
777 clocks = <&infracfg CLK_INFRA_MSDC400>,
778 <&infracfg CLK_INFRA_MSDC2_HCK>,
779 <&infracfg CLK_INFRA_66M_MSDC_0_HCK>,
780 <&infracfg CLK_INFRA_133M_MSDC_0_HCK>;
781 assigned-clocks = <&topckgen CLK_TOP_EMMC_250M_SEL>,
782 <&topckgen CLK_TOP_EMMC_400M_SEL>;
783 assigned-clock-parents = <&topckgen CLK_TOP_NET1PLL_D5_D2>,
784 <&apmixedsys CLK_APMIXED_MSDCPLL>;
785 clock-names = "source",
789 #address-cells = <1>;
794 pcie2: pcie@11280000 {
795 compatible = "mediatek,mt7988-pcie",
796 "mediatek,mt7986-pcie",
797 "mediatek,mt8192-pcie";
799 #address-cells = <3>;
801 reg = <0 0x11280000 0 0x2000>;
802 reg-names = "pcie-mac";
803 linux,pci-domain = <3>;
804 interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
805 bus-range = <0x00 0xff>;
806 ranges = <0x81000000 0x00 0x20000000 0x00
807 0x20000000 0x00 0x00200000>,
808 <0x82000000 0x00 0x20200000 0x00
809 0x20200000 0x00 0x07e00000>;
810 clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P2>,
811 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P2>,
812 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P2>,
813 <&infracfg CLK_INFRA_133M_PCIE_CK_P2>;
814 clock-names = "pl_250m", "tl_26m", "peri_26m",
816 pinctrl-names = "default";
817 pinctrl-0 = <&pcie2_pins>;
820 phys = <&xphyu3port0 PHY_TYPE_PCIE>;
821 phy-names = "pcie-phy";
823 #interrupt-cells = <1>;
824 interrupt-map-mask = <0 0 0 0x7>;
825 interrupt-map = <0 0 0 1 &pcie_intc2 0>,
826 <0 0 0 2 &pcie_intc2 1>,
827 <0 0 0 3 &pcie_intc2 2>,
828 <0 0 0 4 &pcie_intc2 3>;
829 pcie_intc2: interrupt-controller {
830 #address-cells = <0>;
831 #interrupt-cells = <1>;
832 interrupt-controller;
836 pcie3: pcie@11290000 {
837 compatible = "mediatek,mt7988-pcie",
838 "mediatek,mt7986-pcie",
839 "mediatek,mt8192-pcie";
841 #address-cells = <3>;
843 reg = <0 0x11290000 0 0x2000>;
844 reg-names = "pcie-mac";
845 linux,pci-domain = <2>;
846 interrupts = <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>;
847 bus-range = <0x00 0xff>;
848 ranges = <0x81000000 0x00 0x28000000 0x00
849 0x28000000 0x00 0x00200000>,
850 <0x82000000 0x00 0x28200000 0x00
851 0x28200000 0x00 0x07e00000>;
852 clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P3>,
853 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P3>,
854 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P3>,
855 <&infracfg CLK_INFRA_133M_PCIE_CK_P3>;
856 clock-names = "pl_250m", "tl_26m", "peri_26m",
858 pinctrl-names = "default";
859 pinctrl-0 = <&pcie3_pins>;
862 #interrupt-cells = <1>;
863 interrupt-map-mask = <0 0 0 0x7>;
864 interrupt-map = <0 0 0 1 &pcie_intc3 0>,
865 <0 0 0 2 &pcie_intc3 1>,
866 <0 0 0 3 &pcie_intc3 2>,
867 <0 0 0 4 &pcie_intc3 3>;
868 pcie_intc3: interrupt-controller {
869 #address-cells = <0>;
870 #interrupt-cells = <1>;
871 interrupt-controller;
875 pcie0: pcie@11300000 {
876 compatible = "mediatek,mt7988-pcie",
877 "mediatek,mt7986-pcie",
878 "mediatek,mt8192-pcie";
880 #address-cells = <3>;
882 reg = <0 0x11300000 0 0x2000>;
883 reg-names = "pcie-mac";
884 linux,pci-domain = <0>;
885 interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
886 bus-range = <0x00 0xff>;
887 ranges = <0x81000000 0x00 0x30000000 0x00
888 0x30000000 0x00 0x00200000>,
889 <0x82000000 0x00 0x30200000 0x00
890 0x30200000 0x00 0x07e00000>;
891 clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P0>,
892 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P0>,
893 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P0>,
894 <&infracfg CLK_INFRA_133M_PCIE_CK_P0>;
895 clock-names = "pl_250m", "tl_26m", "peri_26m",
897 pinctrl-names = "default";
898 pinctrl-0 = <&pcie0_pins>;
901 #interrupt-cells = <1>;
902 interrupt-map-mask = <0 0 0 0x7>;
903 interrupt-map = <0 0 0 1 &pcie_intc0 0>,
904 <0 0 0 2 &pcie_intc0 1>,
905 <0 0 0 3 &pcie_intc0 2>,
906 <0 0 0 4 &pcie_intc0 3>;
907 pcie_intc0: interrupt-controller {
908 #address-cells = <0>;
909 #interrupt-cells = <1>;
910 interrupt-controller;
914 pcie1: pcie@11310000 {
915 compatible = "mediatek,mt7988-pcie",
916 "mediatek,mt7986-pcie",
917 "mediatek,mt8192-pcie";
919 #address-cells = <3>;
921 reg = <0 0x11310000 0 0x2000>;
922 reg-names = "pcie-mac";
923 linux,pci-domain = <1>;
924 interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
925 bus-range = <0x00 0xff>;
926 ranges = <0x81000000 0x00 0x38000000 0x00
927 0x38000000 0x00 0x00200000>,
928 <0x82000000 0x00 0x38200000 0x00
929 0x38200000 0x00 0x07e00000>;
930 clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P1>,
931 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P1>,
932 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P1>,
933 <&infracfg CLK_INFRA_133M_PCIE_CK_P1>;
934 clock-names = "pl_250m", "tl_26m", "peri_26m",
936 pinctrl-names = "default";
937 pinctrl-0 = <&pcie1_pins>;
940 #interrupt-cells = <1>;
941 interrupt-map-mask = <0 0 0 0x7>;
942 interrupt-map = <0 0 0 1 &pcie_intc1 0>,
943 <0 0 0 2 &pcie_intc1 1>,
944 <0 0 0 3 &pcie_intc1 2>,
945 <0 0 0 4 &pcie_intc1 3>;
946 pcie_intc1: interrupt-controller {
947 #address-cells = <0>;
948 #interrupt-cells = <1>;
949 interrupt-controller;
953 tphy: tphy@11c50000 {
954 compatible = "mediatek,mt7988",
955 "mediatek,generic-tphy-v2";
956 #address-cells = <2>;
960 tphyu2port0: usb-phy@11c50000 {
961 reg = <0 0x11c50000 0 0x700>;
962 clocks = <&infracfg CLK_INFRA_USB_UTMI_CK_P1>;
966 tphyu3port0: usb-phy@11c50700 {
967 reg = <0 0x11c50700 0 0x900>;
968 clocks = <&infracfg CLK_INFRA_USB_PIPE_CK_P1>;
971 mediatek,usb3-pll-ssc-delta;
972 mediatek,usb3-pll-ssc-delta1;
976 topmisc: topmisc@11d10000 {
977 compatible = "mediatek,mt7988-topmisc", "syscon",
978 "mediatek,mt7988-power-controller";
979 reg = <0 0x11d10000 0 0x10000>;
981 #power-domain-cells = <1>;
982 #address-cells = <1>;
986 xphy: xphy@11e10000 {
987 compatible = "mediatek,mt7988",
989 #address-cells = <2>;
994 xphyu2port0: usb-phy@11e10000 {
995 reg = <0 0x11e10000 0 0x400>;
996 clocks = <&infracfg CLK_INFRA_USB_UTMI>;
1001 xphyu3port0: usb-phy@11e13000 {
1002 reg = <0 0x11e13400 0 0x500>;
1003 clocks = <&infracfg CLK_INFRA_USB_PIPE>;
1004 clock-names = "ref";
1006 mediatek,syscon-type = <&topmisc 0x218 0>;
1010 xfi_pextp0: xfi-pextp@11f20000 {
1011 compatible = "mediatek,mt7988-xfi-pextp",
1012 "mediatek,mt7988-xfi-pextp_0",
1014 reg = <0 0x11f20000 0 0x10000>;
1018 xfi_pextp1: xfi-pextp@11f30000 {
1019 compatible = "mediatek,mt7988-xfi-pextp",
1020 "mediatek,mt7988-xfi-pextp_1",
1022 reg = <0 0x11f30000 0 0x10000>;
1026 xfi_pll: xfi-pll@11f40000 {
1027 compatible = "mediatek,mt7988-xfi-pll", "syscon";
1028 reg = <0 0x11f40000 0 0x1000>;
1032 efuse: efuse@11f50000 {
1033 compatible = "mediatek,efuse";
1034 reg = <0 0x11f50000 0 0x1000>;
1035 #address-cells = <1>;
1038 lvts_calibration: calib@918 {
1041 phy_calibration_p0: calib@940 {
1044 phy_calibration_p1: calib@954 {
1047 phy_calibration_p2: calib@968 {
1050 phy_calibration_p3: calib@97c {
1053 cpufreq_calibration: calib@278 {
1058 ethsys: syscon@15000000 {
1059 #address-cells = <1>;
1061 compatible = "mediatek,mt7988-ethsys", "syscon";
1062 reg = <0 0x15000000 0 0x1000>;
1067 switch: switch@15020000 {
1068 #address-cells = <1>;
1070 compatible = "mediatek,mt7988-switch";
1071 reg = <0 0x15020000 0 0x8000>;
1072 interrupt-controller;
1073 #interrupt-cells = <1>;
1074 interrupt-parent = <&gic>;
1075 interrupts = <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>;
1076 resets = <ðrst 0>;
1079 #address-cells = <1>;
1085 phy-mode = "internal";
1086 phy-handle = <&gsw_phy0>;
1092 phy-mode = "internal";
1093 phy-handle = <&gsw_phy1>;
1099 phy-mode = "internal";
1100 phy-handle = <&gsw_phy2>;
1106 phy-mode = "internal";
1107 phy-handle = <&gsw_phy3>;
1112 ethernet = <&gmac0>;
1113 phy-mode = "internal";
1124 #address-cells = <1>;
1126 mediatek,pio = <&pio>;
1128 gsw_phy0: ethernet-phy@0 {
1129 compatible = "ethernet-phy-ieee802.3-c22";
1131 phy-mode = "internal";
1132 nvmem-cells = <&phy_calibration_p0>;
1133 nvmem-cell-names = "phy-cal-data";
1136 #address-cells = <1>;
1139 gsw_phy0_led0: gsw-phy0-led0@0 {
1141 function = LED_FUNCTION_LAN;
1142 status = "disabled";
1145 gsw_phy0_led1: gsw-phy0-led1@1 {
1147 function = LED_FUNCTION_LAN;
1148 status = "disabled";
1153 gsw_phy1: ethernet-phy@1 {
1154 compatible = "ethernet-phy-ieee802.3-c22";
1156 phy-mode = "internal";
1157 nvmem-cells = <&phy_calibration_p1>;
1158 nvmem-cell-names = "phy-cal-data";
1161 #address-cells = <1>;
1164 gsw_phy1_led0: gsw-phy1-led0@0 {
1166 function = LED_FUNCTION_LAN;
1167 status = "disabled";
1170 gsw_phy1_led1: gsw-phy1-led1@1 {
1172 function = LED_FUNCTION_LAN;
1173 status = "disabled";
1178 gsw_phy2: ethernet-phy@2 {
1179 compatible = "ethernet-phy-ieee802.3-c22";
1181 phy-mode = "internal";
1182 nvmem-cells = <&phy_calibration_p2>;
1183 nvmem-cell-names = "phy-cal-data";
1186 #address-cells = <1>;
1189 gsw_phy2_led0: gsw-phy2-led0@0 {
1191 function = LED_FUNCTION_LAN;
1192 status = "disabled";
1195 gsw_phy2_led1: gsw-phy2-led1@1 {
1197 function = LED_FUNCTION_LAN;
1198 status = "disabled";
1203 gsw_phy3: ethernet-phy@3 {
1204 compatible = "ethernet-phy-ieee802.3-c22";
1206 phy-mode = "internal";
1207 nvmem-cells = <&phy_calibration_p3>;
1208 nvmem-cell-names = "phy-cal-data";
1211 #address-cells = <1>;
1214 gsw_phy3_led0: gsw-phy3-led0@0 {
1216 function = LED_FUNCTION_LAN;
1217 status = "disabled";
1220 gsw_phy3_led1: gsw-phy3-led1@1 {
1222 function = LED_FUNCTION_LAN;
1223 status = "disabled";
1230 ethwarp: syscon@15031000 {
1231 compatible = "mediatek,mt7988-ethwarp", "syscon", "simple-mfd";
1232 reg = <0 0x15031000 0 0x1000>;
1235 ethrst: reset-controller {
1236 compatible = "ti,syscon-reset";
1239 0x8 9 0x8 9 0 0 (ASSERT_SET | DEASSERT_CLEAR | STATUS_NONE)
1244 eth: ethernet@15100000 {
1245 compatible = "mediatek,mt7988-eth";
1246 reg = <0 0x15100000 0 0x80000>,
1247 <0 0x15400000 0 0x380000>;
1248 interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
1249 <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
1250 <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
1251 <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
1252 clocks = <ðsys CLK_ETHDMA_XGP1_EN>,
1253 <ðsys CLK_ETHDMA_XGP2_EN>,
1254 <ðsys CLK_ETHDMA_XGP3_EN>,
1255 <ðsys CLK_ETHDMA_FE_EN>,
1256 <ðsys CLK_ETHDMA_GP2_EN>,
1257 <ðsys CLK_ETHDMA_GP1_EN>,
1258 <ðsys CLK_ETHDMA_GP3_EN>,
1259 <ðsys CLK_ETHDMA_ESW_EN>,
1260 <ðsys CLK_ETHDMA_CRYPT0_EN>,
1261 <&sgmiisys0 CLK_SGM0_TX_EN>,
1262 <&sgmiisys0 CLK_SGM0_RX_EN>,
1263 <&sgmiisys1 CLK_SGM1_TX_EN>,
1264 <&sgmiisys1 CLK_SGM1_RX_EN>,
1265 <ðwarp CLK_ETHWARP_WOCPU2_EN>,
1266 <ðwarp CLK_ETHWARP_WOCPU1_EN>,
1267 <ðwarp CLK_ETHWARP_WOCPU0_EN>,
1268 <&topckgen CLK_TOP_USXGMII_SBUS_0_SEL>,
1269 <&topckgen CLK_TOP_USXGMII_SBUS_1_SEL>,
1270 <&topckgen CLK_TOP_SGM_0_SEL>,
1271 <&topckgen CLK_TOP_SGM_1_SEL>,
1272 <&topckgen CLK_TOP_XFI_PHY_0_XTAL_SEL>,
1273 <&topckgen CLK_TOP_XFI_PHY_1_XTAL_SEL>,
1274 <&topckgen CLK_TOP_ETH_GMII_SEL>,
1275 <&topckgen CLK_TOP_ETH_REFCK_50M_SEL>,
1276 <&topckgen CLK_TOP_ETH_SYS_200M_SEL>,
1277 <&topckgen CLK_TOP_ETH_SYS_SEL>,
1278 <&topckgen CLK_TOP_ETH_XGMII_SEL>,
1279 <&topckgen CLK_TOP_ETH_MII_SEL>,
1280 <&topckgen CLK_TOP_NETSYS_SEL>,
1281 <&topckgen CLK_TOP_NETSYS_500M_SEL>,
1282 <&topckgen CLK_TOP_NETSYS_PAO_2X_SEL>,
1283 <&topckgen CLK_TOP_NETSYS_SYNC_250M_SEL>,
1284 <&topckgen CLK_TOP_NETSYS_PPEFB_250M_SEL>,
1285 <&topckgen CLK_TOP_NETSYS_WARP_SEL>;
1286 clock-names = "xgp1", "xgp2", "xgp3", "fe", "gp2", "gp1",
1287 "gp3", "esw", "crypto", "sgmii_tx250m",
1288 "sgmii_rx250m", "sgmii2_tx250m", "sgmii2_rx250m",
1289 "ethwarp_wocpu2", "ethwarp_wocpu1",
1290 "ethwarp_wocpu0", "top_usxgmii0_sel",
1291 "top_usxgmii1_sel", "top_sgm0_sel",
1292 "top_sgm1_sel", "top_xfi_phy0_xtal_sel",
1293 "top_xfi_phy1_xtal_sel", "top_eth_gmii_sel",
1294 "top_eth_refck_50m_sel", "top_eth_sys_200m_sel",
1295 "top_eth_sys_sel", "top_eth_xgmii_sel",
1296 "top_eth_mii_sel", "top_netsys_sel",
1297 "top_netsys_500m_sel", "top_netsys_pao_2x_sel",
1298 "top_netsys_sync_250m_sel",
1299 "top_netsys_ppefb_250m_sel",
1300 "top_netsys_warp_sel";
1301 assigned-clocks = <&topckgen CLK_TOP_NETSYS_2X_SEL>,
1302 <&topckgen CLK_TOP_NETSYS_GSW_SEL>,
1303 <&topckgen CLK_TOP_USXGMII_SBUS_0_SEL>,
1304 <&topckgen CLK_TOP_USXGMII_SBUS_1_SEL>,
1305 <&topckgen CLK_TOP_SGM_0_SEL>,
1306 <&topckgen CLK_TOP_SGM_1_SEL>;
1307 assigned-clock-parents = <&apmixedsys CLK_APMIXED_NET2PLL>,
1308 <&topckgen CLK_TOP_NET1PLL_D4>,
1309 <&topckgen CLK_TOP_NET1PLL_D8_D4>,
1310 <&topckgen CLK_TOP_NET1PLL_D8_D4>,
1311 <&apmixedsys CLK_APMIXED_SGMPLL>,
1312 <&apmixedsys CLK_APMIXED_SGMPLL>;
1313 mediatek,ethsys = <ðsys>;
1314 mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>;
1315 mediatek,usxgmiisys = <&usxgmiisys0>, <&usxgmiisys1>;
1316 mediatek,xfi-pextp = <&xfi_pextp0>, <&xfi_pextp1>;
1317 mediatek,xfi-pll = <&xfi_pll>;
1318 mediatek,infracfg = <&topmisc>;
1319 mediatek,toprgu = <&watchdog>;
1321 #address-cells = <1>;
1325 compatible = "mediatek,eth-mac";
1327 phy-mode = "internal";
1328 status = "disabled";
1338 compatible = "mediatek,eth-mac";
1340 status = "disabled";
1344 compatible = "mediatek,eth-mac";
1346 status = "disabled";
1349 mdio_bus: mdio-bus {
1350 #address-cells = <1>;
1353 /* internal 2.5G PHY */
1354 int_2p5g_phy: ethernet-phy@15 {
1356 compatible = "ethernet-phy-ieee802.3-c45";
1357 phy-mode = "internal";
1362 crypto: crypto@15600000 {
1363 compatible = "inside-secure,safexcel-eip197b";
1364 reg = <0 0x15600000 0 0x180000>;
1365 interrupts = <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
1366 <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
1367 <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>,
1368 <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
1369 interrupt-names = "ring0", "ring1", "ring2", "ring3";
1375 cpu_thermal: cpu-thermal {
1376 polling-delay-passive = <1000>;
1377 polling-delay = <1000>;
1378 thermal-sensors = <&lvts 0>;
1380 cpu_trip_crit: crit {
1381 temperature = <125000>;
1382 hysteresis = <2000>;
1387 temperature = <120000>;
1388 hysteresis = <2000>;
1392 cpu_trip_active_high: active-high {
1393 temperature = <115000>;
1394 hysteresis = <2000>;
1398 cpu_trip_active_med: active-med {
1399 temperature = <85000>;
1400 hysteresis = <2000>;
1404 cpu_trip_active_low: active-low {
1405 temperature = <40000>;
1406 hysteresis = <2000>;
1413 /* active: set fan to cooling level 2 */
1414 cooling-device = <&fan 3 3>;
1415 trip = <&cpu_trip_active_high>;
1419 /* active: set fan to cooling level 1 */
1420 cooling-device = <&fan 2 2>;
1421 trip = <&cpu_trip_active_med>;
1425 /* passive: set fan to cooling level 0 */
1426 cooling-device = <&fan 1 1>;
1427 trip = <&cpu_trip_active_low>;
1434 compatible = "arm,armv8-timer";
1435 interrupt-parent = <&gic>;
1436 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
1437 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
1438 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
1439 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;