net: phy: at803x: merge qca8081 slave seed function
authorLuo Jie <quic_luoj@quicinc.com>
Sun, 16 Jul 2023 08:49:20 +0000 (16:49 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Jul 2023 09:15:13 +0000 (10:15 +0100)
merge the seed enablement and seed value configuration into
one function, since the random seed value is needed to be
configured when the seed is enabled.

Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c

index 11388ef..1d4aef6 100644 (file)
@@ -1725,24 +1725,19 @@ static int qca808x_phy_fast_retrain_config(struct phy_device *phydev)
        return 0;
 }
 
-static int qca808x_phy_ms_random_seed_set(struct phy_device *phydev)
-{
-       u16 seed_value = get_random_u32_below(QCA808X_MASTER_SLAVE_SEED_RANGE);
-
-       return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
-                       QCA808X_MASTER_SLAVE_SEED_CFG,
-                       FIELD_PREP(QCA808X_MASTER_SLAVE_SEED_CFG, seed_value));
-}
-
 static int qca808x_phy_ms_seed_enable(struct phy_device *phydev, bool enable)
 {
-       u16 seed_enable = 0;
+       u16 seed_value;
 
-       if (enable)
-               seed_enable = QCA808X_MASTER_SLAVE_SEED_ENABLE;
+       if (!enable)
+               return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
+                               QCA808X_MASTER_SLAVE_SEED_ENABLE, 0);
 
+       seed_value = get_random_u32_below(QCA808X_MASTER_SLAVE_SEED_RANGE);
        return at803x_debug_reg_mask(phydev, QCA808X_PHY_DEBUG_LOCAL_SEED,
-                       QCA808X_MASTER_SLAVE_SEED_ENABLE, seed_enable);
+                       QCA808X_MASTER_SLAVE_SEED_CFG | QCA808X_MASTER_SLAVE_SEED_ENABLE,
+                       FIELD_PREP(QCA808X_MASTER_SLAVE_SEED_CFG, seed_value) |
+                       QCA808X_MASTER_SLAVE_SEED_ENABLE);
 }
 
 static int qca808x_config_init(struct phy_device *phydev)
@@ -1766,12 +1761,7 @@ static int qca808x_config_init(struct phy_device *phydev)
        if (ret)
                return ret;
 
-       /* Configure lower ramdom seed to make phy linked as slave mode */
-       ret = qca808x_phy_ms_random_seed_set(phydev);
-       if (ret)
-               return ret;
-
-       /* Enable seed */
+       /* Enable seed and configure lower ramdom seed to make phy linked as slave mode */
        ret = qca808x_phy_ms_seed_enable(phydev, true);
        if (ret)
                return ret;
@@ -1816,7 +1806,6 @@ static int qca808x_read_status(struct phy_device *phydev)
                if (phydev->master_slave_state == MASTER_SLAVE_STATE_ERR) {
                        qca808x_phy_ms_seed_enable(phydev, false);
                } else {
-                       qca808x_phy_ms_random_seed_set(phydev);
                        qca808x_phy_ms_seed_enable(phydev, true);
                }
        }