[openwrt/openwrt] mediatek: update Bananapi BPi-R4 Lite support

LEDE Commits lede-commits at lists.infradead.org
Tue Nov 25 08:53:42 PST 2025


dangole pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f911c2dc4427b01221ca2a4c24551740185970d6

commit f911c2dc4427b01221ca2a4c24551740185970d6
Author: Chukun Pan <amadeus at jmu.edu.cn>
AuthorDate: Sun Nov 9 23:10:06 2025 +0800

    mediatek: update Bananapi BPi-R4 Lite support
    
    Devices package:
      Add missing USB3 driver
    
    Device tree:
      Fix model name and pwm usage
      Add missing supply for I2C and USB
      Update network port names based on the shell image [1]
    
    [1] https://docs.banana-pi.org/bpi-r4_lite/banana_pi_bpi-r4_lite_case_1.png
    
    Fixes: 8b6c6978 ("mediatek: add support for BananaPi BPi-R4 Lite")
    Signed-off-by: Chukun Pan <amadeus at jmu.edu.cn>
---
 .../mediatek/dts/mt7987a-bananapi-bpi-r4-lite.dts  | 117 ++++++++++-----------
 .../filogic/base-files/etc/board.d/02_network      |   5 +-
 target/linux/mediatek/image/filogic.mk             |   5 +-
 3 files changed, 63 insertions(+), 64 deletions(-)

diff --git a/target/linux/mediatek/dts/mt7987a-bananapi-bpi-r4-lite.dts b/target/linux/mediatek/dts/mt7987a-bananapi-bpi-r4-lite.dts
index c209b3d4eb..d5a66e07a5 100644
--- a/target/linux/mediatek/dts/mt7987a-bananapi-bpi-r4-lite.dts
+++ b/target/linux/mediatek/dts/mt7987a-bananapi-bpi-r4-lite.dts
@@ -11,7 +11,7 @@
 #include "mt7987a-bananapi-bpi-r4-lite-mikrobus.dtsi"
 
 / {
-	model = "Bananapi BPI-R4-LITE";
+	model = "BananaPi BPI-R4 Lite";
 	compatible = "bananapi,bpi-r4-lite",
 		     "mediatek,mt7987a", "mediatek,mt7987";
 
@@ -23,10 +23,10 @@
 		i2c2 = &imux1_sfp;
 		i2c3 = &imux2_MikroBus;
 		i2c4 = &imux3;
-		led-boot = &sys_led_blue;
-		led-failsafe = &sys_led_blue;
-		led-running = &sys_led_blue;
-		led-upgrade = &sys_led_blue;
+		led-boot = &act_led;
+		led-failsafe = &act_led;
+		led-running = &act_led;
+		led-upgrade = &act_led;
 		serial0 = &uart0;
 	};
 
