net: stmmac: hw->ps becomes hw->reverse_sgmii_enable

After a lot of digging, it seems that the oddly named hw->ps member
is all about setting the core into reverse SGMII speed. When set to
a non-zero value, it:

1. Configures the MAC at initialisation time to operate at a specific
   speed.
2. It _incorrectly_ enables the transmitter (GMAC_CONFIG_TE) which
   makes no sense, rather than enabling the "transmit configuration"
   bit (GMAC_CONFIG_TC).
3. It configures the SGMII rate adapter layer to retrieve its speed
   setting from the MAC configuration register rather than the PHY.

In the previous commit, we removed (1) and (2) as phylink overwrites
the configuration set at that step.

Thus, the only functional aspect is (3), which is a boolean operation.
This means there is no need to store the actual speed, and just have a
boolean flag.

Convert the priv->ps member to a boolean, and rename it to
priv->reverse_sgmii_enable to make it more understandable.

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/E1v9P6i-0000000Aom3-1y2y@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Russell King (Oracle)
2025-10-16 15:37:32 +01:00
committed by Jakub Kicinski
parent 412d5f32cb
commit 5d1e7621f8
2 changed files with 4 additions and 4 deletions

View File

@@ -599,13 +599,13 @@ struct mac_device_info {
unsigned int mcast_bits_log2;
unsigned int rx_csum;
unsigned int pcs;
unsigned int ps;
unsigned int xlgmac;
unsigned int num_vlan;
u32 vlan_filter[32];
bool vlan_fail_q_en;
u8 vlan_fail_q;
bool hw_vlan_en;
bool reverse_sgmii_enable;
};
struct stmmac_rx_routing {

View File

@@ -1096,12 +1096,12 @@ static void stmmac_check_pcs_mode(struct stmmac_priv *priv)
case SPEED_10:
case SPEED_100:
case SPEED_1000:
priv->hw->ps = speed;
priv->hw->reverse_sgmii_enable = true;
break;
default:
dev_warn(priv->device, "invalid port speed\n");
priv->hw->ps = 0;
priv->hw->reverse_sgmii_enable = false;
break;
}
}
@@ -3486,7 +3486,7 @@ static int stmmac_hw_setup(struct net_device *dev)
}
if (priv->hw->pcs)
stmmac_pcs_ctrl_ane(priv, 1, priv->hw->ps);
stmmac_pcs_ctrl_ane(priv, 1, priv->hw->reverse_sgmii_enable);
/* set TX and RX rings length */
stmmac_set_rings_length(priv);