Patchwork thermal: of-thermal: support to select governor in dts for thermal zone

login
register
mail settings
Submitter Yi Zeng
Date Jan. 7, 2019, 3:04 p.m.
Message ID <1546873479-20415-1-git-send-email-yizeng@asrmicro.com>
Download mbox | patch
Permalink /patch/693981/
State New
Headers show

Comments

Yi Zeng - Jan. 7, 2019, 3:04 p.m.
Add the governor property parsing that defined in thermal zone node
in dts. If define the governor property for one thermal zone, for
example, governor = "step_wise", then parse and register the thermal
zone will find and set the right governor, except the only choice
of default governor.

Signed-off-by: Yi Zeng <yizeng@asrmicro.com>
---
 drivers/thermal/of-thermal.c | 5 +++++
 1 file changed, 5 insertions(+)
Matthias Kaehlcke - Jan. 29, 2019, 7:14 p.m.
On Mon, Jan 07, 2019 at 11:04:39PM +0800, Yi Zeng wrote:
> Add the governor property parsing that defined in thermal zone node
> in dts. If define the governor property for one thermal zone, for
> example, governor = "step_wise", then parse and register the thermal
> zone will find and set the right governor, except the only choice
> of default governor.
> 
> Signed-off-by: Yi Zeng <yizeng@asrmicro.com>
> ---
>  drivers/thermal/of-thermal.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
> index 4bfdb4a..f9368f4 100644
> --- a/drivers/thermal/of-thermal.c
> +++ b/drivers/thermal/of-thermal.c
> @@ -1024,6 +1024,7 @@ int __init of_parse_thermal_zones(void)
>  		struct thermal_zone_params *tzp;
>  		int i, mask = 0;
>  		u32 prop;
> +		const char *name;
>  
>  		tz = thermal_of_build_thermal_zone(child);
>  		if (IS_ERR(tz)) {
> @@ -1049,6 +1050,10 @@ int __init of_parse_thermal_zones(void)
>  		if (!of_property_read_u32(child, "sustainable-power", &prop))
>  			tzp->sustainable_power = prop;
>  
> +		if (!of_property_read_string(child, "governor", &name))
> +			strncpy(tzp->governor_name, name,
> +				THERMAL_NAME_LENGTH);
> +
>  		for (i = 0; i < tz->ntrips; i++)
>  			mask |= 1 << i;

For reference, the discussion of a similar patch about a year ago:
https://patchwork.kernel.org/patch/10259487/

From a board developer POV I can see why you would want this, but
maintainers seem(ed) to think that it could cause more problems
than it solves.

Some arguments that were brought up against configuring the governor
in the DT:

- the DT should describe the hardware, not policy
- the specified governor might not exist / be enabled
- sysfs is more flexible than the DT

Cheers

Matthias

Patch

diff --git a/drivers/thermal/of-thermal.c b/drivers/thermal/of-thermal.c
index 4bfdb4a..f9368f4 100644
--- a/drivers/thermal/of-thermal.c
+++ b/drivers/thermal/of-thermal.c
@@ -1024,6 +1024,7 @@  int __init of_parse_thermal_zones(void)
 		struct thermal_zone_params *tzp;
 		int i, mask = 0;
 		u32 prop;
+		const char *name;
 
 		tz = thermal_of_build_thermal_zone(child);
 		if (IS_ERR(tz)) {
@@ -1049,6 +1050,10 @@  int __init of_parse_thermal_zones(void)
 		if (!of_property_read_u32(child, "sustainable-power", &prop))
 			tzp->sustainable_power = prop;
 
+		if (!of_property_read_string(child, "governor", &name))
+			strncpy(tzp->governor_name, name,
+				THERMAL_NAME_LENGTH);
+
 		for (i = 0; i < tz->ntrips; i++)
 			mask |= 1 << i;