@@ -58,24 +58,22 @@
 		compatible = "gpio-leds";
 
 		sfp-led {
-			gpios = <&pca9555 11 GPIO_ACTIVE_LOW>;
 			function = "sfp";
 			color = <LED_COLOR_ID_GREEN>;
+			gpios = <&pca9555 11 GPIO_ACTIVE_LOW>;
 		};
 	};
 
 	pwm-leds {
 		compatible = "pwm-leds";
-		status = "okay";
 
 		/* ACT LED on bpi-r4-lite */
-		sys_led_blue: sys-led {
+		act_led: act-led {
 			color = <LED_COLOR_ID_BLUE>;
 			function = LED_FUNCTION_STATUS;
-			pwms = <&pwm 0 50000>;
+			pwms = <&pwm 0 50000 0>;
 			max-brightness = <255>;
-			active-high;
-			linux,default-trigger = "default-on";
+			default-state = "on";
 		};
 	};
 
@@ -106,22 +104,19 @@
 		regulator-min-microvolt = <5000000>;
 		regulator-max-microvolt = <5000000>;
 		gpio = <&pca9555 9 GPIO_ACTIVE_HIGH>;
-	};
-
-	usb-vbus-regulator {
-		compatible = "regulator-output";
-		vout-supply = <&reg_usb_5v>;
+		enable-active-high;
 	};
 };
 
 &fan {
-	pwms = <&pwm 2 50000>;
+	pwms = <&pwm 2 50000 0>;
 	status = "okay";
 };
 
 &gmac0 {
 	phy-mode = "2500base-x";
 	status = "okay";
+
 	fixed-link {
 		speed = <2500>;
 		full-duplex;
@@ -130,29 +125,12 @@
 };
 
 &gmac1 {
+	openwrt,netdev-name = "wan";
 	phy-mode = "internal";
 	phy-handle = <&phy15>;
 	status = "okay";
 };
 
-&pwm {
-	pinctrl-names = "default";
-	pinctrl-0 = <&pwm_pins>;
-	status = "okay";
-};
-
-&pwm_pins {
-	mux {
-		/*
-		 * - pwm0   : PWM0 at PIN13
-		 * - pwm1_0 : PWM at PIN7  (share with JTAG)
-		 * - pwm2_0 : PWM2 at PIN12 (share with PCM)
-		 */
-		function = "pwm";
-		groups = "pwm0", "pwm1_0", "pwm2_0";
-	};
-};
-
 &i2c0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&i2c0_pins>;
@@ -161,6 +139,7 @@
 	pca9545 at 70 {
 		compatible = "nxp,pca9545";
 		reg = <0x70>;
+		vdd-supply = <&reg_3p3v>;
 		#address-cells = <1>;
 		#size-cells = <0>;
 
@@ -180,6 +159,7 @@
 				address-bits = <8>;
 				page-size = <8>;
 				size = <256>;
+				vcc-supply = <&reg_3p3v>;
 			};
 		};
 
@@ -202,18 +182,19 @@
 
 			pca9555: i2c-gpio-expander at 20 {
 				compatible = "nxp,pca9555";
+				reg = <0x20>;
+				gpio-controller;
+				#gpio-cells = <2>;
 				interrupt-controller;
 				interrupt-parent = <&pio>;
 				interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
-				gpio-controller;
-				#gpio-cells = <2>;
-				reg = <0x20>;
+				vcc-supply = <&reg_3p3v>;
 			};
 
