This is the second iteration of this RFC. The series now focuses on cleaning up the code in the first place. After the cleanups in patches 1-3 struct thermal_zone_device is extended so that it contains a "mode" member (patch 4/9). The next patch (5/9) makes all thermal zone devices use the "mode" member. This patch makes drivers' ->get_mode() methods redundant, so the next one (6/9) removes the method altogether. Patches 7-8/9 ensure that after changing thermal zone device's mode an attempt will be made to monitor the device. And finally patch 9/9 prevents DISABLED devices from being monitored. It also adds THERMAL_DEVICE_INITIAL to accommodate the devices, which should be monitored but cannot be initially ENABLED. Andrzej Pietrasiewicz (9): thermal: int3400_thermal: Statically initialize .get_mode()/.set_mode() ops thermal: Eliminate an always-false condition thermal: Properly handle mode values in .set_mode() thermal: core: Let thermal zone device's mode be stored in its struct thermal: Store mode in thermal_zone_device thermal: Remove get_mode() method thermal: core: Monitor thermal zone after mode change thermal: of: Monitor thermal zone after enabling it thermal: core: Stop polling DISABLED thermal devices drivers/acpi/thermal.c | 44 +++++---------- .../ethernet/mellanox/mlxsw/core_thermal.c | 43 ++++----------- drivers/platform/x86/acerhdf.c | 28 +++++----- drivers/thermal/da9062-thermal.c | 12 +--- drivers/thermal/imx_thermal.c | 30 ++++------ .../intel/int340x_thermal/int3400_thermal.c | 39 +++---------- .../thermal/intel/intel_quark_dts_thermal.c | 27 ++++----- drivers/thermal/of-thermal.c | 28 ++++------ drivers/thermal/thermal_core.c | 40 ++++++++++++-- drivers/thermal/thermal_core.h | 2 + drivers/thermal/thermal_sysfs.c | 40 ++++---------- include/linux/thermal.h | 55 ++++++++++++++++++- 12 files changed, 180 insertions(+), 208 deletions(-) -- 2.17.1