Message ID | 20240610-cros_ec-charge-control-v3-1-135e37252094@weissschuh.net |
---|---|
State | Superseded |
Headers | show |
Series | ChromeOS Embedded Controller charge control driver | expand |
On Mon, Jun 10, 2024 at 5:52 PM Thomas Weißschuh <linux@weissschuh.net> wrote: > > Add a utility function for device-managed registration of battery hooks. > The function makes it easier to manage the lifecycle of a hook. > > Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> Please feel free to add Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> to this patch and route it along with the rest of the series as needed. Thanks! > --- > drivers/acpi/battery.c | 15 +++++++++++++++ > include/acpi/battery.h | 2 ++ > 2 files changed, 17 insertions(+) > > diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c > index b379401ff1c2..6ea979f76f84 100644 > --- a/drivers/acpi/battery.c > +++ b/drivers/acpi/battery.c > @@ -756,6 +756,21 @@ void battery_hook_register(struct acpi_battery_hook *hook) > } > 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 > diff --git a/include/acpi/battery.h b/include/acpi/battery.h > index 611a2561a014..c93f16dfb944 100644 > --- a/include/acpi/battery.h > +++ b/include/acpi/battery.h > @@ -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 > > -- > 2.45.2 > >
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c index b379401ff1c2..6ea979f76f84 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c @@ -756,6 +756,21 @@ void battery_hook_register(struct acpi_battery_hook *hook) } 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 diff --git a/include/acpi/battery.h b/include/acpi/battery.h index 611a2561a014..c93f16dfb944 100644 --- a/include/acpi/battery.h +++ b/include/acpi/battery.h @@ -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
Add a utility function for device-managed registration of battery hooks. The function makes it easier to manage the lifecycle of a hook. Signed-off-by: Thomas Weißschuh <linux@weissschuh.net> --- drivers/acpi/battery.c | 15 +++++++++++++++ include/acpi/battery.h | 2 ++ 2 files changed, 17 insertions(+)