On Thu, Aug 01, 2019 at 12:07:57PM -0700, Matthias Kaehlcke wrote: > Add a phylib function for retrieving PHY LED configuration that > is specified in the device tree using the generic binding. LEDs > can be configured to be 'on' for a certain link speed or to blink > when there is TX/RX activity. > > Signed-off-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx> > --- > Changes in v4: > - patch added to the series > --- > drivers/net/phy/phy_device.c | 50 ++++++++++++++++++++++++++++++++++++ > include/linux/phy.h | 15 +++++++++++ > 2 files changed, 65 insertions(+) > > diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c > index 6b5cb87f3866..b4b48de45712 100644 > --- a/drivers/net/phy/phy_device.c > +++ b/drivers/net/phy/phy_device.c > @@ -2188,6 +2188,56 @@ static bool phy_drv_supports_irq(struct phy_driver *phydrv) > return phydrv->config_intr && phydrv->ack_interrupt; > } > > +int of_get_phy_led_cfg(struct phy_device *phydev, int led, > + struct phy_led_config *cfg) > +{ > + struct device_node *np, *child; > + const char *trigger; > + int ret; > + > + if (!IS_ENABLED(CONFIG_OF_MDIO)) > + return -ENOENT; > + > + np = of_find_node_by_name(phydev->mdio.dev.of_node, "leds"); > + if (!np) > + return -ENOENT; > + > + for_each_child_of_node(np, child) { > + u32 val; > + > + if (!of_property_read_u32(child, "reg", &val)) { > + if (val == (u32)led) > + break; > + } > + } Hi Matthias This is leaking references to np and child. In the past we have not cared about this too much, but we are now getting patches adding the missing releases. So it would be good to fix this. Andrew