The old and removed platform code had support for assigning a value for
the LED pin for when the default is not correct. Effectively a fix for a
non working LED.
For setting an LED to active high, a negation of led-active-low is used,
as two drivers currently use that and no drivers use led-active-high or
something similar.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/wireless/ath/ath9k/init.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index c911b178dcc2..7826b113235d 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -662,6 +662,17 @@ static int ath9k_of_init(struct ath_softc *sc)
if (ret == -EPROBE_DEFER)
return ret;
+ np = of_get_child_by_name(np, "led");
+ if (np && of_device_is_available(np)) {
+ u32 led_pin;
+
+ if (!of_property_read_u32(np, "reg", &led_pin))
+ ah->led_pin = led_pin;
+
+ ah->config.led_active_high = !of_property_read_bool(np, "led-active-low");
+ of_node_put(np);
+ }
+
return 0;
}
--
2.50.1
On 12/08/2025 21:23, Rosen Penev wrote:
> The old and removed platform code had support for assigning a value for
> the LED pin for when the default is not correct. Effectively a fix for a
> non working LED.
>
> For setting an LED to active high, a negation of led-active-low is used,
> as two drivers currently use that and no drivers use led-active-high or
> something similar.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
> drivers/net/wireless/ath/ath9k/init.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
> index c911b178dcc2..7826b113235d 100644
> --- a/drivers/net/wireless/ath/ath9k/init.c
> +++ b/drivers/net/wireless/ath/ath9k/init.c
> @@ -662,6 +662,17 @@ static int ath9k_of_init(struct ath_softc *sc)
> if (ret == -EPROBE_DEFER)
> return ret;
>
> + np = of_get_child_by_name(np, "led");
> + if (np && of_device_is_available(np)) {
You are open-coding of_get_available_child_by_name().
> + u32 led_pin;
> +
> + if (!of_property_read_u32(np, "reg", &led_pin))
> + ah->led_pin = led_pin;
> +
> + ah->config.led_active_high = !of_property_read_bool(np, "led-active-low");
> + of_node_put(np);
> + }
Leaking OF node.
> +
> return 0;
> }
>
Best regards,
Krzysztof
On Wed, Aug 13, 2025 at 1:20 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On 12/08/2025 21:23, Rosen Penev wrote:
> > The old and removed platform code had support for assigning a value for
> > the LED pin for when the default is not correct. Effectively a fix for a
> > non working LED.
> >
> > For setting an LED to active high, a negation of led-active-low is used,
> > as two drivers currently use that and no drivers use led-active-high or
> > something similar.
> >
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > ---
> > drivers/net/wireless/ath/ath9k/init.c | 11 +++++++++++
> > 1 file changed, 11 insertions(+)
> >
> > diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
> > index c911b178dcc2..7826b113235d 100644
> > --- a/drivers/net/wireless/ath/ath9k/init.c
> > +++ b/drivers/net/wireless/ath/ath9k/init.c
> > @@ -662,6 +662,17 @@ static int ath9k_of_init(struct ath_softc *sc)
> > if (ret == -EPROBE_DEFER)
> > return ret;
> >
> > + np = of_get_child_by_name(np, "led");
> > + if (np && of_device_is_available(np)) {
>
> You are open-coding of_get_available_child_by_name().
Will fix.
>
> > + u32 led_pin;
> > +
> > + if (!of_property_read_u32(np, "reg", &led_pin))
> > + ah->led_pin = led_pin;
> > +
> > + ah->config.led_active_high = !of_property_read_bool(np, "led-active-low");
> > + of_node_put(np);
> > + }
>
> Leaking OF node.
Not following here.
>
> > +
> > return 0;
> > }
> >
>
>
> Best regards,
> Krzysztof
On 14/08/2025 00:59, Rosen Penev wrote: >> >>> + u32 led_pin; >>> + >>> + if (!of_property_read_u32(np, "reg", &led_pin)) >>> + ah->led_pin = led_pin; >>> + >>> + ah->config.led_active_high = !of_property_read_bool(np, "led-active-low"); >>> + of_node_put(np); >>> + } >> >> Leaking OF node. > > Not following here. You miss proper cleanup, leaking of node. Best regards, Krzysztof
© 2016 - 2026 Red Hat, Inc.