lkml.org 
[lkml]   [2018]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 00/17] thermal: enable/check sensor after its setup is finished
    Date
    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

    \
     
     \ /
      Last update: 2018-04-10 14:43    [W:4.222 / U:1.376 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site