mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 13:41:48 -04:00
net: stmmac: move reverse-"pcs" mode setup to stmmac_check_pcs_mode()
The broken reverse-mode, selected by snps,ps-speed, is configured when the platform provides a valid port speed and a PCS is being used. Both these remain constant after the driver has probed, so the software state doesn't need to be re-initialised each time stmmac_hw_setup() is called (which is called at open and resume time.) Move the software setup of reverse-mode to stmmac_check_pcs_mode() which is called from the driver probe function. Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Tested-by: Maxime Chevallier <maxime.chevallier@bootlin.com> Tested-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Link: https://patch.msgid.link/E1v9P6Y-0000000Aolr-0vLH@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
committed by
Jakub Kicinski
parent
70589b05a0
commit
c7b0d7874d
@@ -1091,6 +1091,19 @@ static void stmmac_check_pcs_mode(struct stmmac_priv *priv)
|
||||
netdev_dbg(priv->dev, "PCS SGMII support enabled\n");
|
||||
priv->hw->pcs = STMMAC_PCS_SGMII;
|
||||
}
|
||||
|
||||
/* PS and related bits will be programmed according to the speed */
|
||||
if (priv->hw->pcs) {
|
||||
int speed = priv->plat->mac_port_sel_speed;
|
||||
|
||||
if ((speed == SPEED_10) || (speed == SPEED_100) ||
|
||||
(speed == SPEED_1000)) {
|
||||
priv->hw->ps = speed;
|
||||
} else {
|
||||
dev_warn(priv->device, "invalid port speed\n");
|
||||
priv->hw->ps = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3435,19 +3448,6 @@ static int stmmac_hw_setup(struct net_device *dev)
|
||||
stmmac_set_umac_addr(priv, priv->hw, dev->dev_addr, 0);
|
||||
phylink_rx_clk_stop_unblock(priv->phylink);
|
||||
|
||||
/* PS and related bits will be programmed according to the speed */
|
||||
if (priv->hw->pcs) {
|
||||
int speed = priv->plat->mac_port_sel_speed;
|
||||
|
||||
if ((speed == SPEED_10) || (speed == SPEED_100) ||
|
||||
(speed == SPEED_1000)) {
|
||||
priv->hw->ps = speed;
|
||||
} else {
|
||||
dev_warn(priv->device, "invalid port speed\n");
|
||||
priv->hw->ps = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Initialize the MAC Core */
|
||||
stmmac_core_init(priv, priv->hw, dev);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user