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 - 2025 Red Hat, Inc.