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>;
35 compatible = "arm,cortex-a73";
38 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>;
47 compatible = "arm,cortex-a73";
50 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>;
59 compatible = "arm,cortex-a73";
62 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>;
71 compatible = "arm,cortex-a73";
74 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>;
163 #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 compatible = "simple-bus";
176 #address-cells = <2>;
179 gic: interrupt-controller@c000000 {
180 compatible = "arm,gic-v3";
181 reg = <0 0x0c000000 0 0x40000>, /* GICD */
182 <0 0x0c080000 0 0x200000>, /* GICR */
183 <0 0x0c400000 0 0x2000>, /* GICC */
184 <0 0x0c410000 0 0x1000>, /* GICH */
185 <0 0x0c420000 0 0x2000>; /* GICV */
186 interrupt-parent = <&gic>;
187 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
188 interrupt-controller;
189 #interrupt-cells = <3>;
192 phyfw: phy-firmware@f000000 {
193 compatible = "mediatek,2p5gphy-fw";
194 reg = <0 0x0f000000 0 0x8000>,
195 <0 0x0f100000 0 0x20000>,
196 <0 0x0f0f0000 0 0x200>;
199 infracfg: infracfg@10001000 {
200 compatible = "mediatek,mt7988-infracfg", "syscon";
201 reg = <0 0x10001000 0 0x1000>;
205 topckgen: topckgen@1001b000 {
206 compatible = "mediatek,mt7988-topckgen", "syscon";
207 reg = <0 0x1001b000 0 0x1000>;
211 watchdog: watchdog@1001c000 {
212 compatible = "mediatek,mt7988-wdt",
213 "mediatek,mt6589-wdt",
215 reg = <0 0x1001c000 0 0x1000>;
216 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
220 apmixedsys: apmixedsys@1001e000 {
221 compatible = "mediatek,mt7988-apmixedsys";
222 reg = <0 0x1001e000 0 0x1000>;
226 pio: pinctrl@1001f000 {
227 compatible = "mediatek,mt7988-pinctrl", "syscon";
228 reg = <0 0x1001f000 0 0x1000>,
229 <0 0x11c10000 0 0x1000>,
230 <0 0x11d00000 0 0x1000>,
231 <0 0x11d20000 0 0x1000>,
232 <0 0x11e00000 0 0x1000>,
233 <0 0x11f00000 0 0x1000>,
234 <0 0x1000b000 0 0x1000>;
235 reg-names = "gpio_base", "iocfg_tr_base",
236 "iocfg_br_base", "iocfg_rb_base",
237 "iocfg_lb_base", "iocfg_tl_base", "eint";
240 gpio-ranges = <&pio 0 0 84>;
241 interrupt-controller;
242 interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
243 interrupt-parent = <&gic>;
244 #interrupt-cells = <2>;
246 mdio0_pins: mdio0-pins {
249 groups = "mdc_mdio0";
253 groups = "mdc_mdio0";
254 drive-strength = <MTK_DRIVE_8mA>;
258 i2c0_pins: i2c0-pins-g0 {
265 i2c1_pins: i2c1-pins-g0 {
272 i2c1_sfp_pins: i2c1-sfp-pins-g0 {
279 i2c2_pins: i2c2-pins {
286 i2c2_0_pins: i2c2-pins-g0 {
293 i2c2_1_pins: i2c2-pins-g1 {
300 gbe0_led0_pins: gbe0-led0-pins {
303 groups = "gbe0_led0";
307 gbe1_led0_pins: gbe1-led0-pins {
310 groups = "gbe1_led0";
314 gbe2_led0_pins: gbe2-led0-pins {
317 groups = "gbe2_led0";
321 gbe3_led0_pins: gbe3-led0-pins {
324 groups = "gbe3_led0";
328 gbe0_led1_pins: gbe0-led1-pins {
331 groups = "gbe0_led1";
335 gbe1_led1_pins: gbe1-led1-pins {
338 groups = "gbe1_led1";
342 gbe2_led1_pins: gbe2-led1-pins {
345 groups = "gbe2_led1";
349 gbe3_led1_pins: gbe3-led1-pins {
352 groups = "gbe3_led1";
356 i2p5gbe_led0_pins: 2p5gbe-led0-pins {
359 groups = "2p5gbe_led0";
363 i2p5gbe_led1_pins: 2p5gbe-led1-pins {
366 groups = "2p5gbe_led1";
370 mmc0_pins_emmc_45: mmc0-pins-emmc-45 {
377 mmc0_pins_emmc_51: mmc0-pins-emmc-51 {
384 mmc0_pins_sdcard: mmc0-pins-sdcard {
391 uart0_pins: uart0-pins {
398 snfi_pins: snfi-pins {
405 spi0_pins: spi0-pins {
412 spi0_flash_pins: spi0-flash-pins {
415 groups = "spi0", "spi0_wp_hold";
419 spi1_pins: spi1-pins {
426 spi2_pins: spi2-pins {
433 spi2_flash_pins: spi2-flash-pins {
436 groups = "spi2", "spi2_wp_hold";
440 pcie0_pins: pcie0-pins {
443 groups = "pcie_2l_0_pereset", "pcie_clk_req_n0_0",
448 pcie1_pins: pcie1-pins {
451 groups = "pcie_2l_1_pereset", "pcie_clk_req_n1",
456 pcie2_pins: pcie2-pins {
459 groups = "pcie_1l_0_pereset", "pcie_clk_req_n2_0",
464 pcie3_pins: pcie3-pins {
467 groups = "pcie_1l_1_pereset", "pcie_clk_req_n3",
474 compatible = "mediatek,mt7988-pwm";
475 reg = <0 0x10048000 0 0x1000>;
477 clocks = <&infracfg CLK_INFRA_66M_PWM_BCK>,
478 <&infracfg CLK_INFRA_66M_PWM_HCK>,
479 <&infracfg CLK_INFRA_66M_PWM_CK1>,
480 <&infracfg CLK_INFRA_66M_PWM_CK2>,
481 <&infracfg CLK_INFRA_66M_PWM_CK3>,
482 <&infracfg CLK_INFRA_66M_PWM_CK4>,
483 <&infracfg CLK_INFRA_66M_PWM_CK5>,
484 <&infracfg CLK_INFRA_66M_PWM_CK6>,
485 <&infracfg CLK_INFRA_66M_PWM_CK7>,
486 <&infracfg CLK_INFRA_66M_PWM_CK8>;
487 clock-names = "top", "main", "pwm1", "pwm2", "pwm3",
488 "pwm4","pwm5","pwm6","pwm7","pwm8";
492 sgmiisys0: syscon@10060000 {
493 compatible = "mediatek,mt7988-sgmiisys",
494 "mediatek,mt7988-sgmiisys_0",
496 reg = <0 0x10060000 0 0x1000>;
500 sgmiisys1: syscon@10070000 {
501 compatible = "mediatek,mt7988-sgmiisys",
502 "mediatek,mt7988-sgmiisys_1",
504 reg = <0 0x10070000 0 0x1000>;
508 usxgmiisys0: usxgmiisys@10080000 {
509 compatible = "mediatek,mt7988-usxgmiisys",
510 "mediatek,mt7988-usxgmiisys_0",
512 reg = <0 0x10080000 0 0x1000>;
516 usxgmiisys1: usxgmiisys@10081000 {
517 compatible = "mediatek,mt7988-usxgmiisys",
518 "mediatek,mt7988-usxgmiisys_1",
520 reg = <0 0x10081000 0 0x1000>;
524 mcusys: mcusys@100e0000 {
525 compatible = "mediatek,mt7988-mcusys", "syscon";
526 reg = <0 0x100e0000 0 0x1000>;
530 uart0: serial@11000000 {
531 compatible = "mediatek,mt7986-uart",
532 "mediatek,mt6577-uart";
533 reg = <0 0x11000000 0 0x100>;
534 interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
536 * 8250-mtk driver don't control "baud" clock since commit
537 * e32a83c70cf9 (kernel v5.7), but both "baud" and "bus" clocks
538 * still need to be passed to the driver to prevent probe fail
540 clocks = <&topckgen CLK_TOP_UART_SEL>,
541 <&infracfg CLK_INFRA_52M_UART0_CK>;
542 clock-names = "baud", "bus";
543 assigned-clocks = <&topckgen CLK_TOP_UART_SEL>,
544 <&infracfg CLK_INFRA_MUX_UART0_SEL>;
545 assigned-clock-parents = <&topckgen CLK_TOP_XTAL>,
546 <&topckgen CLK_TOP_UART_SEL>;
547 pinctrl-names = "default";
548 pinctrl-0 = <&uart0_pins>;
552 snand: spi@11001000 {
553 compatible = "mediatek,mt7986-snand";
554 reg = <0 0x11001000 0 0x1000>;
555 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
556 clocks = <&infracfg CLK_INFRA_SPINFI>,
557 <&infracfg CLK_INFRA_NFI>;
558 clock-names = "pad_clk", "nfi_clk";
559 assigned-clocks = <&topckgen CLK_TOP_SPINFI_SEL>,
560 <&topckgen CLK_TOP_NFI1X_SEL>;
561 assigned-clock-parents = <&topckgen CLK_TOP_MPLL_D8>,
562 <&topckgen CLK_TOP_MPLL_D8>;
563 nand-ecc-engine = <&bch>;
565 #address-cells = <1>;
567 pinctrl-names = "default";
568 pinctrl-0 = <&snfi_pins>;
573 compatible = "mediatek,mt7686-ecc";
574 reg = <0 0x11002000 0 0x1000>;
575 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
576 clocks = <&topckgen CLK_TOP_NFI1X_SEL>;
577 clock-names = "nfiecc_clk";
582 compatible = "mediatek,mt7988-i2c",
583 "mediatek,mt7981-i2c";
584 reg = <0 0x11003000 0 0x1000>,
585 <0 0x10217080 0 0x80>;
586 interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
588 clocks = <&infracfg CLK_INFRA_I2C_BCK>,
589 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
590 clock-names = "main", "dma";
591 #address-cells = <1>;
597 compatible = "mediatek,mt7988-i2c",
598 "mediatek,mt7981-i2c";
599 reg = <0 0x11004000 0 0x1000>,
600 <0 0x10217100 0 0x80>;
601 interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>;
603 clocks = <&infracfg CLK_INFRA_I2C_BCK>,
604 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
605 clock-names = "main", "dma";
606 #address-cells = <1>;
612 compatible = "mediatek,mt7988-i2c",
613 "mediatek,mt7981-i2c";
614 reg = <0 0x11005000 0 0x1000>,
615 <0 0x10217180 0 0x80>;
616 interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
618 clocks = <&infracfg CLK_INFRA_I2C_BCK>,
619 <&infracfg CLK_INFRA_66M_AP_DMA_BCK>;
620 clock-names = "main", "dma";
621 #address-cells = <1>;
627 compatible = "mediatek,ipm-spi-quad", "mediatek,spi-ipm";
628 reg = <0 0x11007000 0 0x100>;
629 interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
630 clocks = <&topckgen CLK_TOP_MPLL_D2>,
631 <&topckgen CLK_TOP_SPI_SEL>,
632 <&infracfg CLK_INFRA_104M_SPI0>,
633 <&infracfg CLK_INFRA_66M_SPI0_HCK>;
634 clock-names = "parent-clk", "sel-clk", "spi-clk",
636 #address-cells = <1>;
642 compatible = "mediatek,ipm-spi-single", "mediatek,spi-ipm";
643 reg = <0 0x11008000 0 0x100>;
644 interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
645 clocks = <&topckgen CLK_TOP_MPLL_D2>,
646 <&topckgen CLK_TOP_SPI_SEL>,
647 <&infracfg CLK_INFRA_104M_SPI1>,
648 <&infracfg CLK_INFRA_66M_SPI1_HCK>;
649 clock-names = "parent-clk", "sel-clk", "spi-clk",
651 #address-cells = <1>;
653 pinctrl-names = "default";
654 pinctrl-0 = <&spi1_pins>;
659 compatible = "mediatek,ipm-spi-quad", "mediatek,spi-ipm";
660 reg = <0 0x11009000 0 0x100>;
661 interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
662 clocks = <&topckgen CLK_TOP_MPLL_D2>,
663 <&topckgen CLK_TOP_SPI_SEL>,
664 <&infracfg CLK_INFRA_104M_SPI2_BCK>,
665 <&infracfg CLK_INFRA_66M_SPI2_HCK>;
666 clock-names = "parent-clk", "sel-clk", "spi-clk",
668 #address-cells = <1>;
674 compatible = "pwm-fan";
675 /* cooling level (0, 1, 2) : (0% duty, 50% duty, 100% duty) */
676 cooling-levels = <0 128 255>;
677 #cooling-cells = <2>;
678 #thermal-sensor-cells = <1>;
682 lvts: lvts@1100a000 {
683 compatible = "mediatek,mt7988-lvts";
684 reg = <0 0x1100a000 0 0x1000>;
685 clocks = <&infracfg CLK_INFRA_26M_THERM_SYSTEM>;
686 clock-names = "lvts_clk";
687 nvmem-cells = <&lvts_calibration>;
688 nvmem-cell-names = "e_data1";
689 #thermal-sensor-cells = <1>;
692 ssusb0: usb@11190000 {
693 compatible = "mediatek,mt7988-xhci",
695 reg = <0 0x11190000 0 0x2e00>,
696 <0 0x11193e00 0 0x0100>;
697 reg-names = "mac", "ippc";
698 interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
699 phys = <&xphyu2port0 PHY_TYPE_USB2>,
700 <&xphyu3port0 PHY_TYPE_USB3>;
701 clocks = <&infracfg CLK_INFRA_USB_SYS>,
702 <&infracfg CLK_INFRA_USB_XHCI>,
703 <&infracfg CLK_INFRA_USB_REF>,
704 <&infracfg CLK_INFRA_66M_USB_HCK>,
705 <&infracfg CLK_INFRA_133M_USB_HCK>;
706 clock-names = "sys_ck",
711 #address-cells = <2>;
713 mediatek,p0_speed_fixup;
717 ssusb1: usb@11200000 {
718 compatible = "mediatek,mt7988-xhci",
720 reg = <0 0x11200000 0 0x2e00>,
721 <0 0x11203e00 0 0x0100>;
722 reg-names = "mac", "ippc";
723 interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
724 phys = <&tphyu2port0 PHY_TYPE_USB2>,
725 <&tphyu3port0 PHY_TYPE_USB3>;
726 clocks = <&infracfg CLK_INFRA_USB_SYS_CK_P1>,
727 <&infracfg CLK_INFRA_USB_XHCI_CK_P1>,
728 <&infracfg CLK_INFRA_USB_CK_P1>,
729 <&infracfg CLK_INFRA_66M_USB_HCK_CK_P1>,
730 <&infracfg CLK_INFRA_133M_USB_HCK_CK_P1>;
731 clock-names = "sys_ck",
736 #address-cells = <2>;
741 afe: audio-controller@11210000 {
742 compatible = "mediatek,mt79xx-audio";
743 reg = <0 0x11210000 0 0x9000>;
744 interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
745 clocks = <&infracfg CLK_INFRA_66M_AUD_SLV_BCK>,
746 <&infracfg CLK_INFRA_AUD_26M>,
747 <&infracfg CLK_INFRA_AUD_L>,
748 <&infracfg CLK_INFRA_AUD_AUD>,
749 <&infracfg CLK_INFRA_AUD_EG2>,
750 <&topckgen CLK_TOP_AUD_SEL>,
751 <&topckgen CLK_TOP_AUD_I2S_M>;
752 clock-names = "aud_bus_ck",
759 assigned-clocks = <&topckgen CLK_TOP_AUD_SEL>,
760 <&topckgen CLK_TOP_A1SYS_SEL>,
761 <&topckgen CLK_TOP_AUD_L_SEL>,
762 <&topckgen CLK_TOP_A_TUNER_SEL>;
763 assigned-clock-parents = <&apmixedsys CLK_APMIXED_APLL2>,
764 <&topckgen CLK_TOP_APLL2_D4>,
765 <&apmixedsys CLK_APMIXED_APLL2>,
766 <&topckgen CLK_TOP_APLL2_D4>;
771 compatible = "mediatek,mt7986-mmc",
772 "mediatek,mt7981-mmc";
773 reg = <0 0x11230000 0 0x1000>,
774 <0 0x11D60000 0 0x1000>;
775 interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
776 clocks = <&infracfg CLK_INFRA_MSDC400>,
777 <&infracfg CLK_INFRA_MSDC2_HCK>,
778 <&infracfg CLK_INFRA_66M_MSDC_0_HCK>,
779 <&infracfg CLK_INFRA_133M_MSDC_0_HCK>;
780 assigned-clocks = <&topckgen CLK_TOP_EMMC_250M_SEL>,
781 <&topckgen CLK_TOP_EMMC_400M_SEL>;
782 assigned-clock-parents = <&topckgen CLK_TOP_NET1PLL_D5_D2>,
783 <&apmixedsys CLK_APMIXED_MSDCPLL>;
784 clock-names = "source",
788 #address-cells = <1>;
793 pcie2: pcie@11280000 {
794 compatible = "mediatek,mt7988-pcie",
795 "mediatek,mt7986-pcie",
796 "mediatek,mt8192-pcie";
797 reg = <0 0x11280000 0 0x2000>;
798 reg-names = "pcie-mac";
799 ranges = <0x81000000 0x00 0x20000000 0x00
800 0x20000000 0x00 0x00200000>,
801 <0x82000000 0x00 0x20200000 0x00
802 0x20200000 0x00 0x07e00000>;
804 linux,pci-domain = <3>;
805 interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
806 bus-range = <0x00 0xff>;
807 clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P2>,
808 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P2>,
809 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P2>,
810 <&infracfg CLK_INFRA_133M_PCIE_CK_P2>;
811 clock-names = "pl_250m", "tl_26m", "peri_26m",
813 pinctrl-names = "default";
814 pinctrl-0 = <&pcie2_pins>;
815 phys = <&xphyu3port0 PHY_TYPE_PCIE>;
816 phy-names = "pcie-phy";
817 #interrupt-cells = <1>;
818 interrupt-map-mask = <0 0 0 0x7>;
819 interrupt-map = <0 0 0 1 &pcie_intc2 0>,
820 <0 0 0 2 &pcie_intc2 1>,
821 <0 0 0 3 &pcie_intc2 2>,
822 <0 0 0 4 &pcie_intc2 3>;
823 #address-cells = <3>;
827 pcie_intc2: interrupt-controller {
828 #address-cells = <0>;
829 #interrupt-cells = <1>;
830 interrupt-controller;
834 pcie3: pcie@11290000 {
835 compatible = "mediatek,mt7988-pcie",
836 "mediatek,mt7986-pcie",
837 "mediatek,mt8192-pcie";
838 reg = <0 0x11290000 0 0x2000>;
839 reg-names = "pcie-mac";
840 ranges = <0x81000000 0x00 0x28000000 0x00
841 0x28000000 0x00 0x00200000>,
842 <0x82000000 0x00 0x28200000 0x00
843 0x28200000 0x00 0x07e00000>;
845 linux,pci-domain = <2>;
846 interrupts = <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>;
847 bus-range = <0x00 0xff>;
848 clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P3>,
849 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P3>,
850 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P3>,
851 <&infracfg CLK_INFRA_133M_PCIE_CK_P3>;
852 clock-names = "pl_250m", "tl_26m", "peri_26m",
854 pinctrl-names = "default";
855 pinctrl-0 = <&pcie3_pins>;
856 #interrupt-cells = <1>;
857 interrupt-map-mask = <0 0 0 0x7>;
858 interrupt-map = <0 0 0 1 &pcie_intc3 0>,
859 <0 0 0 2 &pcie_intc3 1>,
860 <0 0 0 3 &pcie_intc3 2>,
861 <0 0 0 4 &pcie_intc3 3>;
862 #address-cells = <3>;
866 pcie_intc3: interrupt-controller {
867 #address-cells = <0>;
868 #interrupt-cells = <1>;
869 interrupt-controller;
873 pcie0: pcie@11300000 {
874 compatible = "mediatek,mt7988-pcie",
875 "mediatek,mt7986-pcie",
876 "mediatek,mt8192-pcie";
877 reg = <0 0x11300000 0 0x2000>;
878 reg-names = "pcie-mac";
879 ranges = <0x81000000 0x00 0x30000000 0x00
880 0x30000000 0x00 0x00200000>,
881 <0x82000000 0x00 0x30200000 0x00
882 0x30200000 0x00 0x07e00000>;
884 linux,pci-domain = <0>;
885 interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
886 bus-range = <0x00 0xff>;
887 clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P0>,
888 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P0>,
889 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P0>,
890 <&infracfg CLK_INFRA_133M_PCIE_CK_P0>;
891 clock-names = "pl_250m", "tl_26m", "peri_26m",
893 pinctrl-names = "default";
894 pinctrl-0 = <&pcie0_pins>;
895 #interrupt-cells = <1>;
896 interrupt-map-mask = <0 0 0 0x7>;
897 interrupt-map = <0 0 0 1 &pcie_intc0 0>,
898 <0 0 0 2 &pcie_intc0 1>,
899 <0 0 0 3 &pcie_intc0 2>,
900 <0 0 0 4 &pcie_intc0 3>;
901 #address-cells = <3>;
905 pcie_intc0: interrupt-controller {
906 #address-cells = <0>;
907 #interrupt-cells = <1>;
908 interrupt-controller;
912 pcie1: pcie@11310000 {
913 compatible = "mediatek,mt7988-pcie",
914 "mediatek,mt7986-pcie",
915 "mediatek,mt8192-pcie";
916 reg = <0 0x11310000 0 0x2000>;
917 reg-names = "pcie-mac";
918 ranges = <0x81000000 0x00 0x38000000 0x00
919 0x38000000 0x00 0x00200000>,
920 <0x82000000 0x00 0x38200000 0x00
921 0x38200000 0x00 0x07e00000>;
923 linux,pci-domain = <1>;
924 interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
925 bus-range = <0x00 0xff>;
926 clocks = <&infracfg CLK_INFRA_PCIE_PIPE_P1>,
927 <&infracfg CLK_INFRA_PCIE_GFMUX_TL_P1>,
928 <&infracfg CLK_INFRA_PCIE_PERI_26M_CK_P1>,
929 <&infracfg CLK_INFRA_133M_PCIE_CK_P1>;
930 clock-names = "pl_250m", "tl_26m", "peri_26m",
932 pinctrl-names = "default";
933 pinctrl-0 = <&pcie1_pins>;
934 #interrupt-cells = <1>;
935 interrupt-map-mask = <0 0 0 0x7>;
936 interrupt-map = <0 0 0 1 &pcie_intc1 0>,
937 <0 0 0 2 &pcie_intc1 1>,
938 <0 0 0 3 &pcie_intc1 2>,
939 <0 0 0 4 &pcie_intc1 3>;
940 #address-cells = <3>;
944 pcie_intc1: interrupt-controller {
945 #address-cells = <0>;
946 #interrupt-cells = <1>;
947 interrupt-controller;
951 tphy: tphy@11c50000 {
952 compatible = "mediatek,mt7988",
953 "mediatek,generic-tphy-v2";
955 #address-cells = <2>;
958 tphyu2port0: usb-phy@11c50000 {
959 reg = <0 0x11c50000 0 0x700>;
960 clocks = <&infracfg CLK_INFRA_USB_UTMI_CK_P1>;
964 tphyu3port0: usb-phy@11c50700 {
965 reg = <0 0x11c50700 0 0x900>;
966 clocks = <&infracfg CLK_INFRA_USB_PIPE_CK_P1>;
969 mediatek,usb3-pll-ssc-delta;
970 mediatek,usb3-pll-ssc-delta1;
974 topmisc: topmisc@11d10000 {
975 compatible = "mediatek,mt7988-topmisc", "syscon",
976 "mediatek,mt7988-power-controller";
977 reg = <0 0x11d10000 0 0x10000>;
979 #power-domain-cells = <1>;
980 #address-cells = <1>;
984 xphy: xphy@11e10000 {
985 compatible = "mediatek,mt7988",
988 #address-cells = <2>;
992 xphyu2port0: usb-phy@11e10000 {
993 reg = <0 0x11e10000 0 0x400>;
994 clocks = <&infracfg CLK_INFRA_USB_UTMI>;
999 xphyu3port0: usb-phy@11e13000 {
1000 reg = <0 0x11e13400 0 0x500>;
1001 clocks = <&infracfg CLK_INFRA_USB_PIPE>;
1002 clock-names = "ref";
1004 mediatek,syscon-type = <&topmisc 0x218 0>;
1008 xfi_pextp0: xfi-pextp@11f20000 {
1009 compatible = "mediatek,mt7988-xfi-pextp",
1010 "mediatek,mt7988-xfi-pextp_0",
1012 reg = <0 0x11f20000 0 0x10000>;
1016 xfi_pextp1: xfi-pextp@11f30000 {
1017 compatible = "mediatek,mt7988-xfi-pextp",
1018 "mediatek,mt7988-xfi-pextp_1",
1020 reg = <0 0x11f30000 0 0x10000>;
1024 xfi_pll: xfi-pll@11f40000 {
1025 compatible = "mediatek,mt7988-xfi-pll", "syscon";
1026 reg = <0 0x11f40000 0 0x1000>;
1030 efuse: efuse@11f50000 {
1031 compatible = "mediatek,efuse";
1032 reg = <0 0x11f50000 0 0x1000>;
1033 #address-cells = <1>;
1036 lvts_calibration: calib@918 {
1039 phy_calibration_p0: calib@940 {
1042 phy_calibration_p1: calib@954 {
1045 phy_calibration_p2: calib@968 {
1048 phy_calibration_p3: calib@97c {
1051 cpufreq_calibration: calib@278 {
1056 ethsys: syscon@15000000 {
1057 compatible = "mediatek,mt7988-ethsys", "syscon";
1058 reg = <0 0x15000000 0 0x1000>;
1061 #address-cells = <1>;
1065 switch: switch@15020000 {
1066 compatible = "mediatek,mt7988-switch";
1067 reg = <0 0x15020000 0 0x8000>;
1068 interrupt-controller;
1069 #interrupt-cells = <1>;
1070 interrupt-parent = <&gic>;
1071 interrupts = <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>;
1072 resets = <ðrst 0>;
1073 #address-cells = <1>;
1077 #address-cells = <1>;
1083 phy-mode = "internal";
1084 phy-handle = <&gsw_phy0>;
1090 phy-mode = "internal";
1091 phy-handle = <&gsw_phy1>;
1097 phy-mode = "internal";
1098 phy-handle = <&gsw_phy2>;
1104 phy-mode = "internal";
1105 phy-handle = <&gsw_phy3>;
1110 ethernet = <&gmac0>;
1111 phy-mode = "internal";
1122 #address-cells = <1>;
1124 mediatek,pio = <&pio>;
1126 gsw_phy0: ethernet-phy@0 {
1127 compatible = "ethernet-phy-ieee802.3-c22";
1129 phy-mode = "internal";
1130 nvmem-cells = <&phy_calibration_p0>;
1131 nvmem-cell-names = "phy-cal-data";
1134 #address-cells = <1>;
1137 gsw_phy0_led0: gsw-phy0-led0@0 {
1139 function = LED_FUNCTION_LAN;
1140 status = "disabled";
1143 gsw_phy0_led1: gsw-phy0-led1@1 {
1145 function = LED_FUNCTION_LAN;
1146 status = "disabled";
1151 gsw_phy1: ethernet-phy@1 {
1152 compatible = "ethernet-phy-ieee802.3-c22";
1154 phy-mode = "internal";
1155 nvmem-cells = <&phy_calibration_p1>;
1156 nvmem-cell-names = "phy-cal-data";
1159 #address-cells = <1>;
1162 gsw_phy1_led0: gsw-phy1-led0@0 {
1164 function = LED_FUNCTION_LAN;
1165 status = "disabled";
1168 gsw_phy1_led1: gsw-phy1-led1@1 {
1170 function = LED_FUNCTION_LAN;
1171 status = "disabled";
1176 gsw_phy2: ethernet-phy@2 {
1177 compatible = "ethernet-phy-ieee802.3-c22";
1179 phy-mode = "internal";
1180 nvmem-cells = <&phy_calibration_p2>;
1181 nvmem-cell-names = "phy-cal-data";
1184 #address-cells = <1>;
1187 gsw_phy2_led0: gsw-phy2-led0@0 {
1189 function = LED_FUNCTION_LAN;
1190 status = "disabled";
1193 gsw_phy2_led1: gsw-phy2-led1@1 {
1195 function = LED_FUNCTION_LAN;
1196 status = "disabled";
1201 gsw_phy3: ethernet-phy@3 {
1202 compatible = "ethernet-phy-ieee802.3-c22";
1204 phy-mode = "internal";
1205 nvmem-cells = <&phy_calibration_p3>;
1206 nvmem-cell-names = "phy-cal-data";
1209 #address-cells = <1>;
1212 gsw_phy3_led0: gsw-phy3-led0@0 {
1214 function = LED_FUNCTION_LAN;
1215 status = "disabled";
1218 gsw_phy3_led1: gsw-phy3-led1@1 {
1220 function = LED_FUNCTION_LAN;
1221 status = "disabled";
1228 ethwarp: syscon@15031000 {
1229 compatible = "mediatek,mt7988-ethwarp", "syscon", "simple-mfd";
1230 reg = <0 0x15031000 0 0x1000>;
1233 ethrst: reset-controller {
1234 compatible = "ti,syscon-reset";
1237 0x8 9 0x8 9 0 0 (ASSERT_SET | DEASSERT_CLEAR | STATUS_NONE)
1242 eth: ethernet@15100000 {
1243 compatible = "mediatek,mt7988-eth";
1244 reg = <0 0x15100000 0 0x80000>,
1245 <0 0x15400000 0 0x380000>;
1246 interrupts = <GIC_SPI 196 IRQ_TYPE_LEVEL_HIGH>,
1247 <GIC_SPI 197 IRQ_TYPE_LEVEL_HIGH>,
1248 <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
1249 <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
1250 clocks = <ðsys CLK_ETHDMA_XGP1_EN>,
1251 <ðsys CLK_ETHDMA_XGP2_EN>,
1252 <ðsys CLK_ETHDMA_XGP3_EN>,
1253 <ðsys CLK_ETHDMA_FE_EN>,
1254 <ðsys CLK_ETHDMA_GP2_EN>,
1255 <ðsys CLK_ETHDMA_GP1_EN>,
1256 <ðsys CLK_ETHDMA_GP3_EN>,
1257 <ðsys CLK_ETHDMA_ESW_EN>,
1258 <ðsys CLK_ETHDMA_CRYPT0_EN>,
1259 <&sgmiisys0 CLK_SGM0_TX_EN>,
1260 <&sgmiisys0 CLK_SGM0_RX_EN>,
1261 <&sgmiisys1 CLK_SGM1_TX_EN>,
1262 <&sgmiisys1 CLK_SGM1_RX_EN>,
1263 <ðwarp CLK_ETHWARP_WOCPU2_EN>,
1264 <ðwarp CLK_ETHWARP_WOCPU1_EN>,
1265 <ðwarp CLK_ETHWARP_WOCPU0_EN>,
1266 <&topckgen CLK_TOP_USXGMII_SBUS_0_SEL>,
1267 <&topckgen CLK_TOP_USXGMII_SBUS_1_SEL>,
1268 <&topckgen CLK_TOP_SGM_0_SEL>,
1269 <&topckgen CLK_TOP_SGM_1_SEL>,
1270 <&topckgen CLK_TOP_XFI_PHY_0_XTAL_SEL>,
1271 <&topckgen CLK_TOP_XFI_PHY_1_XTAL_SEL>,
1272 <&topckgen CLK_TOP_ETH_GMII_SEL>,
1273 <&topckgen CLK_TOP_ETH_REFCK_50M_SEL>,
1274 <&topckgen CLK_TOP_ETH_SYS_200M_SEL>,
1275 <&topckgen CLK_TOP_ETH_SYS_SEL>,
1276 <&topckgen CLK_TOP_ETH_XGMII_SEL>,
1277 <&topckgen CLK_TOP_ETH_MII_SEL>,
1278 <&topckgen CLK_TOP_NETSYS_SEL>,
1279 <&topckgen CLK_TOP_NETSYS_500M_SEL>,
1280 <&topckgen CLK_TOP_NETSYS_PAO_2X_SEL>,
1281 <&topckgen CLK_TOP_NETSYS_SYNC_250M_SEL>,
1282 <&topckgen CLK_TOP_NETSYS_PPEFB_250M_SEL>,
1283 <&topckgen CLK_TOP_NETSYS_WARP_SEL>;
1284 clock-names = "xgp1", "xgp2", "xgp3", "fe", "gp2", "gp1",
1285 "gp3", "esw", "crypto", "sgmii_tx250m",
1286 "sgmii_rx250m", "sgmii2_tx250m", "sgmii2_rx250m",
1287 "ethwarp_wocpu2", "ethwarp_wocpu1",
1288 "ethwarp_wocpu0", "top_usxgmii0_sel",
1289 "top_usxgmii1_sel", "top_sgm0_sel",
1290 "top_sgm1_sel", "top_xfi_phy0_xtal_sel",
1291 "top_xfi_phy1_xtal_sel", "top_eth_gmii_sel",
1292 "top_eth_refck_50m_sel", "top_eth_sys_200m_sel",
1293 "top_eth_sys_sel", "top_eth_xgmii_sel",
1294 "top_eth_mii_sel", "top_netsys_sel",
1295 "top_netsys_500m_sel", "top_netsys_pao_2x_sel",
1296 "top_netsys_sync_250m_sel",
1297 "top_netsys_ppefb_250m_sel",
1298 "top_netsys_warp_sel";
1299 assigned-clocks = <&topckgen CLK_TOP_NETSYS_2X_SEL>,
1300 <&topckgen CLK_TOP_NETSYS_GSW_SEL>,
1301 <&topckgen CLK_TOP_USXGMII_SBUS_0_SEL>,
1302 <&topckgen CLK_TOP_USXGMII_SBUS_1_SEL>,
1303 <&topckgen CLK_TOP_SGM_0_SEL>,
1304 <&topckgen CLK_TOP_SGM_1_SEL>;
1305 assigned-clock-parents = <&apmixedsys CLK_APMIXED_NET2PLL>,
1306 <&topckgen CLK_TOP_NET1PLL_D4>,
1307 <&topckgen CLK_TOP_NET1PLL_D8_D4>,
1308 <&topckgen CLK_TOP_NET1PLL_D8_D4>,
1309 <&apmixedsys CLK_APMIXED_SGMPLL>,
1310 <&apmixedsys CLK_APMIXED_SGMPLL>;
1311 mediatek,ethsys = <ðsys>;
1312 mediatek,sgmiisys = <&sgmiisys0>, <&sgmiisys1>;
1313 mediatek,usxgmiisys = <&usxgmiisys0>, <&usxgmiisys1>;
1314 mediatek,xfi-pextp = <&xfi_pextp0>, <&xfi_pextp1>;
1315 mediatek,xfi-pll = <&xfi_pll>;
1316 mediatek,infracfg = <&topmisc>;
1317 mediatek,toprgu = <&watchdog>;
1319 #address-cells = <1>;
1323 compatible = "mediatek,eth-mac";
1325 phy-mode = "internal";
1326 status = "disabled";
1336 compatible = "mediatek,eth-mac";
1338 status = "disabled";
1342 compatible = "mediatek,eth-mac";
1344 status = "disabled";
1347 mdio_bus: mdio-bus {
1348 #address-cells = <1>;
1351 /* internal 2.5G PHY */
1352 int_2p5g_phy: ethernet-phy@15 {
1353 compatible = "ethernet-phy-ieee802.3-c45";
1355 phy-mode = "internal";
1360 crypto: crypto@15600000 {
1361 compatible = "inside-secure,safexcel-eip197b";
1362 reg = <0 0x15600000 0 0x180000>;
1363 interrupts = <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>,
1364 <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>,
1365 <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>,
1366 <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
1367 interrupt-names = "ring0", "ring1", "ring2", "ring3";
1373 cpu_thermal: cpu-thermal {
1374 polling-delay-passive = <1000>;
1375 polling-delay = <1000>;
1376 thermal-sensors = <&lvts 0>;
1378 cpu_trip_crit: crit {
1379 temperature = <125000>;
1380 hysteresis = <2000>;
1385 temperature = <120000>;
1386 hysteresis = <2000>;
1390 cpu_trip_active_high: active-high {
1391 temperature = <115000>;
1392 hysteresis = <2000>;
1396 cpu_trip_active_med: active-med {
1397 temperature = <85000>;
1398 hysteresis = <2000>;
1402 cpu_trip_active_low: active-low {
1403 temperature = <40000>;
1404 hysteresis = <2000>;
1411 /* active: set fan to cooling level 2 */
1412 cooling-device = <&fan 3 3>;
1413 trip = <&cpu_trip_active_high>;
1417 /* active: set fan to cooling level 1 */
1418 cooling-device = <&fan 2 2>;
1419 trip = <&cpu_trip_active_med>;
1423 /* passive: set fan to cooling level 0 */
1424 cooling-device = <&fan 1 1>;
1425 trip = <&cpu_trip_active_low>;
1432 compatible = "arm,armv8-timer";
1433 interrupt-parent = <&gic>;
1434 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
1435 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
1436 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
1437 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;