[PATCH v3 00/11] Support cooling device with ID in the OF

Daniel Lezcano posted 11 patches 1 week, 6 days ago
Only 10 patches received!
.../devicetree/bindings/hwmon/pwm-fan.yaml    |   3 +-
.../thermal/thermal-cooling-devices.yaml      |   8 +-
.../bindings/thermal/thermal-zones.yaml       |   3 +-
drivers/gpu/drm/etnaviv/etnaviv_gpu.c         |   5 +-
drivers/hwmon/amc6821.c                       |   2 +-
drivers/hwmon/aspeed-pwm-tacho.c              |   5 +-
drivers/hwmon/cros_ec_hwmon.c                 |   4 +-
drivers/hwmon/dell-smm-hwmon.c                |   4 +-
drivers/hwmon/emc2305.c                       |   6 +-
drivers/hwmon/gpio-fan.c                      |   6 +-
drivers/hwmon/max6650.c                       |   6 +-
drivers/hwmon/mlxreg-fan.c                    |   4 +-
drivers/hwmon/npcm750-pwm-fan.c               |   6 +-
drivers/hwmon/pwm-fan.c                       |   5 +-
drivers/hwmon/qnap-mcu-hwmon.c                |   6 +-
drivers/hwmon/tc654.c                         |   5 +-
drivers/memory/tegra/tegra210-emc-core.c      |   4 +-
drivers/soc/qcom/qcom_aoss.c                  |   2 +-
drivers/thermal/cpufreq_cooling.c             |   2 +-
drivers/thermal/cpuidle_cooling.c             |   2 +-
drivers/thermal/devfreq_cooling.c             |   2 +-
drivers/thermal/khadas_mcu_fan.c              |   7 +-
drivers/thermal/tegra/soctherm.c              |   6 +-
drivers/thermal/thermal_core.c                |  85 ++--------
drivers/thermal/thermal_core.h                |   5 +
drivers/thermal/thermal_of.c                  | 148 +++++++++++++++++-
include/linux/thermal.h                       |  69 +++++---
27 files changed, 273 insertions(+), 137 deletions(-)
[PATCH v3 00/11] Support cooling device with ID in the OF
Posted by Daniel Lezcano 1 week, 6 days ago
Ultra short description. DT Cooling device description:
      Old: <&mycdev min max>
      New: <&mycdev min max> OR/AND <&mycdev id min max>

Based on
      https://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git/log/?h=thermal/linux-next

A cooling device can be a single cooling device or a cooling device
controller with multiple cooling devices attached to it.

The thermal framework builds a connection between a cooling device and
a thermal zone when there is a trip point to be mitigated by the
cooling device. In the Linux kernel thermal semantic, the action of
connecting the cooling device and the thermal zone is called a
binding.

The description of the aforementioned connection depends on the
firmware definition and in our case it is through the device tree. The
cooling map describes this connection.

How is it done ?

For a single cooling device, the DT describes:

 * A cooling device:

	mycooling_device {
		...
	};

 * A cooling map in a thermal zone

	mythermal_zone {
	...
      		cooling-maps {
			map0 {
				...
				cooling-device = <&mycooling_device min max>;
				...
		   	};
      		}
      	...
   	};

For a cooling device controller with multiple cooling devices
attached, the DT describes:

 * A cooling device controller:

	mycooling_device_ctrl {
		mycooling_device1 {
			...
		};

		mycooling_device2 {
			...
		};

		...

		mycooling_deviceN {
			...
		};
   };

 * A cooling map in a thermal zone

	mythermal_zone {
	...
      		cooling-maps {
			map0 {
				...
				cooling-device = <&mycooling_device1 min max>;
				...
		   	};
      		}
      	...
   	};

When the cooling device "mycooling_device" is registered, then the
binding function will browse all the cooling maps and matches the node
device pointer to do the association (the pĥandle in the cooling map
vs the cooling device node).

That is how the connection between the cooling device and the thermal
zone is done.

DT maintainers consider the above description with child nodes is
incorrect if a child node doesn't have its own bindings as explained
in the documentation [1].

Gaurav Kohli posted a series to support the QMI TMD (Qualcomm
Messaging Interface based Thermal Mitigation Devices) [2]. This device
is a dedicated, centralized cooling device controller managing a set
of cooling devices.

Because of the above restrictions with child nodes there is no DT
bindings allowing to do the connection between the cooling device
inside the cooling device controller and a thermal zone.

A QMI TMD is not a standalone cooling device neither a multiple
cooling devices with their own DT description.

For this reason, the proposed changes with child nodes has been
rejected [3].

As a solution, it has been proposed to fold all these child nodes into
an array and add an id in the cooling maps to identify the cooling
device entry in the controller node [4].

Given the thermal zone has the same mechanism [5], that is a phandle
to a sensor node and an sensor specifier. The proposed approach makes
sense as it is consistent with the thermal zone description.

This series provides a cleanup around the usage of the OF code which
is interleaved with non-OF code. The OF and the non-OF code are
separated and remain self-encapsulated.

Then the function to register a cooling device is renamed to reflect
the legacy usage and a new function is introduced with the id
parameter.

Finally, the DT bindings is updated with the new format and the
thermal OF is changed to handle the new DT bindings.

Given the trivial changes impacting the files outside of the thermal
framework, this series is designed to have all changes going through
the thermal tree.

Thanks!

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/writing-bindings.rst
[2] https://lore.kernel.org/all/20260127155722.2797783-1-gaurav.kohli@oss.qualcomm.com/
[3] https://lore.kernel.org/all/546faeda-d896-403c-a449-5c9b0cd7159e@kernel.org/
[4] https://lore.kernel.org/all/74f59ef0-ead7-483f-a80e-a3da2f6ebcdb@oss.qualcomm.com/
[5] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/thermal/thermal-zones.yaml#n99

---
Changelog:
 - V4
   - Reworked splitted functions to register a cooling device and
     merged separately
 - V3
   - Reordered and reworked the patches to be git bisect safe
   - Reworked devm usage by using a more adequate function doing the
     same as the group of calls to devm*
   - Pass an init callback instead of moving
     thermal_cooling_device_init_complete() out of the function and
     calling it in different places
   - Sent separetely changes to the tegra soctherm driver
 - V2
   - Added stubs for OF functions in order to prevent to break the git
     bisectability compilation
   - Added missing call to thermal_cooling_device_init_complete() in
     devm_thermal_of_cooling_device_register()
   - Fixed assymetry in devm_ calls for the tegra/soctherm() driver
   - Fixed kernel documentation for API changes
   - Added missing static inline for a API stub
   - Hardened the test with two or three arguments in the cooling spec
   - Narrowed const: 2 strict in pwm-fan
---

Daniel Lezcano (9):
  thermal/core: Introduce non-OF thermal_cooling_device_register()
  thermal/core: Add devm_thermal_cooling_device_register()
  hwmon: Use non-OF thermal cooling device registration API
  thermal/core: Make cooling device OF node conditional on
    CONFIG_THERMAL_OF
  thermal/of: Move cooling device OF helpers out of thermal core
  thermal/of: Rename the devm_thermal_of_cooling_device_register()
    function
  thermal/of: Add cooling device ID support
  thermal/of: Pass cdev_id and introduce devm registration helper
  thermal/of: Support cooling device ID in cooling-spec

Gaurav Kohli (1):
  dt-bindings: thermal: cooling-devices: Update support for 3 cells
    cooling device

 .../devicetree/bindings/hwmon/pwm-fan.yaml    |   3 +-
 .../thermal/thermal-cooling-devices.yaml      |   8 +-
 .../bindings/thermal/thermal-zones.yaml       |   3 +-
 drivers/gpu/drm/etnaviv/etnaviv_gpu.c         |   5 +-
 drivers/hwmon/amc6821.c                       |   2 +-
 drivers/hwmon/aspeed-pwm-tacho.c              |   5 +-
 drivers/hwmon/cros_ec_hwmon.c                 |   4 +-
 drivers/hwmon/dell-smm-hwmon.c                |   4 +-
 drivers/hwmon/emc2305.c                       |   6 +-
 drivers/hwmon/gpio-fan.c                      |   6 +-
 drivers/hwmon/max6650.c                       |   6 +-
 drivers/hwmon/mlxreg-fan.c                    |   4 +-
 drivers/hwmon/npcm750-pwm-fan.c               |   6 +-
 drivers/hwmon/pwm-fan.c                       |   5 +-
 drivers/hwmon/qnap-mcu-hwmon.c                |   6 +-
 drivers/hwmon/tc654.c                         |   5 +-
 drivers/memory/tegra/tegra210-emc-core.c      |   4 +-
 drivers/soc/qcom/qcom_aoss.c                  |   2 +-
 drivers/thermal/cpufreq_cooling.c             |   2 +-
 drivers/thermal/cpuidle_cooling.c             |   2 +-
 drivers/thermal/devfreq_cooling.c             |   2 +-
 drivers/thermal/khadas_mcu_fan.c              |   7 +-
 drivers/thermal/tegra/soctherm.c              |   6 +-
 drivers/thermal/thermal_core.c                |  85 ++--------
 drivers/thermal/thermal_core.h                |   5 +
 drivers/thermal/thermal_of.c                  | 148 +++++++++++++++++-
 include/linux/thermal.h                       |  69 +++++---
 27 files changed, 273 insertions(+), 137 deletions(-)

-- 
2.43.0

Re: [PATCH vs/3/4/ 00/11] Support cooling device with ID in the OF
Posted by Daniel Lezcano 1 week, 3 days ago
Hi Rafael,

On 5/26/26 16:08, Daniel Lezcano wrote:

[ ... ]

> ---
> Changelog:
>   - V4
>     - Reworked splitted functions to register a cooling device and
>       merged separately

Are you fine with the thermal core changes in this series ?

Is it ok if I pick the series in my branch (and may be send a early PR) ?


>   - V3
>     - Reordered and reworked the patches to be git bisect safe
>     - Reworked devm usage by using a more adequate function doing the
>       same as the group of calls to devm*
>     - Pass an init callback instead of moving
>       thermal_cooling_device_init_complete() out of the function and
>       calling it in different places
>     - Sent separetely changes to the tegra soctherm driver
>   - V2
>     - Added stubs for OF functions in order to prevent to break the git
>       bisectability compilation
>     - Added missing call to thermal_cooling_device_init_complete() in
>       devm_thermal_of_cooling_device_register()
>     - Fixed assymetry in devm_ calls for the tegra/soctherm() driver
>     - Fixed kernel documentation for API changes
>     - Added missing static inline for a API stub
>     - Hardened the test with two or three arguments in the cooling spec
>     - Narrowed const: 2 strict in pwm-fan
> ---
> 
> Daniel Lezcano (9):
>    thermal/core: Introduce non-OF thermal_cooling_device_register()
>    thermal/core: Add devm_thermal_cooling_device_register()
>    hwmon: Use non-OF thermal cooling device registration API
>    thermal/core: Make cooling device OF node conditional on
>      CONFIG_THERMAL_OF
>    thermal/of: Move cooling device OF helpers out of thermal core
>    thermal/of: Rename the devm_thermal_of_cooling_device_register()
>      function
>    thermal/of: Add cooling device ID support
>    thermal/of: Pass cdev_id and introduce devm registration helper
>    thermal/of: Support cooling device ID in cooling-spec
> 
> Gaurav Kohli (1):
>    dt-bindings: thermal: cooling-devices: Update support for 3 cells
>      cooling device
> 
>   .../devicetree/bindings/hwmon/pwm-fan.yaml    |   3 +-
>   .../thermal/thermal-cooling-devices.yaml      |   8 +-
>   .../bindings/thermal/thermal-zones.yaml       |   3 +-
>   drivers/gpu/drm/etnaviv/etnaviv_gpu.c         |   5 +-
>   drivers/hwmon/amc6821.c                       |   2 +-
>   drivers/hwmon/aspeed-pwm-tacho.c              |   5 +-
>   drivers/hwmon/cros_ec_hwmon.c                 |   4 +-
>   drivers/hwmon/dell-smm-hwmon.c                |   4 +-
>   drivers/hwmon/emc2305.c                       |   6 +-
>   drivers/hwmon/gpio-fan.c                      |   6 +-
>   drivers/hwmon/max6650.c                       |   6 +-
>   drivers/hwmon/mlxreg-fan.c                    |   4 +-
>   drivers/hwmon/npcm750-pwm-fan.c               |   6 +-
>   drivers/hwmon/pwm-fan.c                       |   5 +-
>   drivers/hwmon/qnap-mcu-hwmon.c                |   6 +-
>   drivers/hwmon/tc654.c                         |   5 +-
>   drivers/memory/tegra/tegra210-emc-core.c      |   4 +-
>   drivers/soc/qcom/qcom_aoss.c                  |   2 +-
>   drivers/thermal/cpufreq_cooling.c             |   2 +-
>   drivers/thermal/cpuidle_cooling.c             |   2 +-
>   drivers/thermal/devfreq_cooling.c             |   2 +-
>   drivers/thermal/khadas_mcu_fan.c              |   7 +-
>   drivers/thermal/tegra/soctherm.c              |   6 +-
>   drivers/thermal/thermal_core.c                |  85 ++--------
>   drivers/thermal/thermal_core.h                |   5 +
>   drivers/thermal/thermal_of.c                  | 148 +++++++++++++++++-
>   include/linux/thermal.h                       |  69 +++++---
>   27 files changed, 273 insertions(+), 137 deletions(-)
>
Re: [PATCH vs/3/4/ 00/11] Support cooling device with ID in the OF
Posted by Rafael J. Wysocki 1 week, 3 days ago
Hi Daniel,

On Fri, May 29, 2026 at 10:35 AM Daniel Lezcano
<daniel.lezcano@oss.qualcomm.com> wrote:
>
>
> Hi Rafael,
>
> On 5/26/26 16:08, Daniel Lezcano wrote:
>
> [ ... ]
>
> > ---
> > Changelog:
> >   - V4
> >     - Reworked splitted functions to register a cooling device and
> >       merged separately
>
> Are you fine with the thermal core changes in this series ?

Generally, yes, I am, but let me have one more look at it.

> Is it ok if I pick the series in my branch (and may be send a early PR) ?

I have no comments, I'll respond with an Acked-by to it later today.

Thanks!
Re: [PATCH vs/3/4/ 00/11] Support cooling device with ID in the OF
Posted by Daniel Lezcano 1 week, 3 days ago
On 5/29/26 14:35, Rafael J. Wysocki wrote:
> Hi Daniel,
> 
> On Fri, May 29, 2026 at 10:35 AM Daniel Lezcano
> <daniel.lezcano@oss.qualcomm.com> wrote:
>>
>>
>> Hi Rafael,
>>
>> On 5/26/26 16:08, Daniel Lezcano wrote:
>>
>> [ ... ]
>>
>>> ---
>>> Changelog:
>>>    - V4
>>>      - Reworked splitted functions to register a cooling device and
>>>        merged separately
>>
>> Are you fine with the thermal core changes in this series ?
> 
> Generally, yes, I am, but let me have one more look at it.
> 
>> Is it ok if I pick the series in my branch (and may be send a early PR) ?
> 
> I have no comments, I'll respond with an Acked-by to it later today.
> 
> Thanks!

Thanks
Re: [PATCH vs/3/4/ 00/11] Support cooling device with ID in the OF
Posted by Lukasz Luba 1 week, 3 days ago
Hi Rafael and Daniel,

On 5/29/26 13:41, Daniel Lezcano wrote:
> On 5/29/26 14:35, Rafael J. Wysocki wrote:
>> Hi Daniel,
>>
>> On Fri, May 29, 2026 at 10:35 AM Daniel Lezcano
>> <daniel.lezcano@oss.qualcomm.com> wrote:
>>>
>>>
>>> Hi Rafael,
>>>
>>> On 5/26/26 16:08, Daniel Lezcano wrote:
>>>
>>> [ ... ]
>>>
>>>> ---
>>>> Changelog:
>>>>    - V4
>>>>      - Reworked splitted functions to register a cooling device and
>>>>        merged separately
>>>
>>> Are you fine with the thermal core changes in this series ?
>>
>> Generally, yes, I am, but let me have one more look at it.
>>
>>> Is it ok if I pick the series in my branch (and may be send a early 
>>> PR) ?
>>
>> I have no comments, I'll respond with an Acked-by to it later today.
>>
>> Thanks!
> 
> Thanks

I have re-ordered the patch 4 <-> 5 and the compilation issue goes away.
If you decide to do that feel free to add my tag to the current patch
04/10:

Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

Regards,
Lukasz
Re: [PATCH vs/3/4/ 00/11] Support cooling device with ID in the OF
Posted by Daniel Lezcano 1 week, 3 days ago
On 5/29/26 17:29, Lukasz Luba wrote:
> Hi Rafael and Daniel,
> 
> On 5/29/26 13:41, Daniel Lezcano wrote:
>> On 5/29/26 14:35, Rafael J. Wysocki wrote:
>>> Hi Daniel,
>>>
>>> On Fri, May 29, 2026 at 10:35 AM Daniel Lezcano
>>> <daniel.lezcano@oss.qualcomm.com> wrote:
>>>>
>>>>
>>>> Hi Rafael,
>>>>
>>>> On 5/26/26 16:08, Daniel Lezcano wrote:
>>>>
>>>> [ ... ]
>>>>
>>>>> ---
>>>>> Changelog:
>>>>>    - V4
>>>>>      - Reworked splitted functions to register a cooling device and
>>>>>        merged separately
>>>>
>>>> Are you fine with the thermal core changes in this series ?
>>>
>>> Generally, yes, I am, but let me have one more look at it.
>>>
>>>> Is it ok if I pick the series in my branch (and may be send a early 
>>>> PR) ?
>>>
>>> I have no comments, I'll respond with an Acked-by to it later today.
>>>
>>> Thanks!
>>
>> Thanks
> 
> I have re-ordered the patch 4 <-> 5 and the compilation issue goes away.
> If you decide to do that feel free to add my tag to the current patch
> 04/10:
> 
> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>

Thanks Lukasz !
Re: [PATCH vs/3/4/ 00/11] Support cooling device with ID in the OF
Posted by Rafael J. Wysocki 1 week, 3 days ago
On Fri, May 29, 2026 at 5:31 PM Daniel Lezcano
<daniel.lezcano@oss.qualcomm.com> wrote:
>
> On 5/29/26 17:29, Lukasz Luba wrote:
> > Hi Rafael and Daniel,
> >
> > On 5/29/26 13:41, Daniel Lezcano wrote:
> >> On 5/29/26 14:35, Rafael J. Wysocki wrote:
> >>> Hi Daniel,
> >>>
> >>> On Fri, May 29, 2026 at 10:35 AM Daniel Lezcano
> >>> <daniel.lezcano@oss.qualcomm.com> wrote:
> >>>>
> >>>>
> >>>> Hi Rafael,
> >>>>
> >>>> On 5/26/26 16:08, Daniel Lezcano wrote:
> >>>>
> >>>> [ ... ]
> >>>>
> >>>>> ---
> >>>>> Changelog:
> >>>>>    - V4
> >>>>>      - Reworked splitted functions to register a cooling device and
> >>>>>        merged separately
> >>>>
> >>>> Are you fine with the thermal core changes in this series ?
> >>>
> >>> Generally, yes, I am, but let me have one more look at it.
> >>>
> >>>> Is it ok if I pick the series in my branch (and may be send a early
> >>>> PR) ?
> >>>
> >>> I have no comments, I'll respond with an Acked-by to it later today.
> >>>
> >>> Thanks!
> >>
> >> Thanks
> >
> > I have re-ordered the patch 4 <-> 5 and the compilation issue goes away.
> > If you decide to do that feel free to add my tag to the current patch
> > 04/10:
> >
> > Reviewed-by: Lukasz Luba <lukasz.luba@arm.com>
>
> Thanks Lukasz !

So with the change mentioned above by Lukasz, please feel free to add

Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>

to the series and take it into your branch.

And yes, an early PR would be welcome.