Message ID | 20210320080646.49615-1-linux@fw-web.de (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Daniel Lezcano |
Headers | show |
Series | thermal: mediatek: add sensors-support | expand |
Hi, any opinion (except typo)? thermanl => thermal regards Frank > Gesendet: Samstag, 20. März 2021 um 10:06 Uhr > Von: "Frank Wunderlich" <linux@fw-web.de> > add HWMON-support to mediateks thermanl driver to allow lm-sensors > userspace tools read soc temperature
On 20/03/2021 09:06, Frank Wunderlich wrote: > From: Frank Wunderlich <frank-w@public-files.de> > > add HWMON-support to mediateks thermanl driver to allow lm-sensors > userspace tools read soc temperature > > Signed-off-by: Frank Wunderlich <frank-w@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 No #ifdef in C file. > + 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); devm_thermal_add_hwmon_sysfs() ? > + if (ret) { > + dev_err(&pdev->dev, "error in devm_add_action"); > + mtk_thermal_hwmon_action(tzdev); > + } > +#endif > + > return 0; > > err_disable_clk_peri_therm: >
Hi, > Gesendet: Dienstag, 20. April 2021 um 14:07 Uhr > Von: "Daniel Lezcano" <daniel.lezcano@linaro.org> > No #ifdef in C file. ... > devm_thermal_add_hwmon_sysfs() ? based on your comments this should be enough/right? #if IS_ENABLED(CONFIG_THERMAL_HWMON) tzdev->tzp->no_hwmon = false; ret = devm_thermal_add_hwmon_sysfs(tzdev); if (ret) dev_err(&pdev->dev, "error in thermal_add_hwmon_sysfs"); #endif if yes i send out v2, at least it works on my device regards Frank
Hi Frank, On 20/04/2021 16:59, Frank Wunderlich wrote: > Hi, > >> Gesendet: Dienstag, 20. April 2021 um 14:07 Uhr >> Von: "Daniel Lezcano" <daniel.lezcano@linaro.org> > >> No #ifdef in C file. > ... > >> devm_thermal_add_hwmon_sysfs() ? > > based on your comments this should be enough/right? > > #if IS_ENABLED(CONFIG_THERMAL_HWMON) > tzdev->tzp->no_hwmon = false;> ret = devm_thermal_add_hwmon_sysfs(tzdev); > if (ret) > dev_err(&pdev->dev, "error in thermal_add_hwmon_sysfs"); > #endif > > if yes i send out v2, at least it works on my device just the following lines should work: ret = devm_thermal_add_hwmon_sysfs(tzdev); if (ret) dev_err(&pdev->dev, "error in thermal_add_hwmon_sysfs"); The no_hwmon usage is a bit fuzzy in the thermal core code.
Am 20. April 2021 17:18:32 MESZ schrieb Daniel Lezcano <daniel.lezcano@linaro.org>: > >Hi Frank, >The no_hwmon usage is a bit fuzzy in the thermal core code. Maybe add depency in Kconfig? Else we can get undefined symbols on linking regards Frank
On 20/04/2021 17:24, Frank Wunderlich wrote: > Am 20. April 2021 17:18:32 MESZ schrieb Daniel Lezcano <daniel.lezcano@linaro.org>: >> >> Hi Frank, > >> The no_hwmon usage is a bit fuzzy in the thermal core code. > > Maybe add depency in Kconfig? Else we can get undefined symbols on linking > > regards Frank Nope, there are the stubs in thermal_hwmon.h
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: