Message ID | 20210601005155.27997-7-kabel@kernel.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | Add support for offloading netdev trigger to HW + example implementation for Turris Omnia | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
On Tue, Jun 01, 2021 at 02:51:51AM +0200, Marek Behún wrote: > Move setting of the LED_UNREGISTERING before deactivating the trigger in > led_classdev_unregister(). > > It can be useful for a LED trigger to know whether it is being > deactivated due to the LED being unregistered. This makes it possible > for LED drivers which implement trigger offloading to leave the LED in > HW triggering mode when the LED is unregistered, instead of disabling > it. Humm, i'm not sure that is a good idea. I don't expect my Ethernet switch to keep forwarding frames when i unload the driver. Andrew
On Tue, 1 Jun 2021 23:12:57 +0200 Andrew Lunn <andrew@lunn.ch> wrote: > On Tue, Jun 01, 2021 at 02:51:51AM +0200, Marek Behún wrote: > > Move setting of the LED_UNREGISTERING before deactivating the > > trigger in led_classdev_unregister(). > > > > It can be useful for a LED trigger to know whether it is being > > deactivated due to the LED being unregistered. This makes it > > possible for LED drivers which implement trigger offloading to > > leave the LED in HW triggering mode when the LED is unregistered, > > instead of disabling it. > > Humm, i'm not sure that is a good idea. I don't expect my Ethernet > switch to keep forwarding frames when i unload the driver. We want to make it so that when leds-turris-omnia driver is unloaded, the LEDs will start blinking in HW mode as they did before the driver was loaded. This is needed for that. Marek
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 2e495ff67856..0486129a7f31 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c @@ -436,6 +436,8 @@ void led_classdev_unregister(struct led_classdev *led_cdev) if (IS_ERR_OR_NULL(led_cdev->dev)) return; + led_cdev->flags |= LED_UNREGISTERING; + #ifdef CONFIG_LEDS_TRIGGERS down_write(&led_cdev->trigger_lock); if (led_cdev->trigger) @@ -443,8 +445,6 @@ void led_classdev_unregister(struct led_classdev *led_cdev) up_write(&led_cdev->trigger_lock); #endif - led_cdev->flags |= LED_UNREGISTERING; - /* Stop blinking */ led_stop_software_blink(led_cdev);
Move setting of the LED_UNREGISTERING before deactivating the trigger in led_classdev_unregister(). It can be useful for a LED trigger to know whether it is being deactivated due to the LED being unregistered. This makes it possible for LED drivers which implement trigger offloading to leave the LED in HW triggering mode when the LED is unregistered, instead of disabling it. Signed-off-by: Marek Behún <kabel@kernel.org> --- drivers/leds/led-class.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)