Re: [PATCH net-next v3 1/3] net: phy: mxl-86110: add basic support for led_brightness_set op

From: Andrew Lunn
Date: Wed Aug 20 2025 - 08:41:01 EST


> +# define MXL86110_COM_EXT_LED_GEN_CFG_LFM(x) ({ typeof(x) _x = (x); \
> + GENMASK(1 + (3 * (_x)), \
> + 3 * (_x)); })

> +static int mxl86110_led_brightness_set(struct phy_device *phydev,
> + u8 index, enum led_brightness value)
> +{
> + u16 mask, set;
> + int ret;
> +
> + if (index >= MXL86110_MAX_LEDS)
> + return -EINVAL;
> +
> + /* force manual control */
> + set = MXL86110_COM_EXT_LED_GEN_CFG_LFE(index);
> + /* clear previous force mode */
> + mask = MXL86110_COM_EXT_LED_GEN_CFG_LFM(index);
> +
> + /* force LED to be permanently on */
> + if (value != LED_OFF)
> + set |= MXL86110_COM_EXT_LED_GEN_CFG_LFME(index);

That is particularly complex. We know index is a u8, so why not
GENMASK_U8(1 + 3 * index, 3 * index)? But set is a u16, so
GENMASK_U16() would also be valid.

Andrew