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
