mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-07-08 18:13:59 +02:00
net: phy: dp83867: Disable EEE support as not implemented
[ Upstream commit84a905290c] 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:2a10154abc("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>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
56612e80a8
commit
12a895faa0
@@ -674,6 +674,12 @@ static int dp83867_config_init(struct phy_device *phydev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Although the DP83867 reports EEE capability through the
|
||||
* MDIO_PCS_EEE_ABLE and MDIO_AN_EEE_ADV registers, the feature
|
||||
* is not actually implemented in hardware.
|
||||
*/
|
||||
phydev->eee_broken_modes = MDIO_EEE_100TX | MDIO_EEE_1000T;
|
||||
|
||||
if (phy_interface_is_rgmii(phydev) ||
|
||||
phydev->interface == PHY_INTERFACE_MODE_SGMII) {
|
||||
val = phy_read(phydev, MII_DP83867_PHYCTRL);
|
||||
|
||||
Reference in New Issue
Block a user