Skip to content

Commit

Permalink
net: phy: marvell: Fix MDI-x polarity setting in 88e1118-compatible PHYs
Browse files Browse the repository at this point in the history
commit aec1283 upstream.

When setting up autonegotiation for 88E1118R and compatible PHYs,
a software reset of PHY is issued before setting up polarity.
This is incorrect as changes of MDI Crossover Mode bits are
disruptive to the normal operation and must be followed by a
software reset to take effect. Let's patch m88e1118_config_aneg()
to fix the issue mentioned before by invoking software reset
of the PHY just after setting up MDI-x polarity.

Fixes: 605f196 ("phy: Add support for Marvell 88E1118 PHY")
Signed-off-by: Pavel Parkhomenko <Pavel.Parkhomenko@baikalelectronics.ru>
Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
Suggested-by: Andrew Lunn <andrew@lunn.ch>
Cc: stable@vger.kernel.org
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Pavel Parkhomenko authored and gregkh committed Feb 16, 2022
1 parent 9338c17 commit 6b42352
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions drivers/net/phy/marvell.c
Original file line number Diff line number Diff line change
Expand Up @@ -1215,16 +1215,15 @@ static int m88e1118_config_aneg(struct phy_device *phydev)
{
int err;

err = genphy_soft_reset(phydev);
err = marvell_set_polarity(phydev, phydev->mdix_ctrl);
if (err < 0)
return err;

err = marvell_set_polarity(phydev, phydev->mdix_ctrl);
err = genphy_config_aneg(phydev);
if (err < 0)
return err;

err = genphy_config_aneg(phydev);
return 0;
return genphy_soft_reset(phydev);
}

static int m88e1118_config_init(struct phy_device *phydev)
Expand Down

0 comments on commit 6b42352

Please sign in to comment.