From: Frank Wunderlich <fran...@public-files.de>

add HWMON-support to mediateks thermanl driver to allow lm-sensors
userspace tools read soc temperature

Signed-off-by: Frank Wunderlich <fran...@public-files.de>
---
 drivers/thermal/mtk_thermal.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/thermal/mtk_thermal.c b/drivers/thermal/mtk_thermal.c
index 149c6d7fd5a0..e22d77d57458 100644
--- a/drivers/thermal/mtk_thermal.c
+++ b/drivers/thermal/mtk_thermal.c
@@ -23,6 +23,8 @@
 #include <linux/reset.h>
 #include <linux/types.h>
 
+#include "thermal_hwmon.h"
+
 /* AUXADC Registers */
 #define AUXADC_CON1_SET_V      0x008
 #define AUXADC_CON1_CLR_V      0x00c
@@ -983,6 +985,13 @@ static void mtk_thermal_release_periodic_ts(struct 
mtk_thermal *mt,
        writel((tmp & (~0x10e)), mt->thermal_base + TEMP_MSRCTL1);
 }
 
+static void mtk_thermal_hwmon_action(void *data)
+{
+       struct thermal_zone_device *zone = data;
+
+       thermal_remove_hwmon_sysfs(zone);
+}
+
 static int mtk_thermal_probe(struct platform_device *pdev)
 {
        int ret, i, ctrl_id;
@@ -1087,6 +1096,19 @@ static int mtk_thermal_probe(struct platform_device 
*pdev)
                goto err_disable_clk_peri_therm;
        }
 
+#ifdef CONFIG_THERMAL_HWMON
+       tzdev->tzp->no_hwmon = false;
+       ret = thermal_add_hwmon_sysfs(tzdev);
+       if (ret)
+               dev_err(&pdev->dev, "error in thermal_add_hwmon_sysfs");
+
+       ret = devm_add_action(&pdev->dev, mtk_thermal_hwmon_action, tzdev);
+       if (ret) {
+               dev_err(&pdev->dev, "error in devm_add_action");
+               mtk_thermal_hwmon_action(tzdev);
+       }
+#endif
+
        return 0;
 
 err_disable_clk_peri_therm:
-- 
2.25.1

Reply via email to