Unverified Commit b651ea8a authored by Kurt Borja's avatar Kurt Borja Committed by Ilpo Järvinen
Browse files

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: default avatarKurt Borja <kuurtb@gmail.com>
Reviewed-by: default avatarArmin Wolf <W_Armin@gmx.de>
Link: https://lore.kernel.org/r/20241224140131.30362-4-kuurtb@gmail.com


Reviewed-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
parent 0056b085
Loading
Loading
Loading
Loading
+29 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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);