From: Wei Fang <[email protected]>

Since phylink only passes valid speed values to mac_link_up, the switch
statement with its default fallback to SPEED_10 is unnecessary. Replace
it with a direct call to PCR_PSPEED_VAL(). Also update PCR_PSPEED_VAL()
to use FIELD_PREP() for proper field masking instead of an open-coded
shift.

Signed-off-by: Wei Fang <[email protected]>
---
 .../net/ethernet/freescale/enetc/enetc4_hw.h  |  2 +-
 .../net/ethernet/freescale/enetc/enetc4_pf.c  | 19 +++----------------
 2 files changed, 4 insertions(+), 17 deletions(-)

diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h 
b/drivers/net/ethernet/freescale/enetc/enetc4_hw.h
index 6a8f2ed56017..dea1fd0b8175 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc4_hw.h
+++ b/drivers/net/ethernet/freescale/enetc/enetc4_hw.h
@@ -148,7 +148,7 @@
 #define  PCR_L2DOSE                    BIT(4)
 #define  PCR_TIMER_CS                  BIT(8)
 #define  PCR_PSPEED                    GENMASK(29, 16)
-#define  PCR_PSPEED_VAL(speed)         (((speed) / 10 - 1) << 16)
+#define  PCR_PSPEED_VAL(s)             FIELD_PREP(PCR_PSPEED, ((s) / 10 - 1))
 
 /* Port MAC address register 0/1 */
 #define ENETC4_PMAR0                   0x4020
diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c 
b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c
index b966637572a7..db7bad2c3cbd 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c
@@ -631,23 +631,10 @@ static void enetc4_set_port_speed(struct enetc_ndev_priv 
*priv, int speed)
        if (speed == old_speed)
                return;
 
-       val = enetc_port_rd(&priv->si->hw, ENETC4_PCR);
-       val &= ~PCR_PSPEED;
-
-       switch (speed) {
-       case SPEED_100:
-       case SPEED_1000:
-       case SPEED_2500:
-       case SPEED_10000:
-               val |= (PCR_PSPEED & PCR_PSPEED_VAL(speed));
-               break;
-       case SPEED_10:
-       default:
-               val |= (PCR_PSPEED & PCR_PSPEED_VAL(SPEED_10));
-       }
-
-       priv->speed = speed;
+       val = enetc_port_rd(&priv->si->hw, ENETC4_PCR) & (~PCR_PSPEED);
+       val |= PCR_PSPEED_VAL(speed);
        enetc_port_wr(&priv->si->hw, ENETC4_PCR, val);
+       priv->speed = speed;
 }
 
 static void enetc4_set_rgmii_mac(struct enetc_pf *pf, int speed, int duplex)
-- 
2.34.1


Reply via email to