diff options
| author | Bjørn Mork | 2025-02-05 07:37:51 +0000 |
|---|---|---|
| committer | Sander Vanheule | 2025-02-25 19:53:30 +0000 |
| commit | ccf54ca6732ed6b70d0039cf4c17d7c832aa5d06 (patch) | |
| tree | b58e838877775a37427e666372934094c8441896 | |
| parent | 736229ba991ba69c6fdc7334353a43d9b1da1bdd (diff) | |
| download | openwrt-ccf54ca6732ed6b70d0039cf4c17d7c832aa5d06.tar.gz | |
realtek: sfp: add mdio bus only for sfps with a phy
The SMBus patch broke the logic and caused the driver to always
register an mdio bus, regardless of the sfp. Restore original
logic.
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Link: https://github.com/openwrt/openwrt/pull/17950
Signed-off-by: Sander Vanheule <sander@svanheule.net>
| -rw-r--r-- | target/linux/realtek/patches-6.6/714-net-phy-sfp-add-support-for-SMBus.patch | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/target/linux/realtek/patches-6.6/714-net-phy-sfp-add-support-for-SMBus.patch b/target/linux/realtek/patches-6.6/714-net-phy-sfp-add-support-for-SMBus.patch index 76e2d76506..cb9a1da7e6 100644 --- a/target/linux/realtek/patches-6.6/714-net-phy-sfp-add-support-for-SMBus.patch +++ b/target/linux/realtek/patches-6.6/714-net-phy-sfp-add-support-for-SMBus.patch @@ -107,21 +107,20 @@ Signed-off-by: Antoine Tenart <antoine.tenart@bootlin.com> static void sfp_i2c_mdiobus_destroy(struct sfp *sfp) { mdiobus_unregister(sfp->i2c_mii); -@@ -1871,8 +1948,15 @@ static void sfp_sm_fault(struct sfp *sfp +@@ -1875,9 +1952,15 @@ static void sfp_sm_fault(struct sfp *sfp static int sfp_sm_add_mdio_bus(struct sfp *sfp) { - if (sfp->mdio_protocol != MDIO_I2C_NONE) -- return sfp_i2c_mdiobus_create(sfp); -+ if (i2c_check_functionality(sfp->i2c, I2C_FUNC_I2C)) { -+ if (sfp->mdio_protocol != MDIO_I2C_NONE) -+ return sfp_i2c_mdiobus_create(sfp); -+ ++ if (sfp->mdio_protocol == MDIO_I2C_NONE) + return 0; -+ } + ++ if (i2c_check_functionality(sfp->i2c, I2C_FUNC_I2C)) + return sfp_i2c_mdiobus_create(sfp); + + if (i2c_check_functionality(sfp->i2c, I2C_FUNC_SMBUS_BYTE_DATA)) + return sfp_sm_mdiobus_create(sfp); - ++ return 0; } + |