]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: stmmac: ethqos: clean up setting serdes speed
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Wed, 29 May 2024 08:40:59 +0000 (09:40 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 31 May 2024 01:30:11 +0000 (18:30 -0700)
There are four repititions of the same sequence of code, three of which
are identical. Pull these out into a separate function to improve
readability.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
Reviewed-by: Serge Semin <fancer.lancer@gmail.com>
Link: https://lore.kernel.org/r/E1sCErj-00EOQ9-Vh@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c

index e254b21fdb5986c4c7d620f4505f99ed0cb83c50..d9eed415b0b7bf96c0c4fcacdf1e5aa0f7e21548 100644 (file)
@@ -605,6 +605,14 @@ static int ethqos_configure_rgmii(struct qcom_ethqos *ethqos)
        return 0;
 }
 
+static void ethqos_set_serdes_speed(struct qcom_ethqos *ethqos, int speed)
+{
+       if (ethqos->serdes_speed != speed) {
+               phy_set_speed(ethqos->serdes_phy, speed);
+               ethqos->serdes_speed = speed;
+       }
+}
+
 /* On interface toggle MAC registers gets reset.
  * Configure MAC block for SGMII on ethernet phy link up
  */
@@ -622,9 +630,7 @@ static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos)
                rgmii_updatel(ethqos, RGMII_CONFIG2_RGMII_CLK_SEL_CFG,
                              RGMII_CONFIG2_RGMII_CLK_SEL_CFG,
                              RGMII_IO_MACRO_CONFIG2);
-               if (ethqos->serdes_speed != SPEED_2500)
-                       phy_set_speed(ethqos->serdes_phy, SPEED_2500);
-               ethqos->serdes_speed = SPEED_2500;
+               ethqos_set_serdes_speed(ethqos, SPEED_2500);
                stmmac_pcs_ctrl_ane(priv, priv->ioaddr, 0, 0, 0);
                break;
        case SPEED_1000:
@@ -632,16 +638,12 @@ static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos)
                rgmii_updatel(ethqos, RGMII_CONFIG2_RGMII_CLK_SEL_CFG,
                              RGMII_CONFIG2_RGMII_CLK_SEL_CFG,
                              RGMII_IO_MACRO_CONFIG2);
-               if (ethqos->serdes_speed != SPEED_1000)
-                       phy_set_speed(ethqos->serdes_phy, SPEED_1000);
-               ethqos->serdes_speed = SPEED_1000;
+               ethqos_set_serdes_speed(ethqos, SPEED_1000);
                stmmac_pcs_ctrl_ane(priv, priv->ioaddr, 1, 0, 0);
                break;
        case SPEED_100:
                val |= ETHQOS_MAC_CTRL_PORT_SEL | ETHQOS_MAC_CTRL_SPEED_MODE;
-               if (ethqos->serdes_speed != SPEED_1000)
-                       phy_set_speed(ethqos->serdes_phy, SPEED_1000);
-               ethqos->serdes_speed = SPEED_1000;
+               ethqos_set_serdes_speed(ethqos, SPEED_1000);
                stmmac_pcs_ctrl_ane(priv, priv->ioaddr, 1, 0, 0);
                break;
        case SPEED_10:
@@ -651,9 +653,7 @@ static int ethqos_configure_sgmii(struct qcom_ethqos *ethqos)
                              FIELD_PREP(RGMII_CONFIG_SGMII_CLK_DVDR,
                                         SGMII_10M_RX_CLK_DVDR),
                              RGMII_IO_MACRO_CONFIG);
-               if (ethqos->serdes_speed != SPEED_1000)
-                       phy_set_speed(ethqos->serdes_phy, ethqos->speed);
-               ethqos->serdes_speed = SPEED_1000;
+               ethqos_set_serdes_speed(ethqos, SPEED_1000);
                stmmac_pcs_ctrl_ane(priv, priv->ioaddr, 1, 0, 0);
                break;
        }