net: phy: Add MediaTek built-in 2.5Gb ethernet PHY driver
authorWeijie Gao <weijie.gao@mediatek.com>
Mon, 8 Sep 2025 08:34:18 +0000 (16:34 +0800)
committerTom Rini <trini@konsulko.com>
Thu, 18 Sep 2025 21:43:05 +0000 (15:43 -0600)
commitb4b266fc139ad0a8856db6a7495f7e9a2cc27a6f
tree35437c33c30db4743ef6b56a88722c0a442d5d6d
parent465d76a0381dae83942f81329400b1fa2487185a
net: phy: Add MediaTek built-in 2.5Gb ethernet PHY driver

The MediaTek MT7987/MT7988 SoCs features a built-in 2.5Gb PHY
connected to GMAC1. The PHY supports 10/100/1000/2500 Mbps
full-duplex only.

The PHY requires one or two firmware files. Firmware for MT7988 has
already been added to upstream: mediatek/mt7988/i2p5ge-phy-pmb.bin.
MT7987 has two firmware files which will be add to upstream later:
i2p5ge-phy-pmb.bin and i2p5ge-phy-DSPBitTb.bin.

Environment variable can be set for firmware data loading:
mt7987_i2p5ge_load_pmb_firmware for i2p5ge-phy-pmb.bin
mt7987_i2p5ge_load_dspbit_firmware for i2p5ge-phy-DSPBitTb.bin
mt7988_i2p5ge_load_pmb_firmware for i2p5ge-phy-pmb.bin

This driver allows dedicated weak functions to be overridden by
board to provide the firmware data:
mt7987_i2p5ge_get_fw() for MT7987
mt7988_i2p5ge_get_fw() for MT7988

To enable the PHY, add the following not to device tree:
&eth1 {
status = "okay";
phy-mode = "xgmii";
phy-handle = <&phy15>;

phy15: ethernet-phy@15 {
compatible = "ethernet-phy-ieee802.3-c45";
reg = <15>;
phy-mode = "xgmii";
};
};

Signed-off-by: Sky Huang <SkyLake.Huang@mediatek.com>
Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
drivers/misc/fs_loader.c
drivers/net/phy/Kconfig
drivers/net/phy/Makefile
drivers/net/phy/mediatek/Kconfig [new file with mode: 0644]
drivers/net/phy/mediatek/Makefile [new file with mode: 0644]
drivers/net/phy/mediatek/mtk-2p5ge.c [new file with mode: 0644]
drivers/net/phy/mediatek/mtk-phy-lib.c [new file with mode: 0644]
drivers/net/phy/mediatek/mtk.h [new file with mode: 0644]