-			wifi_eeprom at 50 {
+			/* on the Wi-Fi card */
+			eeprom at 50 {
 				compatible = "atmel,24c02";
 				reg = <0x50>;
-				wp-gpios = <&pca9555 10 GPIO_ACTIVE_LOW>;
 				address-bits = <8>;
 				page-size = <8>;
 				size = <256>;
@@ -225,14 +206,13 @@
 &mdio {
 	/* built-in 2.5G Ethernet PHY */
 	phy15: phy at 15 {
-		pinctrl-names = "i2p5gbe-led";
-		pinctrl-0 = <&i2p5gbe_led0_pins>;
 		compatible = "ethernet-phy-ieee802.3-c45";
 		reg = <15>;
-		phy-mode = "internal";
+		pinctrl-names = "i2p5gbe-led";
+		pinctrl-0 = <&i2p5gbe_led0_pins>;
 	};
 
-	switch31: switch at 31 {
+	switch: switch at 31 {
 		compatible = "mediatek,mt7531";
 		reg = <31>;
 		reset-gpios = <&pio 42 GPIO_ACTIVE_HIGH>;
@@ -240,7 +220,6 @@
 		#interrupt-cells = <1>;
 		interrupt-parent = <&pio>;
 		interrupts = <41 IRQ_TYPE_LEVEL_HIGH>;
-		status = "okay";
 	};
 };
 
@@ -256,7 +235,33 @@
 	status = "disabled";
 };
 
+&pwm {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pwm_pins>;
+	status = "okay";
+};
+
+&pwm_pins {
+	mux {
+		/*
+		 * - pwm0   : PWM0 at PIN13
+		 * - pwm1_0 : PWM at PIN7  (share with JTAG)
+		 * - pwm2_0 : PWM2 at PIN12 (share with PCM)
+		 */
+		function = "pwm";
+		groups = "pwm0", "pwm1_0", "pwm2_0";
+	};
+};
+
+&spi2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi2_flash_pins>;
+	status = "okay";
+};
+
 &ssusb {
+	vusb33-supply = <&reg_3p3v>;
+	vbus-supply = <&reg_usb_5v>;
 	status = "okay";
 
 	/*
@@ -271,37 +276,38 @@
 	// reset-gpios = <&pca9555 8 GPIO_ACTIVE_HIGH>;
 };
 
-&switch31 {
+&switch {
 	ports {
 		#address-cells = <1>;
 		#size-cells = <0>;
 
 		port at 0 {
 			reg = <0>;
-			label = "lan0";
+			label = "lan1";
 		};
 
 		port at 1 {
 			reg = <1>;
-			label = "lan1";
+			label = "lan2";
 		};
 
 		port at 2 {
 			reg = <2>;
-			label = "lan2";
+			label = "lan3";
 		};
 
 		port at 3 {
 			reg = <3>;
-			label = "lan3";
+			label = "lan4";
 		};
 
 		port at 5 {
 			reg = <5>;
-			label = "sfp0";
-			phy-mode = "2500base-x";
+			label = "sfp";
 			sfp = <&sfp>;
+			phy-mode = "2500base-x";
 			managed = "in-band-status";
+			openwrt,netdev-name = "sfp-lan";
 		};
 
 		port at 6 {
@@ -328,10 +334,3 @@
 	pinctrl-0 = <&uart0_pins>;
 	status = "okay";
 };
-
-&spi2 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&spi2_flash_pins>;
-
-	status = "okay";
-};
diff --git a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
index 54a68bf57f..70aa84dca9 100644
--- a/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
+++ b/target/linux/mediatek/filogic/base-files/etc/board.d/02_network
@@ -94,7 +94,7 @@ mediatek_setup_interfaces()
 		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 sfp-lan" "wan sfp-wan"
 		;;
 	bananapi,bpi-r4-lite)
-		ucidef_set_interfaces_lan_wan "lan0 lan1 lan2 lan3 sfp0" "eth1"
+		ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 sfp-lan" wan
 		;;
 	bananapi,bpi-r4-2g5|\
 	bananapi,bpi-r4-poe)
@@ -206,7 +206,8 @@ mediatek_setup_macs()
 		;;
 	bananapi,bpi-r3|\
 	bananapi,bpi-r3-mini|\
-	bananapi,bpi-r4)
+	bananapi,bpi-r4|\
+	bananapi,bpi-r4-lite)
 		wan_mac=$(macaddr_add $(cat /sys/class/net/eth0/address) 1)
 		;;
 	h3c,magic-nx30-pro)
diff --git a/target/linux/mediatek/image/filogic.mk b/target/linux/mediatek/image/filogic.mk
index efcbe18712..3b5ce14d50 100644
--- a/target/linux/mediatek/image/filogic.mk
+++ b/target/linux/mediatek/image/filogic.mk
@@ -668,9 +668,8 @@ define Device/bananapi_bpi-r4-lite
   DEVICE_DTC_FLAGS := --pad 4096
   DEVICE_DTS_DIR := ../dts
   DEVICE_DTS_LOADADDR := 0x4ff00000
-  DEVICE_PACKAGES := mt7987-2p5g-phy-firmware kmod-eeprom-at24 \
-		     kmod-gpio-pca953x kmod-i2c-mux-pca954x kmod-rtc-pcf8563 \
-		     kmod-sfp e2fsprogs mkf2fs
+  DEVICE_PACKAGES := kmod-eeprom-at24 kmod-gpio-pca953x kmod-i2c-mux-pca954x \
+		     kmod-rtc-pcf8563 kmod-sfp kmod-usb3 e2fsprogs mkf2fs mt7987-2p5g-phy-firmware
   BLOCKSIZE := 128k
   PAGESIZE := 2048
   KERNEL_IN_UBI := 1




More information about the lede-commits mailing list