From: Marek Vasut <[email protected]>

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 <[email protected]>
Cc: Wolfram Sang <[email protected]>
Cc: [email protected]
To: [email protected]
From: Marek Vasut <[email protected]>
Signed-off-by: Marek Vasut <[email protected]>
---
 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

Reply via email to