Re: [PATCH net] net: phy: dp83867: handle the active-high LED polarity mode
From: Paolo Abeni
Date: Tue Sep 08 2026 - 09:56:59 EST
On 9/3/26 4:28 AM, Donggeun Yoo wrote:
> Commit a274465cc3be ("net: phy: support 'active-high' property for PHY
> LEDs") added PHY_LED_ACTIVE_HIGH and made of_phy_led() set the matching
> bit in the modes mask when a LED node carries the 'active-high'
> property. dp83867 was not part of that series.
>
> dp83867_led_polarity_set() only recognizes PHY_LED_ACTIVE_LOW, so
> PHY_LED_ACTIVE_HIGH falls through to the default case and returns -EINVAL.
> of_phy_led() propagates the error, of_phy_leds() drops the LEDs registered
> so far and passes it on, and phy_probe() fails. A device tree marking a
> DP83867 LED as 'active-high', which leds/common.yaml allows and
> ethernet-phy.yaml references for led@N nodes, thus stops the PHY from
> probing.
>
> Active high is what the function programs when no polarity mode is
> requested at all, so the initial value of polarity already satisfies the
> request and only the case label is missing.
>
> The same series updated mxl-gpy in commit eb89c79c1b8f ("net: phy:
> mxl-gpy: correctly describe LED polarity") and aquantia in
> commit 9d55e68b19f2 ("net: phy: aquantia: correctly describe LED
> polarity override").
>
> Fixes: a274465cc3be ("net: phy: support 'active-high' property for PHY LEDs")
> Signed-off-by: Donggeun Yoo <donggeunyoo.kernel@xxxxxxxxx>
> ---
> Compile tested only. I have no DP83867 hardware, so the failure path was
> traced by inspection through of_phy_led(), of_phy_leds() and phy_probe().
>
> The polarity bit sense assumed here matches the datasheet: LEDCR2 bits
> 2, 6, 10 and 14 are LED_x_POLARITY with 1 = active high, 0 = active low,
> and they reset to 1 (SNLS484J, Table 8-24).
There are more drivers with the same issue, and Sashiko suggests to fix
all of them in the same series. I think instead this fix can be applied
standalone, to avoid more traffic on the ML.
Still an explict ack from someone actually owing the H/W would be nice.
Waiting a little more for that.
/P