Register hwmon sysfs interface in thermal_zone_of_sensor_register_param()
in case thermal_zone_params->no_hwmon is set to false. This behavior is
the same as thermal_zone_device_register().

Signed-off-by: Marek Vasut <[email protected]>
Cc: Daniel Lezcano <[email protected]>
Cc: Eduardo Valentin <[email protected]>
Cc: Wolfram Sang <[email protected]>
Cc: Zhang Rui <[email protected]>
Cc: [email protected]
To: [email protected]
---
V2: No change
---
 drivers/thermal/of-thermal.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
index e1a303a5698c..5ccff7b678de 100644
--- a/drivers/thermal/of-thermal.c
+++ b/drivers/thermal/of-thermal.c
@@ -15,6 +15,7 @@
 #include <linux/string.h>
 
 #include "thermal_core.h"
+#include "thermal_hwmon.h"
 
 /***   Private data structures to represent thermal device tree data ***/
 
@@ -521,8 +522,15 @@ thermal_zone_of_sensor_register_params(struct device *dev, 
int sensor_id,
                if (sensor_specs.np == sensor_np && id == sensor_id) {
                        tzd = thermal_zone_of_add_sensor(child, sensor_np,
                                                         data, ops);
-                       if (!IS_ERR(tzd))
+                       if (!IS_ERR(tzd)) {
+                               tzd->tzp = tzp;
                                tzd->ops->set_mode(tzd, THERMAL_DEVICE_ENABLED);
+                               if (!tzp || !tzp->no_hwmon) {
+                                       ret = thermal_add_hwmon_sysfs(tzd);
+                                       if (ret)
+                                               tzd = ERR_PTR(ret);
+                               }
+                       }
 
                        of_node_put(sensor_specs.np);
                        of_node_put(child);
@@ -605,6 +613,8 @@ void thermal_zone_of_sensor_unregister(struct device *dev,
 
        tz = tzd->devdata;
 
+       thermal_remove_hwmon_sysfs(tzd);
+
        /* no __thermal_zone, nothing to be done */
        if (!tz)
                return;
-- 
2.18.0

Reply via email to