Linux LED subsystem development
 help / color / mirror / Atom feed
From: Jacek Anaszewski <jacek.anaszewski@gmail.com>
To: Craig McQueen <craig@mcqueen.au>
Cc: linux-leds <linux-leds@vger.kernel.org>
Subject: Re: [PATCH] led-triggers: accept "default" written to sysfs trigger attr
Date: Mon, 10 Mar 2025 21:18:18 +0100	[thread overview]
Message-ID: <a5a1b224-8f9f-4b66-ab7e-fe388a82ecc5@gmail.com> (raw)
In-Reply-To: <f1819943-ab2e-4a37-a4be-88a4a5f42437@gmail.com>

On 3/9/25 19:50, Jacek Anaszewski wrote:
> 
> 
> On 3/9/25 12:33, Craig McQueen wrote:
>> On Sat, 08 Mar 2025 04:10:49 +1100 Jacek Anaszewski  wrote:
>>   > On 3/7/25 17:50, Jacek Anaszewski wrote:
>>   > > Hi Craig,
>>   > >
>>   > > On 3/6/25 23:55, Craig McQueen wrote:
>>   > >> If the text "default" is written to the LED's sysfs 'trigger' 
>> attr, then
>>   > >> call led_trigger_set_default() to set the LED to its default 
>> trigger.
>>   > >> ---
>>   > >>   drivers/leds/led-triggers.c | 5 +++++
>>   > >>   1 file changed, 5 insertions(+)
>>   > >>
>>   > >> diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led- 
>> triggers.c
>>   > >> index b2d40f87a5ff..f2bc3bb5062d 100644
>>   > >> --- a/drivers/leds/led-triggers.c
>>   > >> +++ b/drivers/leds/led-triggers.c
>>   > >> @@ -54,6 +54,11 @@ ssize_t led_trigger_write(struct file *filp, 
>> struct
>>   > >> kobject *kobj,
>>   > >>           goto unlock;
>>   > >>       }
>>   > >> +    if (sysfs_streq(buf, "default")) {
>>   > >> +        led_trigger_set_default(led_cdev);
>>   > >> +        goto unlock;
>>   > >> +    }
>>   > >> +
>>   > >>       down_read(&triggers_list_lock);
>>   > >>       list_for_each_entry(trig, &trigger_list, next_trig) {
>>   > >>           if (sysfs_streq(buf, trig->name) &&
>>   > >> trigger_relevant(led_cdev, trig)) {
>>   > >
>>   > > Makes sense for me, this would be the second half of the feature 
>> that is
>>   > > now available only from DT level.
>>   > >
>>   > > Reviewed-by: Jacek Anaszewski jacek.anaszewski@gmail.com>
>>   > >
>>   >
>>   > But after re-thinking it - we need to return -EINVAL in case
>>   > LED class device does not define default trigger, so that the user
>>   > had proper feedback.
>>   >
>>   > So, led_trigger_set_default() needs to be extended to return error
>>   > in case of !led_cdev->default_trigger or !found.
>>
>> In systems I've worked on, some LEDs have a default trigger, while 
>> others don't. I.e. it seems normal for an LED to have a default 
>> trigger of "none". I don't think of this as an error condition, but a 
>> normal operation to set an LED's trigger back to "none".
>>
>> The not-found case is an interesting corner case. It might be that a 
>> kernel module that provides a trigger is presently not loaded, so the 
>> trigger is not currently available -- but will be available if the 
>> kernel module is loaded again.
> 
> Fair enough.
> It would be good to add this description to the entry related to
> "trigger" file in Documentation/ABI/testing/sysfs-class-led.
> 

Forgot to answer to the below sequence.

>> 1. LED has a default trigger "moduletrigger".
>> 2. Module that provides that trigger "moduletrigger" is unloaded.

Now led_trigger_unregister() is called, the trigger is being removed
from trigger_list and LED class devices having it set, have their
trigger property set to NULL.

>> 3. LED has trigger set to something else, "othertrigger".

LED class device trigger property is being initialized with a pointer
to the related struct led_trigger.

>> 4. led_trigger_set_default() is called for that LED.
>>      Will the LED's trigger be effectively "none", or stay at 
>> "othertrigger"?

Will stay at "othertrigger", since led_trigger_set_default() will end up
in !found state.

>> 5. Module that provides "moduletrigger" is loaded again.
>>      Will the LED be connected to its default trigger "moduletrigger", 
>> or remain at "none"?

Will remain at "othertrigger". led_trigger_register() would set default
trigger for LED class device only if no trigger is set for the LED,
and the name matches LED's default trigger


-- 
Best regards,
Jacek Anaszewski


  reply	other threads:[~2025-03-10 20:18 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-06 22:55 [PATCH] led-triggers: accept "default" written to sysfs trigger attr Craig McQueen
2025-03-06 23:32 ` Lee Jones
2025-03-07  1:42   ` Craig McQueen
2025-03-07 16:50 ` Jacek Anaszewski
2025-03-07 17:10   ` Jacek Anaszewski
2025-03-09 11:33     ` Craig McQueen
2025-03-09 18:50       ` Jacek Anaszewski
2025-03-10 20:18         ` Jacek Anaszewski [this message]
2025-03-11 10:27         ` Craig McQueen
2025-03-11 19:22           ` Jacek Anaszewski
2025-03-14 11:11 ` Lee Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a5a1b224-8f9f-4b66-ab7e-fe388a82ecc5@gmail.com \
    --to=jacek.anaszewski@gmail.com \
    --cc=craig@mcqueen.au \
    --cc=linux-leds@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox