mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-02-15 23:47:54 -05:00
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:
committed by
Ilpo Järvinen
parent
0056b0852c
commit
b651ea8a44
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user