Sometimes events trigger before LEDs are registered, but simple
triggers don't track their state and LED starts as if nothing
happened.
Add some state tracking to simple triggers.
led_cdev->trigger = trigger;
if (trigger->activate)
trigger->activate(led_cdev);
+ else
+ led_set_brightness(led_cdev, trigger->prev_brightness);
}
}
EXPORT_SYMBOL_GPL(led_trigger_set);
led_cdev = list_entry(entry, struct led_classdev, trig_list);
led_set_brightness(led_cdev, brightness);
}
+ trigger->prev_brightness = brightness;
read_unlock(&trigger->leddev_list_lock);
}
EXPORT_SYMBOL_GPL(led_trigger_event);
/* Link to next registered trigger */
struct list_head next_trig;
+
+ enum led_brightness prev_brightness;
};
/* Registration functions for complex triggers */