Skip to content

Commit 06feac1

Browse files
danish-tikuba-moo
authored andcommitted
net: ti: icssg-prueth: Fix emac link speed handling
When link settings are changed emac->speed is populated by emac_adjust_link(). The link speed and other settings are then written into the DRAM. However if both ports are brought down after this and brought up again or if the operating mode is changed and a firmware reload is needed, the DRAM is cleared by icssg_config(). As a result the link settings are lost. Fix this by calling emac_adjust_link() after icssg_config(). This re populates the settings in the DRAM after a new firmware load. Fixes: 9facce8 ("net: ti: icssg-prueth: Fix firmware load sequence.") Signed-off-by: MD Danish Anwar <[email protected]> Reviewed-by: Andrew Lunn <[email protected]> Message-ID: <[email protected]> Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 2182153 commit 06feac1

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

drivers/net/ethernet/ti/icssg/icssg_prueth.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050
/* CTRLMMR_ICSSG_RGMII_CTRL register bits */
5151
#define ICSSG_CTRL_RGMII_ID_MODE BIT(24)
5252

53+
static void emac_adjust_link(struct net_device *ndev);
54+
5355
static int emac_get_tx_ts(struct prueth_emac *emac,
5456
struct emac_tx_ts_response *rsp)
5557
{
@@ -229,6 +231,10 @@ static int prueth_emac_common_start(struct prueth *prueth)
229231
ret = icssg_config(prueth, emac, slice);
230232
if (ret)
231233
goto disable_class;
234+
235+
mutex_lock(&emac->ndev->phydev->lock);
236+
emac_adjust_link(emac->ndev);
237+
mutex_unlock(&emac->ndev->phydev->lock);
232238
}
233239

234240
ret = prueth_emac_start(prueth);

0 commit comments

Comments
 (0)