Messages in this thread | | | From | Bartlomiej Zolnierkiewicz <> | Subject | [PATCH 00/17] thermal: enable/check sensor after its setup is finished | Date | Tue, 10 Apr 2018 14:41:54 +0200 |
| |
Hi,
[devm]_thermal_zone_of_sensor_register() is used to register thermal sensor by thermal drivers using DeviceTree. Besides registering sensor this function also immediately enables it (using ->set_mode method) and then checks it with a update call to the thermal core (which ends up using ->get_temp method). For many DT thermal drivers this causes a problem because [devm]_thermal_zone_of_sensor_register() need to be called in order to obtain data about thermal trips which are then used to finish hardware sensor setup (only after which ->get_temp can be used). The issue has been observed when using Samsung Exynos thermal driver and fixed internally in the driver in commit d8efad71e5b6 ("thermal: exynos: Reading temperature makes sense only when TMU is turned on"). However after this commit there are now following warnings from the thermal core visible:
[ 3.453602] thermal thermal_zone0: failed to read out thermal zone (-22) [ 3.483468] thermal thermal_zone1: failed to read out thermal zone (-22) [ 3.505965] thermal thermal_zone2: failed to read out thermal zone (-22) [ 3.528455] thermal thermal_zone3: failed to read out thermal zone (-22) [ 3.550939] thermal thermal_zone4: failed to read out thermal zone (-22)
This patchset attempts to directly address the thermal core problem with [devm]_thermal_zone_of_sensor_register() and affected DT thermal drivers. In order to achieve this sensor registration, enable and check operations are separated and corresponding drivers are modified to use the new helpers to enable and check sensor explicitly.
Tested on Exynos5422 based Odroid-XU3 Lite board (aforementioned warnings from the thermal core are now gone).
Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics
Bartlomiej Zolnierkiewicz (17): thermal: add thermal_zone_device_toggle() helper thermal: separate sensor registration and enable thermal: add thermal_zone_device_check() helper thermal: do sensor checking explicitly in drivers thermal: bcm2835: enable/check sensor after its setup is finished thermal: brcmstb: enable/check sensor after its setup is finished thermal: hisi_thermal: enable/check sensor after its setup is finished thermal: qcom: tsens: enable/check sensor after its setup is finished thermal: qoriq: enable/check sensor after its setup is finished thermal: rcar_gen3_thermal: enable/check sensor after its setup is finished thermal: rockchip_thermal: enable/check sensor after its setup is finished thermal: exynos: enable/check sensor after its setup is finished thermal: tegra: enable/check sensor after its setup is finished thermal: ti-soc-thermal: enable/check sensor after its setup is finished thermal: uniphier: enable/check sensor after its setup is finished thermal: zx2967: enable/check sensor after its setup is finished thermal: warn on attempts to read temperature on disabled sensors
drivers/acpi/thermal.c | 5 ++-- drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 1 - drivers/platform/x86/acerhdf.c | 6 +++- drivers/regulator/max8973-regulator.c | 3 +- drivers/thermal/broadcom/bcm2835_thermal.c | 3 ++ drivers/thermal/broadcom/brcmstb_thermal.c | 3 ++ drivers/thermal/broadcom/ns-thermal.c | 3 ++ drivers/thermal/da9062-thermal.c | 7 ++--- drivers/thermal/db8500_thermal.c | 5 +++- drivers/thermal/hisi_thermal.c | 22 ++++---------- drivers/thermal/imx_thermal.c | 3 +- drivers/thermal/int340x_thermal/int3400_thermal.c | 1 + drivers/thermal/intel_bxt_pmic_thermal.c | 3 +- drivers/thermal/intel_soc_dts_iosf.c | 3 +- drivers/thermal/max77620_thermal.c | 6 ++-- drivers/thermal/mtk_thermal.c | 3 ++ drivers/thermal/of-thermal.c | 6 ++-- drivers/thermal/qcom-spmi-temp-alarm.c | 5 +++- drivers/thermal/qcom/tsens.c | 6 ++++ drivers/thermal/qoriq_thermal.c | 3 ++ drivers/thermal/rcar_gen3_thermal.c | 7 +++-- drivers/thermal/rcar_thermal.c | 8 +++-- drivers/thermal/rockchip_thermal.c | 34 ++++++++++------------ drivers/thermal/samsung/exynos_tmu.c | 7 ++++- drivers/thermal/st/st_thermal_memmap.c | 3 +- drivers/thermal/tango_thermal.c | 5 ++++ drivers/thermal/tegra/soctherm.c | 3 ++ drivers/thermal/tegra/tegra-bpmp-thermal.c | 3 ++ drivers/thermal/thermal-generic-adc.c | 3 ++ drivers/thermal/thermal_core.c | 14 ++++----- drivers/thermal/thermal_helpers.c | 33 +++++++++++++++++++++ drivers/thermal/thermal_sysfs.c | 17 +++++++---- drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 7 ++++- drivers/thermal/uniphier_thermal.c | 6 +++- drivers/thermal/x86_pkg_temp_thermal.c | 2 +- drivers/thermal/zx2967_thermal.c | 3 ++ include/linux/thermal.h | 5 ++++ 37 files changed, 173 insertions(+), 84 deletions(-)
-- 1.9.1
| |