mbox series

[RFC,0/2] Add a generic virtual thermal sensor

Message ID 20210819123215.591593-1-abailon@baylibre.com
Headers show
Series Add a generic virtual thermal sensor | expand

Message

Alexandre Bailon Aug. 19, 2021, 12:32 p.m. UTC
This series add a virtual thermal sensor that uses the hardware thermal sensors,
aggregate them to return a temperature.

My first aptempt was to do the aggregation in the thermal zone but it was not
that easy to do, and, there were some case that would have been conflictual
such as setting differents trip for a regular zone and a multisensor zone.

Instead, I made a virtual thermal sensor that could registered in a thermal
zone, and have its own properties.
It could be added in the device tree, with the list of sensors to aggregate,
and the type of aggregation to be done.

As example:
  soc_max_sensor: soc_max_sensor {
    compatible = "generic,thermal-aggregator";
    #thermal-sensor-cells = <1>;
    type = "max";
    thermal-sensors = <&lvts 0>, <&lvts 1>, <&lvts 2>, <&lvts 3>,
          <&lvts 4>, <&lvts 5>, <&lvts 6>, <&lvts 7>,
          <&lvts 8>, <&lvts 9>, <&lvts 10>, <&lvts 11>,
          <&lvts 12>, <&lvts 13>, <&lvts 14>, <&lvts 15>,
          <&lvts 16>;
  };

The current series build and work but it would require to be completed
aswell a lot of cleanup.
Before working on it, I would like to get some feedback and I know if that
would an acceptable solution and continue that way.

Follows the following discussion:
https://patchwork.kernel.org/project/linux-mediatek/patch/20210617114707.10618-3-ben.tseng@mediatek.com/

Alexandre Bailon (2):
  thermal: provide a way to get thermal sensor from a device tree node
  thermal: add a virtual sensor to aggregate temperatures

 drivers/thermal/Kconfig              |   8 ++
 drivers/thermal/Makefile             |   1 +
 drivers/thermal/thermal_aggregator.c | 134 +++++++++++++++++++++++++++
 drivers/thermal/thermal_of.c         |  43 +++++++++
 include/linux/thermal.h              |  12 +++
 5 files changed, 198 insertions(+)
 create mode 100644 drivers/thermal/thermal_aggregator.c

Comments

Daniel Lezcano Aug. 20, 2021, 11:30 a.m. UTC | #1
Hi Alexandre,

thanks for the proposal.

On 19/08/2021 14:32, Alexandre Bailon wrote:
> This series add a virtual thermal sensor that uses the hardware thermal sensors,

> aggregate them to return a temperature.

> 

> My first aptempt was to do the aggregation in the thermal zone but it was not

> that easy to do, and, there were some case that would have been conflictual

> such as setting differents trip for a regular zone and a multisensor zone.

> 

> Instead, I made a virtual thermal sensor that could registered in a thermal

> zone, and have its own properties.

> It could be added in the device tree, with the list of sensors to aggregate,

> and the type of aggregation to be done.

> 

> As example:

>   soc_max_sensor: soc_max_sensor {

>     compatible = "generic,thermal-aggregator";

>     #thermal-sensor-cells = <1>;

>     type = "max";

>     thermal-sensors = <&lvts 0>, <&lvts 1>, <&lvts 2>, <&lvts 3>,

>           <&lvts 4>, <&lvts 5>, <&lvts 6>, <&lvts 7>,

>           <&lvts 8>, <&lvts 9>, <&lvts 10>, <&lvts 11>,

>           <&lvts 12>, <&lvts 13>, <&lvts 14>, <&lvts 15>,

>           <&lvts 16>;

>   };

> 

> The current series build and work but it would require to be completed

> aswell a lot of cleanup.

> Before working on it, I would like to get some feedback and I know if that

> would an acceptable solution and continue that way.


Yes, I think it is going to the right direction.

IMO, we can get rid of the thermal_of changes. From a design PoV, the
patch itself should be the virtual thermal driver without any changes in
the core code, including thermal_of.

I have some comments on patch 2/2


> Follows the following discussion:

> https://patchwork.kernel.org/project/linux-mediatek/patch/20210617114707.10618-3-ben.tseng@mediatek.com/

> 

> Alexandre Bailon (2):

>   thermal: provide a way to get thermal sensor from a device tree node

>   thermal: add a virtual sensor to aggregate temperatures

> 

>  drivers/thermal/Kconfig              |   8 ++

>  drivers/thermal/Makefile             |   1 +

>  drivers/thermal/thermal_aggregator.c | 134 +++++++++++++++++++++++++++

>  drivers/thermal/thermal_of.c         |  43 +++++++++

>  include/linux/thermal.h              |  12 +++

>  5 files changed, 198 insertions(+)

>  create mode 100644 drivers/thermal/thermal_aggregator.c

> 



-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
Alexandre Bailon Aug. 23, 2021, 7:35 a.m. UTC | #2
Hi Daniel,

On 20/08/2021 13:30, Daniel Lezcano wrote:
> Hi Alexandre,

>

> thanks for the proposal.

>

> On 19/08/2021 14:32, Alexandre Bailon wrote:

>> This series add a virtual thermal sensor that uses the hardware thermal sensors,

>> aggregate them to return a temperature.

>>

>> My first aptempt was to do the aggregation in the thermal zone but it was not

>> that easy to do, and, there were some case that would have been conflictual

>> such as setting differents trip for a regular zone and a multisensor zone.

>>

>> Instead, I made a virtual thermal sensor that could registered in a thermal

>> zone, and have its own properties.

>> It could be added in the device tree, with the list of sensors to aggregate,

>> and the type of aggregation to be done.

>>

>> As example:

>>    soc_max_sensor: soc_max_sensor {

>>      compatible = "generic,thermal-aggregator";

>>      #thermal-sensor-cells = <1>;

>>      type = "max";

>>      thermal-sensors = <&lvts 0>, <&lvts 1>, <&lvts 2>, <&lvts 3>,

>>            <&lvts 4>, <&lvts 5>, <&lvts 6>, <&lvts 7>,

>>            <&lvts 8>, <&lvts 9>, <&lvts 10>, <&lvts 11>,

>>            <&lvts 12>, <&lvts 13>, <&lvts 14>, <&lvts 15>,

>>            <&lvts 16>;

>>    };

>>

>> The current series build and work but it would require to be completed

>> aswell a lot of cleanup.

>> Before working on it, I would like to get some feedback and I know if that

>> would an acceptable solution and continue that way.

> Yes, I think it is going to the right direction.

>

> IMO, we can get rid of the thermal_of changes. From a design PoV, the

> patch itself should be the virtual thermal driver without any changes in

> the core code, including thermal_of.

I made that changes in order to be able to get the hw sensors from the 
virtual sensor.
I am not really satisfied of that patch but that the simplest way I 
found to do it.
How would you proceed to get the hw sensor from its device tree phandle 
and id ?

Thanks,
Alexandre

>

> I have some comments on patch 2/2

>

>

>> Follows the following discussion:

>> https://patchwork.kernel.org/project/linux-mediatek/patch/20210617114707.10618-3-ben.tseng@mediatek.com/

>>

>> Alexandre Bailon (2):

>>    thermal: provide a way to get thermal sensor from a device tree node

>>    thermal: add a virtual sensor to aggregate temperatures

>>

>>   drivers/thermal/Kconfig              |   8 ++

>>   drivers/thermal/Makefile             |   1 +

>>   drivers/thermal/thermal_aggregator.c | 134 +++++++++++++++++++++++++++

>>   drivers/thermal/thermal_of.c         |  43 +++++++++

>>   include/linux/thermal.h              |  12 +++

>>   5 files changed, 198 insertions(+)

>>   create mode 100644 drivers/thermal/thermal_aggregator.c

>>

>
Daniel Lezcano Aug. 23, 2021, 8:40 a.m. UTC | #3
On 23/08/2021 09:35, Alexandre Bailon wrote:

[ ... ]

> I am not really satisfied of that patch but that the simplest way I

> found to do it.

> How would you proceed to get the hw sensor from its device tree phandle

> and id ?


Could the function 'thermal_zone_of_get_sensor_id' help ?


-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog