On Sat, 11 Jul 2020 12:04:09 +0200 Pavel Machek <pavel@xxxxxx> wrote: > What about this? Should address Marek's concerns about resource use... > > Best regards, > Pavel > ... > @@ -280,7 +291,8 @@ int led_trigger_register(struct led_trigger *trig) > down_write(&triggers_list_lock); > /* Make sure the trigger's name isn't already in use */ > list_for_each_entry(_trig, &trigger_list, next_trig) { > - if (!strcmp(_trig->name, trig->name)) { > + if (!strcmp(_trig->name, trig->name) && > + (!_trig->private_led || _trig->private_led == > trig->private_led)) { up_write(&triggers_list_lock); > return -EEXIST; > } Hi Pavel, Your proposal does not add private_led member to struct led_trigger. I think you forgot to change this from Ondrej's proposal. This should instead check: the names are same and both trigger have the same type (either none or same). In that case return -EEXIST. Also a couple of lines below there is code for enabling this trigger for LEDs that have it set as default trigger. There should also be a check whether the trigger is relevant. In the linux/leds.h header the trigger_type in led_classdev should be inside the CONFIG_LEDS_TRIGGERS block. I will send new version with an example usage for a Marvell PHY driver. Marek