From: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> Register the hwmon sysfs interface on R-Car Gen3 thermal driver to align it with Gen2 driver. Use devm_add_action() to unregister the hwmon interface automatically. Cc: Eduardo Valentin <edubezval@xxxxxxxxx> Cc: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> Cc: linux-renesas-soc@xxxxxxxxxxxxxxx To: linux-pm@xxxxxxxxxxxxxxx From: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> Signed-off-by: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> --- drivers/thermal/rcar_gen3_thermal.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c index 75786cc8e2f9..88fa41cf16e8 100644 --- a/drivers/thermal/rcar_gen3_thermal.c +++ b/drivers/thermal/rcar_gen3_thermal.c @@ -19,6 +19,7 @@ #include <linux/thermal.h> #include "thermal_core.h" +#include "thermal_hwmon.h" /* Register offsets */ #define REG_GEN3_IRQSTR 0x04 @@ -337,6 +338,13 @@ static int rcar_gen3_thermal_remove(struct platform_device *pdev) return 0; } +static void rcar_gen3_hwmon_action(void *data) +{ + struct thermal_zone_device *zone = data; + + thermal_remove_hwmon_sysfs(zone); +} + static int rcar_gen3_thermal_probe(struct platform_device *pdev) { struct rcar_gen3_thermal_priv *priv; @@ -429,6 +437,17 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev) if (ret < 0) goto error_unregister; + tsc->zone->tzp->no_hwmon = false; + ret = thermal_add_hwmon_sysfs(tsc->zone); + if (ret) + goto error_unregister; + + ret = devm_add_action(dev, rcar_gen3_hwmon_action, zone); + if (ret) { + rcar_gen3_hwmon_action(zone); + goto error_unregister; + } + dev_info(dev, "TSC%d: Loaded %d trip points\n", i, ret); } -- 2.19.2