// SPDX-License-Identifier: (GPL-2.0 OR MIT) /* * Copyright (C) 2025 MediaTek Inc. * Author: Sam.Shih * Author: Frank Wunderlich */ /dts-v1/; #include "mt7988a.dtsi" #include #include #include #include / { aliases { ethernet0 = &gmac0; i2c0 = &i2c0; i2c1 = &i2c1; i2c2 = &i2c2; /* PCA9548 (0-0070) provides 4 i2c channels */ i2c3 = &imux0; i2c4 = &imux1_sfp1; i2c5 = &imux2_sfp2; i2c6 = &imux3_wifi; }; chosen { stdout-path = &serial0; }; fan: pwm-fan { compatible = "pwm-fan"; /* cooling level (0, 1, 2, 3) : (0% duty, 30% duty, 50% duty, 100% duty) */ cooling-levels = <0 80 128 255>; pinctrl-0 = <&pwm0_pins>; pinctrl-names = "default"; pwms = <&pwm 0 50000>; #cooling-cells = <2>; }; gpio-keys { compatible = "gpio-keys"; button-reset { label = "reset"; gpios = <&pio 13 GPIO_ACTIVE_LOW>; linux,code = ; }; button-wps { label = "WPS"; gpios = <&pio 14 GPIO_ACTIVE_LOW>; linux,code = ; }; }; gpio-leds { compatible = "gpio-leds"; led_red: sys-led-red { color = ; gpios = <&pca9555 15 GPIO_ACTIVE_HIGH>; default-state = "on"; }; led_blue: sys-led-blue { color = ; gpios = <&pca9555 14 GPIO_ACTIVE_HIGH>; default-state = "on"; }; }; reg_1p8v: regulator-dvdd1v8 { compatible = "regulator-fixed"; regulator-name = "DVDD1V8_SOC"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-boot-on; regulator-always-on; }; reg_3p3v: regulator-3v3vd { compatible = "regulator-fixed"; regulator-name = "3V3VD"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-boot-on; regulator-always-on; }; /* SFP1 cage (LAN) */ sfp1: sfp1 { compatible = "sff,sfp"; i2c-bus = <&imux1_sfp1>; los-gpios = <&pio 70 GPIO_ACTIVE_HIGH>; mod-def0-gpios = <&pio 69 GPIO_ACTIVE_LOW>; tx-disable-gpios = <&pio 21 GPIO_ACTIVE_HIGH>; maximum-power-milliwatt = <3000>; }; /* SFP2 cage (WAN) */ sfp2: sfp2 { compatible = "sff,sfp"; i2c-bus = <&imux2_sfp2>; los-gpios = <&pio 2 GPIO_ACTIVE_HIGH>; mod-def0-gpios = <&pio 1 GPIO_ACTIVE_LOW>; tx-disable-gpios = <&pio 0 GPIO_ACTIVE_HIGH>; maximum-power-milliwatt = <3000>; }; }; &cci { proc-supply = <&rt5190_buck3>; }; &cpu0 { proc-supply = <&rt5190_buck3>; }; &cpu1 { proc-supply = <&rt5190_buck3>; }; &cpu2 { proc-supply = <&rt5190_buck3>; }; &cpu3 { proc-supply = <&rt5190_buck3>; }; &cpu_thermal { trips { cpu_trip_hot: hot { temperature = <120000>; hysteresis = <2000>; type = "hot"; }; cpu_trip_active_high: active-high { temperature = <115000>; hysteresis = <2000>; type = "active"; }; cpu_trip_active_med: active-med { temperature = <85000>; hysteresis = <2000>; type = "active"; }; cpu_trip_active_low: active-low { temperature = <40000>; hysteresis = <2000>; type = "active"; }; }; cooling-maps { map-cpu-active-high { /* active: set fan to cooling level 2 */ cooling-device = <&fan 3 3>; trip = <&cpu_trip_active_high>; }; map-cpu-active-med { /* active: set fan to cooling level 1 */ cooling-device = <&fan 2 2>; trip = <&cpu_trip_active_med>; }; map-cpu-active-low { /* active: set fan to cooling level 0 */ cooling-device = <&fan 1 1>; trip = <&cpu_trip_active_low>; }; }; }; ð { pinctrl-0 = <&mdio0_pins>; pinctrl-names = "default"; status = "okay"; }; &fan { pinctrl-0 = <&pwm0_pins>; pinctrl-names = "default"; pwms = <&pwm 0 50000>; status = "okay"; }; &gmac0 { status = "okay"; }; &gsw_phy0 { pinctrl-0 = <&gbe0_led0_pins>; pinctrl-names = "gbe-led"; }; &gsw_phy0_led0 { color = ; status = "okay"; }; &gsw_port0 { label = "mgmt"; }; /* R4Pro has only port 0 connected, so disable the others */ &gsw_phy1 { status = "disabled"; }; &gsw_port1 { status = "disabled"; }; &gsw_phy2 { status = "disabled"; }; &gsw_port2 { status = "disabled"; }; &gsw_phy3 { status = "disabled"; }; &gsw_port3 { status = "disabled"; }; &i2c0 { pinctrl-0 = <&i2c0_pins>; pinctrl-names = "default"; status = "okay"; rt5190a_64: rt5190a@64 { compatible = "richtek,rt5190a"; reg = <0x64>; vin2-supply = <&rt5190_buck1>; vin3-supply = <&rt5190_buck1>; vin4-supply = <&rt5190_buck1>; regulators { rt5190_buck1: buck1 { regulator-name = "rt5190a-buck1"; regulator-min-microvolt = <5090000>; regulator-max-microvolt = <5090000>; regulator-allowed-modes = ; regulator-boot-on; regulator-always-on; }; buck2 { regulator-name = "vcore"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <1400000>; regulator-boot-on; regulator-always-on; }; rt5190_buck3: buck3 { regulator-name = "vproc"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <1400000>; regulator-boot-on; regulator-always-on; }; buck4 { regulator-name = "rt5190a-buck4"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-allowed-modes = ; regulator-boot-on; regulator-always-on; }; ldo { regulator-name = "rt5190a-ldo"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-boot-on; regulator-always-on; }; }; }; }; &i2c1 { pinctrl-0 = <&i2c1_pins>; pinctrl-names = "default"; status = "okay"; }; &i2c2 { pinctrl-0 = <&i2c2_1_pins>; pinctrl-names = "default"; status = "okay"; pca9545: i2c-mux@70 { compatible = "nxp,pca9545"; reg = <0x70>; #address-cells = <1>; #size-cells = <0>; imux0: i2c@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; pca9555: i2c-gpio-expander@20 { compatible = "nxp,pca9555"; reg = <0x20>; gpio-controller; #gpio-cells = <2>; }; rtc@51 { compatible = "nxp,pcf8563"; reg = <0x51>; }; eeprom@57 { compatible = "atmel,24c02"; reg = <0x57>; address-width = <8>; pagesize = <8>; size = <256>; }; }; imux1_sfp1: i2c@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; }; imux2_sfp2: i2c@2 { reg = <2>; #address-cells = <1>; #size-cells = <0>; }; imux3_wifi: i2c@3 { reg = <3>; #address-cells = <1>; #size-cells = <0>; }; }; }; /* mPCIe SIM2 (11300000) */ &pcie0 { status = "okay"; }; /* mPCIe (11310000 near leds) SIM3 */ &pcie1 { status = "okay"; }; /* M.2 (11280000) 1L0 key-m SSD1 CN13 / key-b SIM1 CN15 */ &pcie2 { status = "okay"; }; /* M.2 (11290000) 1L1 key-m SSD2 CN14 / key-b SIM2 CN18 */ &pcie3 { status = "okay"; }; &pio { gbe0_led0_pins: gbe0-led0-pins { mux { function = "led"; groups = "gbe0_led0"; }; }; i2c0_pins: i2c0-g0-pins { mux { function = "i2c"; groups = "i2c0_1"; }; }; i2c1_pins: i2c1-g0-pins { mux { function = "i2c"; groups = "i2c1_0"; }; }; i2c2_1_pins: i2c2-g1-pins { mux { function = "i2c"; groups = "i2c2_1"; }; }; mdio0_pins: mdio0-pins { mux { function = "eth"; groups = "mdc_mdio0"; }; conf { pins = "SMI_0_MDC", "SMI_0_MDIO"; drive-strength = <8>; }; }; mmc0_pins_emmc_51: mmc0-emmc-51-pins { mux { function = "flash"; groups = "emmc_51"; }; }; mmc0_pins_sdcard: mmc0-sdcard-pins { mux { function = "flash"; groups = "sdcard"; }; }; /* 1L0 0=key-b (CN15), 1=key-m (CN13) */ pcie-2-hog { gpio-hog; gpios = <79 GPIO_ACTIVE_HIGH>; output-high; }; /* 1L1 0=key-b (CN18), 1=key-m (CN14) */ pcie-3-hog { gpio-hog; gpios = <63 GPIO_ACTIVE_HIGH>; output-high; }; pwm0_pins: pwm0-pins { mux { groups = "pwm0"; function = "pwm"; }; }; spi0_flash_pins: spi0-flash-pins { mux { function = "spi"; groups = "spi0", "spi0_wp_hold"; }; }; }; &pwm { status = "okay"; }; &serial0 { status = "okay"; }; &spi0 { pinctrl-0 = <&spi0_flash_pins>; pinctrl-names = "default"; status = "okay"; spi_nand: nand@0 { compatible = "spi-nand"; reg = <0>; spi-max-frequency = <52000000>; spi-rx-bus-width = <4>; spi-tx-bus-width = <4>; }; }; &spi_nand { partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { reg = <0x0 0x200000>; label = "bl2"; }; partition@200000 { compatible = "linux,ubi"; reg = <0x200000 0xfe00000>; label = "ubi"; }; }; }; /* back USB */ &ssusb0 { /* Use U2P only instead of both U3P/U2P due to U3P serdes shared with pcie2 */ phys = <&xphyu2port0 PHY_TYPE_USB2>; mediatek,u3p-dis-msk = <1>; status = "okay"; }; /* front USB */ &ssusb1 { status = "okay"; }; &switch { dsa,member = <1 0>; status = "okay"; }; &tphy { status = "okay"; }; &watchdog { status = "okay"; }; &xsphy { status = "okay"; };