Re: [PATCH net-next] net: phy: dp83822: Add support for PHY LEDs on DP83822

Andrew Lunn
2024-12-17T17:13:34Z

> +static int dp83822_led_hw_control_set(struct phy_device *phydev, u8 index,
> + unsigned long rules)
> +{
> + int mode;
> +
> + mode = dp83822_led_mode(index, rules);
> + if (mode < 0)
> + return mode;
> +
> + if (index == DP83822_LED_INDEX_LED_0 || index == DP83822_LED_INDEX_COL_GPIO2)
> + return phy_modify_mmd(phydev, MDIO_MMD_VEND2,
> + MII_DP83822_MLEDCR, DP83822_MLEDCR_CFG,
> + FIELD_PREP(DP83822_MLEDCR_CFG, mode));
> + else if (index == DP83822_LED_INDEX_LED_1_GPIO1)
> + return phy_modify_mmd(phydev, MDIO_MMD_VEND2,
> + MII_DP83822_LEDCFG1,
> + DP83822_LEDCFG1_LED1_CTRL,
> + FIELD_PREP(DP83822_LEDCFG1_LED1_CTRL,
> + mode));
> + else
> + return phy_modify_mmd(phydev, MDIO_MMD_VEND2,
> + MII_DP83822_LEDCFG1,
> + DP83822_LEDCFG1_LED3_CTRL,
> + FIELD_PREP(DP83822_LEDCFG1_LED3_CTRL,
> + mode));

index is taken direct from DT. Somebody might have:

leds {
#address-cells = <1>;
#size-cells = <0>;

led@42 {
reg = <42>;
color = <LED_COLOR_ID_WHITE>;
function = LED_FUNCTION_LAN;
default-state = "keep";
};
};

so you should not assume if it is not 0, 1 or 2, then it must be
3. Please always validate index.

Andrew

---
pw-bot: cr