Skip to content

Commit 451a897

Browse files
eghidoliUlrich Hecht
authored andcommitted
net: phy: dp83867: Disable EEE support as not implemented
[ Upstream commit 84a905290cb4c3d9a71a9e3b2f2e02e031e7512f ] While the DP83867 PHYs report EEE capability through their feature registers, the actual hardware does not support EEE (see Links). When the connected MAC enables EEE, it causes link instability and communication failures. The issue is reproducible with a iMX8MP and relevant stmmac ethernet port. Since the introduction of phylink-managed EEE support in the stmmac driver, EEE is now enabled by default, leading to issues on systems using the DP83867 PHY. Call phy_disable_eee during phy initialization to prevent EEE from being enabled on DP83867 PHYs. Link: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1445244/dp83867ir-dp83867-disable-eee-lpi Link: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/658638/dp83867ir-eee-energy-efficient-ethernet Fixes: 2a10154 ("net: phy: dp83867: Add TI dp83867 phy") Cc: stable@vger.kernel.org Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/20251023144857.529566-1-ghidoliemanuele@gmail.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> [ replaced phy_disable_eee() call with direct eee_broken_modes assignment ] Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Ulrich Hecht <uli@kernel.org>
1 parent ea5055c commit 451a897

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

drivers/net/phy/dp83867.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,12 @@ static int dp83867_config_init(struct phy_device *phydev)
248248
phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, val);
249249
}
250250

251+
/* Although the DP83867 reports EEE capability through the
252+
* MDIO_PCS_EEE_ABLE and MDIO_AN_EEE_ADV registers, the feature
253+
* is not actually implemented in hardware.
254+
*/
255+
phydev->eee_broken_modes = MDIO_EEE_100TX | MDIO_EEE_1000T;
256+
251257
if (phy_interface_is_rgmii(phydev)) {
252258
val = phy_read(phydev, MII_DP83867_PHYCTRL);
253259
if (val < 0)

0 commit comments

Comments
 (0)