ACPI: platform_profile: Add devm_platform_profile_register()

Platform profile's lifetime is usually tied to a device's lifetime,
therefore add a device managed version of platform_profile_register().

Signed-off-by: Kurt Borja <kuurtb@gmail.com>
Reviewed-by: Armin Wolf <W_Armin@gmx.de>
Link: https://lore.kernel.org/r/20241224140131.30362-4-kuurtb@gmail.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
This commit is contained in:
Kurt Borja
2024-12-24 09:01:32 -05:00
committed by Ilpo Järvinen
parent 0056b0852c
commit b651ea8a44
2 changed files with 30 additions and 0 deletions

View File

@@ -519,6 +519,35 @@ int platform_profile_remove(struct platform_profile_handler *pprof)
}
EXPORT_SYMBOL_GPL(platform_profile_remove);
static void devm_platform_profile_release(struct device *dev, void *res)
{
struct platform_profile_handler **pprof = res;
platform_profile_remove(*pprof);
}
int devm_platform_profile_register(struct platform_profile_handler *pprof)
{
struct platform_profile_handler **dr;
int ret;
dr = devres_alloc(devm_platform_profile_release, sizeof(*dr), GFP_KERNEL);
if (!dr)
return -ENOMEM;
ret = platform_profile_register(pprof);
if (ret) {
devres_free(dr);
return ret;
}
*dr = pprof;
devres_add(pprof->dev, dr);
return 0;
}
EXPORT_SYMBOL_GPL(devm_platform_profile_register);
static int __init platform_profile_init(void)
{
int err;

View File

@@ -41,6 +41,7 @@ struct platform_profile_handler {
int platform_profile_register(struct platform_profile_handler *pprof);
int platform_profile_remove(struct platform_profile_handler *pprof);
int devm_platform_profile_register(struct platform_profile_handler *pprof);
int platform_profile_cycle(void);
void platform_profile_notify(struct platform_profile_handler *pprof);