On 01/04/2019 06:14, Andrey Smirnov wrote: > Add devres wrapper for thermal_add_hwmon_sysfs() to simplify driver > code. > > Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com> > Cc: Chris Healy <cphe...@gmail.com> > Cc: Lucas Stach <l.st...@pengutronix.de> > Cc: Zhang Rui <rui.zh...@intel.com> > Cc: Eduardo Valentin <edubez...@gmail.com> > Cc: Daniel Lezcano <daniel.lezc...@linaro.org> > Cc: Angus Ainslie (Purism) <an...@akkea.ca> > Cc: linux-...@nxp.com > Cc: linux...@vger.kernel.org > Cc: linux-kernel@vger.kernel.org
Acked-by: Daniel Lezcano <daniel.lezc...@linaro.org> > --- > drivers/thermal/thermal_hwmon.c | 28 ++++++++++++++++++++++++++++ > drivers/thermal/thermal_hwmon.h | 7 +++++++ > 2 files changed, 35 insertions(+) > > diff --git a/drivers/thermal/thermal_hwmon.c b/drivers/thermal/thermal_hwmon.c > index 40c69a533b24..4e79524182e1 100644 > --- a/drivers/thermal/thermal_hwmon.c > +++ b/drivers/thermal/thermal_hwmon.c > @@ -244,3 +244,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); > diff --git a/drivers/thermal/thermal_hwmon.h b/drivers/thermal/thermal_hwmon.h > index a160b9d62dd0..1a9d65f6a6a8 100644 > --- a/drivers/thermal/thermal_hwmon.h > +++ b/drivers/thermal/thermal_hwmon.h > @@ -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) > { > -- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog