Drivers registering thermal zone/cooling devices are currently unable to tell the thermal core what parent device the new thermal zone/ cooling device should have, potentially causing issues with suspend ordering and making it impossible for user space appications to associate a given thermal zone device with its parent device.
This patch series aims to fix this issue by extending the functions used to register thermal zone/cooling devices to also accept a parent device pointer. The first six patches convert all functions used for registering cooling devices, while the functions used for registering thermal zone devices are converted by the remaining two patches. I tested this series on various devices containing (among others): - ACPI thermal zones - ACPI processor devices - PCIe cooling devices - Intel Wifi card - Intel powerclamp - Intel TCC cooling I also compile-tested the remaining affected drivers, however i would still be happy if the relevant maintainers (especially those of the mellanox ethernet switch driver) could take a quick glance at the code and verify that i am using the correct device as the parent device. This work is also necessary for extending the ACPI thermal zone driver to support the _TZD ACPI object in the future. Signed-off-by: Armin Wolf <[email protected]> --- Armin Wolf (8): thermal: core: Allow setting the parent device of cooling devices thermal: core: Set parent device in thermal_of_cooling_device_register() ACPI: processor: Stop creating "device" sysfs link ACPI: fan: Stop creating "device" sysfs link ACPI: video: Stop creating "device" sysfs link thermal: core: Set parent device in thermal_cooling_device_register() ACPI: thermal: Stop creating "device" sysfs link thermal: core: Allow setting the parent device of thermal zone devices Documentation/driver-api/thermal/sysfs-api.rst | 10 ++++- drivers/acpi/acpi_video.c | 9 +---- drivers/acpi/fan_core.c | 16 ++------ drivers/acpi/processor_thermal.c | 15 +------ drivers/acpi/thermal.c | 33 ++++++--------- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 4 +- drivers/net/ethernet/chelsio/cxgb4/cxgb4_thermal.c | 4 +- drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 47 +++++++++++----------- drivers/net/wireless/ath/ath10k/thermal.c | 2 +- drivers/net/wireless/ath/ath11k/thermal.c | 2 +- drivers/net/wireless/intel/iwlwifi/mld/thermal.c | 6 +-- drivers/net/wireless/intel/iwlwifi/mvm/tt.c | 12 +++--- drivers/net/wireless/mediatek/mt76/mt7915/init.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7996/init.c | 2 +- drivers/platform/x86/acerhdf.c | 4 +- drivers/power/supply/power_supply_core.c | 4 +- drivers/thermal/armada_thermal.c | 2 +- drivers/thermal/cpufreq_cooling.c | 2 +- drivers/thermal/cpuidle_cooling.c | 2 +- drivers/thermal/da9062-thermal.c | 2 +- drivers/thermal/devfreq_cooling.c | 2 +- drivers/thermal/dove_thermal.c | 2 +- drivers/thermal/imx_thermal.c | 2 +- .../intel/int340x_thermal/int3400_thermal.c | 2 +- .../intel/int340x_thermal/int3403_thermal.c | 4 +- .../intel/int340x_thermal/int3406_thermal.c | 2 +- .../intel/int340x_thermal/int340x_thermal_zone.c | 13 +++--- .../int340x_thermal/processor_thermal_device_pci.c | 7 ++-- drivers/thermal/intel/intel_pch_thermal.c | 2 +- drivers/thermal/intel/intel_powerclamp.c | 2 +- drivers/thermal/intel/intel_quark_dts_thermal.c | 2 +- drivers/thermal/intel/intel_soc_dts_iosf.c | 2 +- drivers/thermal/intel/intel_tcc_cooling.c | 2 +- drivers/thermal/intel/x86_pkg_temp_thermal.c | 6 +-- drivers/thermal/kirkwood_thermal.c | 2 +- drivers/thermal/pcie_cooling.c | 2 +- drivers/thermal/renesas/rcar_thermal.c | 10 +++-- drivers/thermal/spear_thermal.c | 2 +- drivers/thermal/tegra/soctherm.c | 5 +-- drivers/thermal/testing/zone.c | 2 +- drivers/thermal/thermal_core.c | 23 +++++++---- drivers/thermal/thermal_of.c | 9 +++-- include/linux/thermal.h | 22 +++++----- 43 files changed, 145 insertions(+), 162 deletions(-) --- base-commit: 653ef66b2c04bcdecaf3d13ea5069c4b1f27d5da change-id: 20251114-thermal-device-655d138824c6 Best regards, -- Armin Wolf <[email protected]>
