Re: [PATCH 1/2] net: phy: microchip: add downshift tunable support for LAN88xx

From: Andrew Lunn

Date: Mon Mar 30 2026 - 09:04:18 EST


> +static int lan88xx_set_downshift(struct phy_device *phydev, u8 cnt)
> +{
> + u32 mask = LAN78XX_PHY_CTRL3_DOWNSHIFT_CTRL_MASK |
> + LAN78XX_PHY_CTRL3_AUTO_DOWNSHIFT;
> + u32 val;
> +
> + if (cnt == DOWNSHIFT_DEV_DISABLE)
> + return phy_modify_paged(phydev, 1, LAN78XX_PHY_CTRL3,
> + LAN78XX_PHY_CTRL3_AUTO_DOWNSHIFT, 0);
> +
> + if (cnt == DOWNSHIFT_DEV_DEFAULT_COUNT)
> + cnt = 2;
> +
> + switch (cnt) {
> + case 2:
> + val = LAN78XX_PHY_CTRL3_DOWNSHIFT_CTRL_2;
> + break;
> + case 3:
> + val = LAN78XX_PHY_CTRL3_DOWNSHIFT_CTRL_3;
> + break;
> + case 4:
> + val = LAN78XX_PHY_CTRL3_DOWNSHIFT_CTRL_4;
> + break;
> + case 5:
> + val = LAN78XX_PHY_CTRL3_DOWNSHIFT_CTRL_5;
> + break;
> + default:
> + return -EINVAL;

And this could be a range check followed by a FIELD_PREP(cnt - 2);

Andrew