|
|
@@ -249,6 +249,34 @@ void led_trigger_unregister(struct led_trigger *trig)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(led_trigger_unregister);
|
|
|
|
|
|
+static void devm_led_trigger_release(struct device *dev, void *res)
|
|
|
+{
|
|
|
+ led_trigger_unregister(*(struct led_trigger **)res);
|
|
|
+}
|
|
|
+
|
|
|
+int devm_led_trigger_register(struct device *dev,
|
|
|
+ struct led_trigger *trig)
|
|
|
+{
|
|
|
+ struct led_trigger **dr;
|
|
|
+ int rc;
|
|
|
+
|
|
|
+ dr = devres_alloc(devm_led_trigger_release, sizeof(*dr),
|
|
|
+ GFP_KERNEL);
|
|
|
+ if (!dr)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
+ *dr = trig;
|
|
|
+
|
|
|
+ rc = led_trigger_register(trig);
|
|
|
+ if (rc)
|
|
|
+ devres_free(dr);
|
|
|
+ else
|
|
|
+ devres_add(dev, dr);
|
|
|
+
|
|
|
+ return rc;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(devm_led_trigger_register);
|
|
|
+
|
|
|
/* Simple LED Tigger Interface */
|
|
|
|
|
|
void led_trigger_event(struct led_trigger *trig,
|