Add a generic virtual thermal sensor
Subsystems (2)
v4 cover Add a generic virtual thermal sensor
This series add a virtual thermal sensor.
It could be used to get a temperature using some thermal sensors. Currently, the supported operations are max, min and avg.
The virtual sensor could be easily extended to support others operations.
Changes in v2:
- Fix some warnings / errors reported by kernel test robot
- rename some struct and functions with a more accurate name
- update the dt bindings: rename type attribute to aggregation-function
- factorize a little bit the aggregation functions
Changes in v3:
- Aggregate thermal zone instead of thermal sensors
- Use try_get_module / put_module to prevent thermal providers to be removed
- Update the bindings, to be more accurate
Changes in v4:
- Fix two warnings reported by kernel test robot
Alexandre Bailon (2):
dt-bindings: Add DT bindings for the DT-based virtual sensor driver
thermal: add a virtual sensor to aggregate temperatures
Alexandre Bailon (2):
dt-bindings: Add DT bindings for the DT-based virtual sensor driver
thermal: add a virtual sensor to aggregate temperatures
.../thermal/virtual,thermal-sensor.yaml | 86 +++++++ drivers/thermal/Kconfig | 8 + drivers/thermal/Makefile | 1 + drivers/thermal/virtual_thermal_sensor.c | 218 ++++++++++++++++++ include/dt-bindings/thermal/virtual-sensor.h | 15 ++ 5 files changed, 328 insertions(+) create mode 100644 Documentation/devicetree/bindings/thermal/virtual,thermal-sensor.yaml create mode 100644 drivers/thermal/virtual_thermal_sensor.c create mode 100644 include/dt-bindings/thermal/virtual-sensor.h
Signature · 1 line
2.25.1
PATCH RESEND v4 1/2 dt-bindings: Add DT bindings for the DT-based virtual sensor driver
This adds the DT bindings for the DT-based virtual sensor driver. This driver provides a way, using DT, to aggregate the temperature of multiple thermal zones and get some useful data from it.
--- .../thermal/virtual,thermal-sensor.yaml | 86 +++++++++++++++++++ include/dt-bindings/thermal/virtual-sensor.h | 15 ++++ 2 files changed, 101 insertions(+) create mode 100644 Documentation/devicetree/bindings/thermal/virtual,thermal-sensor.yaml create mode 100644 include/dt-bindings/thermal/virtual-sensor.h
Documentation/devicetree/bindings/thermal/virtual,thermal-sensor.yaml new file +86 -0
@@ -0,0 +1,86 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +# Copyright 2021 BayLibre +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/thermal/virtual,thermal-sensor.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Virtual thermal sensor binding + +maintainers: + - Alexandre Bailon <[email protected]> + +description: | + The virtual thermal sensor device provides a way to aggregate the temperature + from multiple thermal zones. Basically, this could be used to get the + maximum, minimum or average temperature. + +allOf: + - $ref: thermal-sensor.yaml# + +properties: + compatible: + const: virtual,thermal-sensor + + aggregation-function: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Used to select the operations to perform on the sensors to get the virtual + sensor temperature. + enum: + - VIRTUAL_THERMAL_SENSOR_MIN_VAL + - VIRTUAL_THERMAL_SENSOR_MAX_VAL + - VIRTUAL_THERMAL_SENSOR_AVG_VAL + + thermal-sensors: + $ref: /schemas/types.yaml#/definitions/string-array + description: + The names of the thermal zone to aggregate. + +required: + - aggregation-function + - thermal-sensors + +additionalProperties: true + +examples: + - | + #include <dt-bindings/thermal/thermal.h> + #include <dt-bindings/thermal/virtual-sensor.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/clock/mt8192-clk.h> + + lvts: lvts@1100b000 { + compatible = "mediatek,mt6873-lvts"; + reg = <0x1100b000 0x1000>; + clocks = <&infracfg CLK_INFRA_THERM>; + clock-names = "lvts_clk"; + #thermal-sensor-cells = <1>; + interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>; + }; + + cpu_max_sensor: cpu_max_sensor { + compatible = "virtual,thermal-sensor"; + #thermal-sensor-cells = <1>; + aggregation-function = <VIRTUAL_THERMAL_SENSOR_MAX_VAL>; + thermal-sensors = "cpu1", "cpu2"; + }; + + thermal_zones: thermal-zones { + cpu1 { + polling-delay = <0>; /* milliseconds */ + polling-delay-passive = <0>; /* milliseconds */ + thermal-sensors = <&lvts 0>; + }; + cpu2 { + polling-delay = <0>; /* milliseconds */ + polling-delay-passive = <0>; /* milliseconds */ + thermal-sensors = <&lvts 1>; + }; + cpu_max { + polling-delay = <0>; /* milliseconds */ + polling-delay-passive = <0>; /* milliseconds */ + thermal-sensors = <&cpu_max_sensor 0>; + }; + }; +...
include/dt-bindings/thermal/virtual-sensor.h new file +15 -0
@@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* +* This header provides constants for virtual thermal sensor bindings. +* +* Copyright (C) 2021 BayLibre +*/ + +#ifndef _DT_BINDINGS_THERMAL_VIRTUAL_SENSOR_H +#define _DT_BINDINGS_THERMAL_VIRTUAL_SENSOR_H + +#define VIRTUAL_THERMAL_SENSOR_MIN_VAL 0 +#define VIRTUAL_THERMAL_SENSOR_MAX_VAL 1 +#define VIRTUAL_THERMAL_SENSOR_AVG_VAL 2 + +#endif /* _DT_BINDINGS_THERMAL_VIRTUAL_SENSOR_H */
Signature · 1 line
2.25.1
Re: [PATCH v4 RESEND 1/2] dt-bindings: Add DT bindings for the DT-based virtual sensor driver
Quoted 6 lines · Alexandre Bailon
This adds the DT bindings for the DT-based virtual sensor driver. This driver provides a way, using DT, to aggregate the temperature of multiple thermal zones and get some useful data from it.
Signed-off-by Alexandre Bailon <[email protected]>---
[ ... ]
Quoted 16 lines
Documentation/devicetree/bindings/thermal/virtual,thermal-sensor.yaml new file +16
-0+description: | + The virtual thermal sensor device provides a way to aggregate the temperature + from multiple thermal zones. Basically, this could be used to get the + maximum, minimum or average temperature. + +allOf: + - $ref: thermal-sensor.yaml# + +properties: + compatible: + const: virtual,thermal-sensor + + aggregation-function: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Used to select the operations to perform on the sensors to get the virtual
Documentation/devicetree/bindings/thermal/virtual,thermal-sensor.yaml line 38
Quoted 10 lines
Documentation/devicetree/bindings/thermal/virtual,thermal-sensor.yaml new file +10
-0+ sensor temperature. + enum: + - VIRTUAL_THERMAL_SENSOR_MIN_VAL + - VIRTUAL_THERMAL_SENSOR_MAX_VAL + - VIRTUAL_THERMAL_SENSOR_AVG_VAL + + thermal-sensors: + $ref: /schemas/types.yaml#/definitions/string-array + description: + The names of the thermal zone to aggregate.
IMO this is not correct. We are dealing with virtual sensor in order to aggregate a group of sensors in a thermal zone. But actually this description aggregates the thermal zones.
I recalled a detail about the binding from the old 'txt' format from [1].
"- thermal-sensors: A list of thermal sensor phandles and sensor specifier
Type: list of phandles + sensor specifier used while monitoring the
thermal zone."
This information was lost in the conversion to yaml with commit 1202a442a31fd
In addition, the "coefficients" property tells the 'thermal-sensors' property can have multiple sensors.
So actually, the bindings should be fixed as part of the information was lost during of the txt -> yaml conversion.
And the multiple sensors per thermal zone could be implemented as that was something planned since a while.
I realize we initially asked to create a virtual sensor but that is not the most adequate ATM. Doing the multiple sensors support makes more sense to me, especially it does not require any extra binding except an attribute tell what kind of temperature aggregation we do. Defaulting to max should suffice when no aggregation method is set.
-- Daniel
Signature · 5 lines
<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
PATCH RESEND v4 2/2 thermal: add a virtual sensor to aggregate temperatures
In reply to Alexandre BailonThis adds a virtual thermal sensor driver that reads temperature from multiple hardware sensors and returns an aggregated temperature. Currently, this supports three aggregations:
the minimum, maximum and average temperature.
--- drivers/thermal/Kconfig | 8 + drivers/thermal/Makefile | 1 + drivers/thermal/virtual_thermal_sensor.c | 218 +++++++++++++++++++++++ 3 files changed, 227 insertions(+) create mode 100644 drivers/thermal/virtual_thermal_sensor.c
drivers/thermal/Kconfig +8 -0
@@ -228,6 +228,14 @@ config THERMAL_MMIO register or shared memory, is a potential candidate to work with this driver. +config VIRTUAL_THERMAL + tristate "DT-based virtual thermal sensor driver" + depends on THERMAL_OF || COMPILE_TEST + help + This option enables the generic DT-based thermal sensor aggregator. + This driver creates a thermal sensor that reads multiple hardware + sensors and aggregates their output. + config HISI_THERMAL tristate "Hisilicon thermal driver" depends on ARCH_HISI || COMPILE_TEST
drivers/thermal/Makefile +1 -0
@@ -60,3 +60,4 @@ obj-$(CONFIG_UNIPHIER_THERMAL) += uniphier_thermal.o obj-$(CONFIG_AMLOGIC_THERMAL) += amlogic_thermal.o obj-$(CONFIG_SPRD_THERMAL) += sprd_thermal.o obj-$(CONFIG_KHADAS_MCU_FAN_THERMAL) += khadas_mcu_fan.o +obj-$(CONFIG_VIRTUAL_THERMAL) += virtual_thermal_sensor.o
drivers/thermal/virtual_thermal_sensor.c new file +218 -0
218 lines not on this page · raw message
Signature · 1 line
2.25.1
Daniel, Amit,
Quoted 5 lines · Alexandre Bailon
This series add a virtual thermal sensor.
It could be used to get a temperature using some thermal sensors. Currently, the supported operations are max, min and avg.
The virtual sensor could be easily extended to support others operations.
Quoted 11 lines
Changes in v2:
- Fix some warnings / errors reported by kernel test robot
- rename some struct and functions with a more accurate name
- update the dt bindings: rename type attribute to aggregation-function
- factorize a little bit the aggregation functions
Changes in v3:
- Aggregate thermal zone instead of thermal sensors
- Usetry_get_module/put_moduleto prevent thermal providers to be removed
- Update the bindings, to be more accurate
Changes in v4:
- Fix two warnings reported by kernel test robot
Any more feedback on this series?
Thanks,
Kevin
Rafael J. Wysocki
maintainerQuoted 22 lines · Kevin Hilman
Daniel, Amit,
Quoted 5 lines · Alexandre Bailon
This series add a virtual thermal sensor.
It could be used to get a temperature using some thermal sensors. Currently, the supported operations are max, min and avg.
The virtual sensor could be easily extended to support others operations.Quoted 11 lines
Changes in v2:
- Fix some warnings / errors reported by kernel test robot
- rename some struct and functions with a more accurate name
- update the dt bindings: rename type attribute to aggregation-function
- factorize a little bit the aggregation functions
Changes in v3:
- Aggregate thermal zone instead of thermal sensors
- Usetry_get_module/put_moduleto prevent thermal providers to be removed
- Update the bindings, to be more accurate
Changes in v4:
- Fix two warnings reported by kernel test robot
Quoted 1 line
Any more feedback on this series?
Hopefully, I'll get to it this week and I'll let you know.
Quoted 23 lines · Rafael J. Wysocki
Quoted 22 lines · Kevin Hilman
Daniel, Amit,
Quoted 16 lines · Alexandre Bailon
This series add a virtual thermal sensor.
It could be used to get a temperature using some thermal sensors. Currently, the supported operations are max, min and avg.
The virtual sensor could be easily extended to support others operations.Changes in v2:
- Fix some warnings / errors reported by kernel test robot
- rename some struct and functions with a more accurate name
- update the dt bindings: rename type attribute to aggregation-function
- factorize a little bit the aggregation functions
Changes in v3:
- Aggregate thermal zone instead of thermal sensors
- Usetry_get_module/put_moduleto prevent thermal providers to be removed
- Update the bindings, to be more accurate
Changes in v4:
- Fix two warnings reported by kernel test robot
Quoted 3 lines
Quoted 1 line
Any more feedback on this series?
Hopefully, I'll get to it this week and I'll let you know.
Thanks Rafael,
Kevin
Rafael J. Wysocki
maintainerQuoted 26 lines · Kevin Hilman
Quoted 23 lines · Rafael J. Wysocki
Quoted 22 lines · Kevin Hilman
Daniel, Amit,
Quoted 16 lines · Alexandre Bailon
This series add a virtual thermal sensor.
It could be used to get a temperature using some thermal sensors. Currently, the supported operations are max, min and avg.
The virtual sensor could be easily extended to support others operations.Changes in v2:
- Fix some warnings / errors reported by kernel test robot
- rename some struct and functions with a more accurate name
- update the dt bindings: rename type attribute to aggregation-function
- factorize a little bit the aggregation functions
Changes in v3:
- Aggregate thermal zone instead of thermal sensors
- Usetry_get_module/put_moduleto prevent thermal providers to be removed
- Update the bindings, to be more accurate
Changes in v4:
- Fix two warnings reported by kernel test robot
Quoted 5 lines
Quoted 3 lines
Quoted 1 line
Any more feedback on this series?
Hopefully, I'll get to it this week and I'll let you know.
Thanks Rafael,
Done, please see
https://lore.kernel.org/linux-pm/CAJZ5v0jejFG76OfewYg3kmKv4xwLdRBpC+zRpJ9Jom+tqo7qyg@mail.gmail.com/
Quoted 27 lines · Rafael J. Wysocki
Quoted 26 lines · Kevin Hilman
Quoted 23 lines · Rafael J. Wysocki
Quoted 22 lines · Kevin Hilman
Daniel, Amit,
Quoted 16 lines · Alexandre Bailon
This series add a virtual thermal sensor.
It could be used to get a temperature using some thermal sensors. Currently, the supported operations are max, min and avg.
The virtual sensor could be easily extended to support others operations.Changes in v2:
- Fix some warnings / errors reported by kernel test robot
- rename some struct and functions with a more accurate name
- update the dt bindings: rename type attribute to aggregation-function
- factorize a little bit the aggregation functions
Changes in v3:
- Aggregate thermal zone instead of thermal sensors
- Usetry_get_module/put_moduleto prevent thermal providers to be removed
- Update the bindings, to be more accurate
Changes in v4:
- Fix two warnings reported by kernel test robot
Quoted 8 lines
Quoted 5 lines
Quoted 3 lines
Quoted 1 line
Any more feedback on this series?
Hopefully, I'll get to it this week and I'll let you know.
Thanks Rafael,
Done, please see
https://lore.kernel.org/linux-pm/CAJZ5v0jejFG76OfewYg3kmKv4xwLdRBpC+zRpJ9Jom+tqo7qyg@mail.gmail.com/
Thank you.