[BPI-R4] 2.5GbE interface, firmware handling issue

Hi folks, I am using BPI-R4 with the 2.5GbE interface and there seems to be something fishy with the driver/firmware.

What happens is that the device is visible from the OS, but plugging the cable never brings the link up.

A quick thread in the banana-pi forum directs the investigation in the order of firmware loading during the boot process, for simplicity below the quoted reply

What I do see myself from the device is the following

root@BPI-R4:~# ethtool eth1
Settings for eth1:
	Supported ports: [ ]
	Supported link modes:   100baseT/Full
	                        1000baseT/Full
	                        2500baseT/Full
	Supported pause frame use: Symmetric Receive-only
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  100baseT/Full
	                        1000baseT/Full
	                        2500baseT/Full
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: Unknown!
	Duplex: Unknown! (255)
	Port: Twisted Pair
	PHYAD: 15
	Transceiver: external
	Auto-negotiation: on
	MDI-X: Unknown
	Current message level: 0x000000ff (255)
			       drv probe link timer ifdown ifup rx_err tx_err
	Link detected: no
root@BPI-R4:~# dmesg
[...]
[    0.000000] Linux version 6.6.52 (builder@buildhost) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r27608-3f98f68573) 13.3.0, GNU ld (GNU Binutils) 2.42) #0 SMP Sun Sep 29 22:04:34 2024
[    0.000000] Machine model: Bananapi BPI-R4 2.5GE PoE
[...]
[    3.807402] FIT: Detected U-Boot 2024.07-OpenWrt-r27466-f368e2d5ec
[    3.813580] FIT: Selected configuration: "config-mt7988a-bananapi-bpi-r4-poe" (OpenWrt bananapi_bpi-r4-poe)
[    3.823317] FIT:           kernel sub-image 0x00001000..0x005a3441 "kernel-1" (ARM64 OpenWrt Linux-6.6.52)
[    3.833052] FIT:          flat_dt sub-image 0x005a4000..0x005ae9ae "fdt-1" (ARM64 OpenWrt bananapi_bpi-r4-poe device tree blob)
[    3.844610] FIT:          flat_dt sub-image 0x005af000..0x005af609 "fdt-mt7988a-bananapi-bpi-r4-emmc" (ARM64 OpenWrt bananapi_bpi-r4-poe device tree overlay mt7988a-bananapi-bpi-r4-emmc)
[    3.861289] FIT:          flat_dt sub-image 0x005b0000..0x005b011c "fdt-mt7988a-bananapi-bpi-r4-rtc" (ARM64 OpenWrt bananapi_bpi-r4-poe device tree overlay mt7988a-bananapi-bpi-r4-rtc)
[    3.877792] FIT:          flat_dt sub-image 0x005b1000..0x005b15c1 "fdt-mt7988a-bananapi-bpi-r4-sd" (ARM64 OpenWrt bananapi_bpi-r4-poe device tree overlay mt7988a-bananapi-bpi-r4-sd)
[    3.894120] FIT:          flat_dt sub-image 0x005b2000..0x005b28f0 "fdt-mt7988a-bananapi-bpi-r4-wifi-mt7996a" (ARM64 OpenWrt bananapi_bpi-r4-poe device tree overlay mt7988a-bananapi-bpi-r4-wifi-mt7996a)
[    3.912182] FIT:       filesystem sub-image 0x005b3000..0x00efbfff "rootfs-1" (ARM64 OpenWrt bananapi_bpi-r4-poe rootfs)
[    3.923393] block mmcblk0p7: mapped 1 uImage.FIT filesystem sub-image as /dev/fit0
[    3.931131] block mmcblk0p7: mapped remaining space as /dev/fitrw
[    4.062656] mtk_soc_eth 15100000.ethernet: generated random MAC address 65:74:68:25:64:00
[    4.075235] mtk_soc_eth 15100000.ethernet eth0: mediatek frame engine at 0xffffffc082880000, irq 103
[    4.084923] mtk_soc_eth 15100000.ethernet eth1: mediatek frame engine at 0xffffffc082880000, irq 103
[    4.094604] mtk_soc_eth 15100000.ethernet eth2: mediatek frame engine at 0xffffffc082880000, irq 103
[    4.186789] mt7530-mmio 15020000.switch: configuring for fixed/internal link mode
[    4.194301] mt7530-mmio 15020000.switch: Link is Up - 10Gbps/Full - flow control rx/tx
[    4.221076] mt7530-mmio 15020000.switch wan (uninitialized): PHY [mt7530-0:00] driver [MediaTek MT7988 PHY] (irq=112)
[    4.258805] mt7530-mmio 15020000.switch lan1 (uninitialized): PHY [mt7530-0:01] driver [MediaTek MT7988 PHY] (irq=113)
[    4.296498] mt7530-mmio 15020000.switch lan2 (uninitialized): PHY [mt7530-0:02] driver [MediaTek MT7988 PHY] (irq=114)
[    4.334518] mt7530-mmio 15020000.switch lan3 (uninitialized): PHY [mt7530-0:03] driver [MediaTek MT7988 PHY] (irq=115)
[...]
[   13.851327] MediaTek MT7988 2.5GbE PHY mdio-bus:0f: Firmware date code: 0/0/0, version: 0.0
[   13.867769] MediaTek MT7988 2.5GbE PHY mdio-bus:0f: Firmware loading/trigger ok.
[   13.876094] mtk_soc_eth 15100000.ethernet eth1: PHY [mdio-bus:0f] driver [MediaTek MT7988 2.5GbE PHY] (irq=POLL)
[   13.886346] mtk_soc_eth 15100000.ethernet eth1: configuring for phy/internal link mode
[   13.895657] br-lan: port 1(eth1) entered blocking state
[   13.900895] br-lan: port 1(eth1) entered disabled state
[   13.906155] mtk_soc_eth 15100000.ethernet eth1: entered allmulticast mode
[   13.913048] mtk_soc_eth 15100000.ethernet eth1: entered promiscuous mode
[...]

So initially the suspicion was

[ 13.851327] MediaTek MT7988 2.5GbE PHY mdio-bus:0f: Firmware date code: 0/0/0, version: 0.0

but I do have mt7988-2p5g-phy-firmware installed.

Any ideas?