Commit c7fc403e authored by Andrey Smirnov's avatar Andrey Smirnov Committed by Daniel Lezcano
Browse files

thermal_hwmon: Add devres wrapper for thermal_add_hwmon_sysfs()



Add devres wrapper for thermal_add_hwmon_sysfs() to simplify driver
code.

Signed-off-by: default avatarAndrey Smirnov <andrew.smirnov@gmail.com>
Reviewed-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Tested-by: default avatarLucas Stach <l.stach@pengutronix.de>
Cc: Chris Healy <cphealy@gmail.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Eduardo Valentin <edubezval@gmail.com>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: Angus Ainslie (Purism) <angus@akkea.ca>
Cc: linux-imx@nxp.com
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20191210164153.10463-12-andrew.smirnov@gmail.com
parent 36564d7e
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -248,3 +248,31 @@ void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz)
	kfree(hwmon);
}
EXPORT_SYMBOL_GPL(thermal_remove_hwmon_sysfs);

static void devm_thermal_hwmon_release(struct device *dev, void *res)
{
	thermal_remove_hwmon_sysfs(*(struct thermal_zone_device **)res);
}

int devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
{
	struct thermal_zone_device **ptr;
	int ret;

	ptr = devres_alloc(devm_thermal_hwmon_release, sizeof(*ptr),
			   GFP_KERNEL);
	if (!ptr)
		return -ENOMEM;

	ret = thermal_add_hwmon_sysfs(tz);
	if (ret) {
		devres_free(ptr);
		return ret;
	}

	*ptr = tz;
	devres_add(&tz->device, ptr);

	return ret;
}
EXPORT_SYMBOL_GPL(devm_thermal_add_hwmon_sysfs);
+7 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@

#ifdef CONFIG_THERMAL_HWMON
int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz);
int devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz);
void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz);
#else
static inline int
@@ -25,6 +26,12 @@ thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
	return 0;
}

static inline int
devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
{
	return 0;
}

static inline void
thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz)
{