]> www.infradead.org Git - nvme.git/commitdiff
ACPI: battery: add devm_battery_hook_register()
authorThomas Weißschuh <linux@weissschuh.net>
Sun, 30 Jun 2024 20:54:08 +0000 (22:54 +0200)
committerTzung-Bi Shih <tzungbi@kernel.org>
Mon, 1 Jul 2024 13:22:18 +0000 (21:22 +0800)
Add a utility function for device-managed registration of battery hooks.
The function makes it easier to manage the lifecycle of a hook.

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20240630-cros_ec-charge-control-v5-1-8f649d018c52@weissschuh.net
Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
drivers/acpi/battery.c
include/acpi/battery.h

index b379401ff1c2032ea41e6e870ca97c19d49db9f1..6ea979f76f847a9438c5a677cfde0c0eeaac7460 100644 (file)
@@ -756,6 +756,21 @@ end:
 }
 EXPORT_SYMBOL_GPL(battery_hook_register);
 
+static void devm_battery_hook_unregister(void *data)
+{
+       struct acpi_battery_hook *hook = data;
+
+       battery_hook_unregister(hook);
+}
+
+int devm_battery_hook_register(struct device *dev, struct acpi_battery_hook *hook)
+{
+       battery_hook_register(hook);
+
+       return devm_add_action_or_reset(dev, devm_battery_hook_unregister, hook);
+}
+EXPORT_SYMBOL_GPL(devm_battery_hook_register);
+
 /*
  * This function gets called right after the battery sysfs
  * attributes have been added, so that the drivers that
index 611a2561a014f6409f83b026f9aa7af9d017460f..c93f16dfb944a08095c84c88e5d9062a28873e45 100644 (file)
@@ -2,6 +2,7 @@
 #ifndef __ACPI_BATTERY_H
 #define __ACPI_BATTERY_H
 
+#include <linux/device.h>
 #include <linux/power_supply.h>
 
 #define ACPI_BATTERY_CLASS "battery"
@@ -19,5 +20,6 @@ struct acpi_battery_hook {
 
 void battery_hook_register(struct acpi_battery_hook *hook);
 void battery_hook_unregister(struct acpi_battery_hook *hook);
+int devm_battery_hook_register(struct device *dev, struct acpi_battery_hook *hook);
 
 #endif