All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Valentin <eduardo.valentin@ti.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Eduardo Valentin <eduardo.valentin@ti.com>,
	"swarren@wwwdotorg.org" <swarren@wwwdotorg.org>,
	Pawel Moll <Pawel.Moll@arm.com>,
	"ian.campbell@citrix.com" <ian.campbell@citrix.com>,
	"grant.likely@linaro.org" <grant.likely@linaro.org>,
	"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
	"linux@roeck-us.net" <linux@roeck-us.net>,
	"rui.zhang@intel.com" <rui.zhang@intel.com>,
	"wni@nvidia.com" <wni@nvidia.com>,
	"durgadoss.r@intel.com" <durgadoss.r@intel.com>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	"cpufreq@vger.kernel.org" <cpufreq@vger.kernel.org>,
	"devicetree-discuss@lists.ozlabs.org" <>
Subject: Re: [RFC PATCH 01/14] cpufreq: cpufreq-cpu0: add dt node parsing for 'cooling-zones'
Date: Tue, 27 Aug 2013 09:05:48 -0400	[thread overview]
Message-ID: <521CA42C.9040106@ti.com> (raw)
In-Reply-To: <20130827092931.GB19893@e106331-lin.cambridge.arm.com>

[-- Attachment #1: Type: text/plain, Size: 4619 bytes --]

Hey Mark,

On 27-08-2013 05:29, Mark Rutland wrote:
> On Sat, Aug 24, 2013 at 12:15:42AM +0100, Eduardo Valentin wrote:
>> This patch changes the cpufreq-cpu0 driver to consider if
>> a cpu needs cooling (with cpufreq). In case the cooling is needed,
>> it can be flagged at the cpu0 device tree node, with the list
>> of zones property 'cooling-zones'.
>>
>> In case this list of zones is present, the driver will
>> load a cpufreq cooling device in the system. The cpufreq-cpu0
>> driver is not interested in determining how the system should
>> be using the cooling device. The driver is responsible
>> only of loading the cooling device.
>>
>> Describing how the cooling device will be used can be
>> accomplished by setting up a thermal zone that references
>> and is composed by the cpufreq cooling device.
>>
>> Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
>> Cc: Viresh Kumar <viresh.kumar@linaro.org>
>> Cc: Grant Likely <grant.likely@linaro.org>
>> Cc: Rob Herring <rob.herring@calxeda.com>
>> Cc: cpufreq@vger.kernel.org
>> Cc: linux-pm@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> Cc: devicetree-discuss@lists.ozlabs.org
>> Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
>> ---
>>  Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt |  4 ++++
>>  drivers/cpufreq/cpufreq-cpu0.c                             | 12 ++++++++++++
>>  2 files changed, 16 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> index 051f764..add50f7 100644
>> --- a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> +++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> @@ -15,6 +15,9 @@ Optional properties:
>>  - clock-latency: Specify the possible maximum transition latency for clock,
>>    in unit of nanoseconds.
>>  - voltage-tolerance: Specify the CPU voltage tolerance in percentage.
>> +- cooling-zones: A list of thermal zones phandles. The generic cpu
>> +  cooling (freq clipping) is loaded by the generic cpufreq-cpu0 driver
>> +  in case the device tree node has this list.
> 
> Bindings should not describe the behaviour of any kernel (and for that
> reason I'm not very keen on the current cpufreq-cpu0 binding document).
> 

Right.

> Bindings should simply describe the hardware. This addition could
> instead be:
> 
>  - cooling-zones: a list of thermal zone phandles.
> 

OK. This works for me.

> However, as the thermal zone binding doesn't seem to have appeared by
> this patch, it should get moved later anyway...

Yeah, I will reorder them.

> 
> Thanks,
> Mark.
> 
>>  
>>  Examples:
>>  
>> @@ -33,6 +36,7 @@ cpus {
>>  			198000  850000
>>  		>;
>>  		clock-latency = <61036>; /* two CLK32 periods */
>> +		cooling-zones = <&cpu_thermal>;
>>  	};
>>  
>>  	cpu@1 {
>> diff --git a/drivers/cpufreq/cpufreq-cpu0.c b/drivers/cpufreq/cpufreq-cpu0.c
>> index ad1fde2..ede6487 100644
>> --- a/drivers/cpufreq/cpufreq-cpu0.c
>> +++ b/drivers/cpufreq/cpufreq-cpu0.c
>> @@ -20,6 +20,9 @@
>>  #include <linux/platform_device.h>
>>  #include <linux/regulator/consumer.h>
>>  #include <linux/slab.h>
>> +#include <linux/thermal.h>
>> +#include <linux/cpu_cooling.h>
>> +#include <linux/cpumask.h>
>>  
>>  static unsigned int transition_latency;
>>  static unsigned int voltage_tolerance; /* in percentage */
>> @@ -28,6 +31,7 @@ static struct device *cpu_dev;
>>  static struct clk *cpu_clk;
>>  static struct regulator *cpu_reg;
>>  static struct cpufreq_frequency_table *freq_table;
>> +static struct thermal_cooling_device *cdev;
>>  
>>  static int cpu0_verify_speed(struct cpufreq_policy *policy)
>>  {
>> @@ -268,6 +272,13 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev)
>>  		goto out_free_table;
>>  	}
>>  
>> +	/*
>> +	 * For now, just loading the cooling device;
>> +	 * thermal DT code takes care of matching them.
>> +	 */
>> +	if (of_find_property(np, "cooling-zones", NULL))
>> +		cdev = cpufreq_cooling_register(cpu_present_mask);
>> +
>>  	of_node_put(np);
>>  	of_node_put(parent);
>>  	return 0;
>> @@ -283,6 +294,7 @@ out_put_parent:
>>  
>>  static int cpu0_cpufreq_remove(struct platform_device *pdev)
>>  {
>> +	cpufreq_cooling_unregister(cdev);
>>  	cpufreq_unregister_driver(&cpu0_cpufreq_driver);
>>  	opp_free_cpufreq_table(cpu_dev, &freq_table);
>>  
>> -- 
>> 1.8.2.1.342.gfa7285d
>>
>>
> 
> 


-- 
You have got to be excited about what you are doing. (L. Lamport)

Eduardo Valentin


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 295 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Valentin <eduardo.valentin@ti.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Eduardo Valentin <eduardo.valentin@ti.com>,
	"swarren@wwwdotorg.org" <swarren@wwwdotorg.org>,
	Pawel Moll <Pawel.Moll@arm.com>,
	"ian.campbell@citrix.com" <ian.campbell@citrix.com>,
	"grant.likely@linaro.org" <grant.likely@linaro.org>,
	"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
	"linux@roeck-us.net" <linux@roeck-us.net>,
	"rui.zhang@intel.com" <rui.zhang@intel.com>,
	"wni@nvidia.com" <wni@nvidia.com>,
	"durgadoss.r@intel.com" <durgadoss.r@intel.com>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	"cpufreq@vger.kernel.org" <cpufreq@vger.kernel.org>,
	"devicetree-discuss@lists.ozlabs.org" <devicetree-discuss@>
Subject: Re: [RFC PATCH 01/14] cpufreq: cpufreq-cpu0: add dt node parsing for 'cooling-zones'
Date: Tue, 27 Aug 2013 09:05:48 -0400	[thread overview]
Message-ID: <521CA42C.9040106@ti.com> (raw)
In-Reply-To: <20130827092931.GB19893@e106331-lin.cambridge.arm.com>

[-- Attachment #1: Type: text/plain, Size: 4619 bytes --]

Hey Mark,

On 27-08-2013 05:29, Mark Rutland wrote:
> On Sat, Aug 24, 2013 at 12:15:42AM +0100, Eduardo Valentin wrote:
>> This patch changes the cpufreq-cpu0 driver to consider if
>> a cpu needs cooling (with cpufreq). In case the cooling is needed,
>> it can be flagged at the cpu0 device tree node, with the list
>> of zones property 'cooling-zones'.
>>
>> In case this list of zones is present, the driver will
>> load a cpufreq cooling device in the system. The cpufreq-cpu0
>> driver is not interested in determining how the system should
>> be using the cooling device. The driver is responsible
>> only of loading the cooling device.
>>
>> Describing how the cooling device will be used can be
>> accomplished by setting up a thermal zone that references
>> and is composed by the cpufreq cooling device.
>>
>> Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
>> Cc: Viresh Kumar <viresh.kumar@linaro.org>
>> Cc: Grant Likely <grant.likely@linaro.org>
>> Cc: Rob Herring <rob.herring@calxeda.com>
>> Cc: cpufreq@vger.kernel.org
>> Cc: linux-pm@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> Cc: devicetree-discuss@lists.ozlabs.org
>> Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
>> ---
>>  Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt |  4 ++++
>>  drivers/cpufreq/cpufreq-cpu0.c                             | 12 ++++++++++++
>>  2 files changed, 16 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> index 051f764..add50f7 100644
>> --- a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> +++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> @@ -15,6 +15,9 @@ Optional properties:
>>  - clock-latency: Specify the possible maximum transition latency for clock,
>>    in unit of nanoseconds.
>>  - voltage-tolerance: Specify the CPU voltage tolerance in percentage.
>> +- cooling-zones: A list of thermal zones phandles. The generic cpu
>> +  cooling (freq clipping) is loaded by the generic cpufreq-cpu0 driver
>> +  in case the device tree node has this list.
> 
> Bindings should not describe the behaviour of any kernel (and for that
> reason I'm not very keen on the current cpufreq-cpu0 binding document).
> 

Right.

> Bindings should simply describe the hardware. This addition could
> instead be:
> 
>  - cooling-zones: a list of thermal zone phandles.
> 

OK. This works for me.

> However, as the thermal zone binding doesn't seem to have appeared by
> this patch, it should get moved later anyway...

Yeah, I will reorder them.

> 
> Thanks,
> Mark.
> 
>>  
>>  Examples:
>>  
>> @@ -33,6 +36,7 @@ cpus {
>>  			198000  850000
>>  		>;
>>  		clock-latency = <61036>; /* two CLK32 periods */
>> +		cooling-zones = <&cpu_thermal>;
>>  	};
>>  
>>  	cpu@1 {
>> diff --git a/drivers/cpufreq/cpufreq-cpu0.c b/drivers/cpufreq/cpufreq-cpu0.c
>> index ad1fde2..ede6487 100644
>> --- a/drivers/cpufreq/cpufreq-cpu0.c
>> +++ b/drivers/cpufreq/cpufreq-cpu0.c
>> @@ -20,6 +20,9 @@
>>  #include <linux/platform_device.h>
>>  #include <linux/regulator/consumer.h>
>>  #include <linux/slab.h>
>> +#include <linux/thermal.h>
>> +#include <linux/cpu_cooling.h>
>> +#include <linux/cpumask.h>
>>  
>>  static unsigned int transition_latency;
>>  static unsigned int voltage_tolerance; /* in percentage */
>> @@ -28,6 +31,7 @@ static struct device *cpu_dev;
>>  static struct clk *cpu_clk;
>>  static struct regulator *cpu_reg;
>>  static struct cpufreq_frequency_table *freq_table;
>> +static struct thermal_cooling_device *cdev;
>>  
>>  static int cpu0_verify_speed(struct cpufreq_policy *policy)
>>  {
>> @@ -268,6 +272,13 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev)
>>  		goto out_free_table;
>>  	}
>>  
>> +	/*
>> +	 * For now, just loading the cooling device;
>> +	 * thermal DT code takes care of matching them.
>> +	 */
>> +	if (of_find_property(np, "cooling-zones", NULL))
>> +		cdev = cpufreq_cooling_register(cpu_present_mask);
>> +
>>  	of_node_put(np);
>>  	of_node_put(parent);
>>  	return 0;
>> @@ -283,6 +294,7 @@ out_put_parent:
>>  
>>  static int cpu0_cpufreq_remove(struct platform_device *pdev)
>>  {
>> +	cpufreq_cooling_unregister(cdev);
>>  	cpufreq_unregister_driver(&cpu0_cpufreq_driver);
>>  	opp_free_cpufreq_table(cpu_dev, &freq_table);
>>  
>> -- 
>> 1.8.2.1.342.gfa7285d
>>
>>
> 
> 


-- 
You have got to be excited about what you are doing. (L. Lamport)

Eduardo Valentin


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 295 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Valentin <eduardo.valentin@ti.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Eduardo Valentin <eduardo.valentin@ti.com>,
	"swarren@wwwdotorg.org" <swarren@wwwdotorg.org>,
	Pawel Moll <Pawel.Moll@arm.com>,
	"ian.campbell@citrix.com" <ian.campbell@citrix.com>,
	"grant.likely@linaro.org" <grant.likely@linaro.org>,
	"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
	"linux@roeck-us.net" <linux@roeck-us.net>,
	"rui.zhang@intel.com" <rui.zhang@intel.com>,
	"wni@nvidia.com" <wni@nvidia.com>,
	"durgadoss.r@intel.com" <durgadoss.r@intel.com>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	"cpufreq@vger.kernel.org" <cpufreq@vger.kernel.org>,
	"devicetree-discuss@lists.ozlabs.org"
	<devicetree-discuss@lists.ozlabs.org>
Subject: Re: [lm-sensors] [RFC PATCH 01/14] cpufreq: cpufreq-cpu0: add dt node parsing for 'cooling-zones'
Date: Tue, 27 Aug 2013 13:05:48 +0000	[thread overview]
Message-ID: <521CA42C.9040106@ti.com> (raw)
In-Reply-To: <20130827092931.GB19893@e106331-lin.cambridge.arm.com>


[-- Attachment #1.1: Type: text/plain, Size: 4619 bytes --]

Hey Mark,

On 27-08-2013 05:29, Mark Rutland wrote:
> On Sat, Aug 24, 2013 at 12:15:42AM +0100, Eduardo Valentin wrote:
>> This patch changes the cpufreq-cpu0 driver to consider if
>> a cpu needs cooling (with cpufreq). In case the cooling is needed,
>> it can be flagged at the cpu0 device tree node, with the list
>> of zones property 'cooling-zones'.
>>
>> In case this list of zones is present, the driver will
>> load a cpufreq cooling device in the system. The cpufreq-cpu0
>> driver is not interested in determining how the system should
>> be using the cooling device. The driver is responsible
>> only of loading the cooling device.
>>
>> Describing how the cooling device will be used can be
>> accomplished by setting up a thermal zone that references
>> and is composed by the cpufreq cooling device.
>>
>> Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
>> Cc: Viresh Kumar <viresh.kumar@linaro.org>
>> Cc: Grant Likely <grant.likely@linaro.org>
>> Cc: Rob Herring <rob.herring@calxeda.com>
>> Cc: cpufreq@vger.kernel.org
>> Cc: linux-pm@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> Cc: devicetree-discuss@lists.ozlabs.org
>> Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
>> ---
>>  Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt |  4 ++++
>>  drivers/cpufreq/cpufreq-cpu0.c                             | 12 ++++++++++++
>>  2 files changed, 16 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> index 051f764..add50f7 100644
>> --- a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> +++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> @@ -15,6 +15,9 @@ Optional properties:
>>  - clock-latency: Specify the possible maximum transition latency for clock,
>>    in unit of nanoseconds.
>>  - voltage-tolerance: Specify the CPU voltage tolerance in percentage.
>> +- cooling-zones: A list of thermal zones phandles. The generic cpu
>> +  cooling (freq clipping) is loaded by the generic cpufreq-cpu0 driver
>> +  in case the device tree node has this list.
> 
> Bindings should not describe the behaviour of any kernel (and for that
> reason I'm not very keen on the current cpufreq-cpu0 binding document).
> 

Right.

> Bindings should simply describe the hardware. This addition could
> instead be:
> 
>  - cooling-zones: a list of thermal zone phandles.
> 

OK. This works for me.

> However, as the thermal zone binding doesn't seem to have appeared by
> this patch, it should get moved later anyway...

Yeah, I will reorder them.

> 
> Thanks,
> Mark.
> 
>>  
>>  Examples:
>>  
>> @@ -33,6 +36,7 @@ cpus {
>>  			198000  850000
>>  		>;
>>  		clock-latency = <61036>; /* two CLK32 periods */
>> +		cooling-zones = <&cpu_thermal>;
>>  	};
>>  
>>  	cpu@1 {
>> diff --git a/drivers/cpufreq/cpufreq-cpu0.c b/drivers/cpufreq/cpufreq-cpu0.c
>> index ad1fde2..ede6487 100644
>> --- a/drivers/cpufreq/cpufreq-cpu0.c
>> +++ b/drivers/cpufreq/cpufreq-cpu0.c
>> @@ -20,6 +20,9 @@
>>  #include <linux/platform_device.h>
>>  #include <linux/regulator/consumer.h>
>>  #include <linux/slab.h>
>> +#include <linux/thermal.h>
>> +#include <linux/cpu_cooling.h>
>> +#include <linux/cpumask.h>
>>  
>>  static unsigned int transition_latency;
>>  static unsigned int voltage_tolerance; /* in percentage */
>> @@ -28,6 +31,7 @@ static struct device *cpu_dev;
>>  static struct clk *cpu_clk;
>>  static struct regulator *cpu_reg;
>>  static struct cpufreq_frequency_table *freq_table;
>> +static struct thermal_cooling_device *cdev;
>>  
>>  static int cpu0_verify_speed(struct cpufreq_policy *policy)
>>  {
>> @@ -268,6 +272,13 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev)
>>  		goto out_free_table;
>>  	}
>>  
>> +	/*
>> +	 * For now, just loading the cooling device;
>> +	 * thermal DT code takes care of matching them.
>> +	 */
>> +	if (of_find_property(np, "cooling-zones", NULL))
>> +		cdev = cpufreq_cooling_register(cpu_present_mask);
>> +
>>  	of_node_put(np);
>>  	of_node_put(parent);
>>  	return 0;
>> @@ -283,6 +294,7 @@ out_put_parent:
>>  
>>  static int cpu0_cpufreq_remove(struct platform_device *pdev)
>>  {
>> +	cpufreq_cooling_unregister(cdev);
>>  	cpufreq_unregister_driver(&cpu0_cpufreq_driver);
>>  	opp_free_cpufreq_table(cpu_dev, &freq_table);
>>  
>> -- 
>> 1.8.2.1.342.gfa7285d
>>
>>
> 
> 


-- 
You have got to be excited about what you are doing. (L. Lamport)

Eduardo Valentin


[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 295 bytes --]

[-- Attachment #2: Type: text/plain, Size: 153 bytes --]

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

WARNING: multiple messages have this Message-ID (diff)
From: Eduardo Valentin <eduardo.valentin@ti.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: Eduardo Valentin <eduardo.valentin@ti.com>,
	"swarren@wwwdotorg.org" <swarren@wwwdotorg.org>,
	Pawel Moll <Pawel.Moll@arm.com>,
	"ian.campbell@citrix.com" <ian.campbell@citrix.com>,
	"grant.likely@linaro.org" <grant.likely@linaro.org>,
	"rob.herring@calxeda.com" <rob.herring@calxeda.com>,
	"linux@roeck-us.net" <linux@roeck-us.net>,
	"rui.zhang@intel.com" <rui.zhang@intel.com>,
	"wni@nvidia.com" <wni@nvidia.com>,
	"durgadoss.r@intel.com" <durgadoss.r@intel.com>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	"cpufreq@vger.kernel.org" <cpufreq@vger.kernel.org>,
	"devicetree-discuss@lists.ozlabs.org" 
	<devicetree-discuss@lists.ozlabs.org>
Subject: Re: [RFC PATCH 01/14] cpufreq: cpufreq-cpu0: add dt node parsing for 'cooling-zones'
Date: Tue, 27 Aug 2013 09:05:48 -0400	[thread overview]
Message-ID: <521CA42C.9040106@ti.com> (raw)
In-Reply-To: <20130827092931.GB19893@e106331-lin.cambridge.arm.com>

[-- Attachment #1: Type: text/plain, Size: 4619 bytes --]

Hey Mark,

On 27-08-2013 05:29, Mark Rutland wrote:
> On Sat, Aug 24, 2013 at 12:15:42AM +0100, Eduardo Valentin wrote:
>> This patch changes the cpufreq-cpu0 driver to consider if
>> a cpu needs cooling (with cpufreq). In case the cooling is needed,
>> it can be flagged at the cpu0 device tree node, with the list
>> of zones property 'cooling-zones'.
>>
>> In case this list of zones is present, the driver will
>> load a cpufreq cooling device in the system. The cpufreq-cpu0
>> driver is not interested in determining how the system should
>> be using the cooling device. The driver is responsible
>> only of loading the cooling device.
>>
>> Describing how the cooling device will be used can be
>> accomplished by setting up a thermal zone that references
>> and is composed by the cpufreq cooling device.
>>
>> Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
>> Cc: Viresh Kumar <viresh.kumar@linaro.org>
>> Cc: Grant Likely <grant.likely@linaro.org>
>> Cc: Rob Herring <rob.herring@calxeda.com>
>> Cc: cpufreq@vger.kernel.org
>> Cc: linux-pm@vger.kernel.org
>> Cc: linux-kernel@vger.kernel.org
>> Cc: devicetree-discuss@lists.ozlabs.org
>> Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
>> ---
>>  Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt |  4 ++++
>>  drivers/cpufreq/cpufreq-cpu0.c                             | 12 ++++++++++++
>>  2 files changed, 16 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> index 051f764..add50f7 100644
>> --- a/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> +++ b/Documentation/devicetree/bindings/cpufreq/cpufreq-cpu0.txt
>> @@ -15,6 +15,9 @@ Optional properties:
>>  - clock-latency: Specify the possible maximum transition latency for clock,
>>    in unit of nanoseconds.
>>  - voltage-tolerance: Specify the CPU voltage tolerance in percentage.
>> +- cooling-zones: A list of thermal zones phandles. The generic cpu
>> +  cooling (freq clipping) is loaded by the generic cpufreq-cpu0 driver
>> +  in case the device tree node has this list.
> 
> Bindings should not describe the behaviour of any kernel (and for that
> reason I'm not very keen on the current cpufreq-cpu0 binding document).
> 

Right.

> Bindings should simply describe the hardware. This addition could
> instead be:
> 
>  - cooling-zones: a list of thermal zone phandles.
> 

OK. This works for me.

> However, as the thermal zone binding doesn't seem to have appeared by
> this patch, it should get moved later anyway...

Yeah, I will reorder them.

> 
> Thanks,
> Mark.
> 
>>  
>>  Examples:
>>  
>> @@ -33,6 +36,7 @@ cpus {
>>  			198000  850000
>>  		>;
>>  		clock-latency = <61036>; /* two CLK32 periods */
>> +		cooling-zones = <&cpu_thermal>;
>>  	};
>>  
>>  	cpu@1 {
>> diff --git a/drivers/cpufreq/cpufreq-cpu0.c b/drivers/cpufreq/cpufreq-cpu0.c
>> index ad1fde2..ede6487 100644
>> --- a/drivers/cpufreq/cpufreq-cpu0.c
>> +++ b/drivers/cpufreq/cpufreq-cpu0.c
>> @@ -20,6 +20,9 @@
>>  #include <linux/platform_device.h>
>>  #include <linux/regulator/consumer.h>
>>  #include <linux/slab.h>
>> +#include <linux/thermal.h>
>> +#include <linux/cpu_cooling.h>
>> +#include <linux/cpumask.h>
>>  
>>  static unsigned int transition_latency;
>>  static unsigned int voltage_tolerance; /* in percentage */
>> @@ -28,6 +31,7 @@ static struct device *cpu_dev;
>>  static struct clk *cpu_clk;
>>  static struct regulator *cpu_reg;
>>  static struct cpufreq_frequency_table *freq_table;
>> +static struct thermal_cooling_device *cdev;
>>  
>>  static int cpu0_verify_speed(struct cpufreq_policy *policy)
>>  {
>> @@ -268,6 +272,13 @@ static int cpu0_cpufreq_probe(struct platform_device *pdev)
>>  		goto out_free_table;
>>  	}
>>  
>> +	/*
>> +	 * For now, just loading the cooling device;
>> +	 * thermal DT code takes care of matching them.
>> +	 */
>> +	if (of_find_property(np, "cooling-zones", NULL))
>> +		cdev = cpufreq_cooling_register(cpu_present_mask);
>> +
>>  	of_node_put(np);
>>  	of_node_put(parent);
>>  	return 0;
>> @@ -283,6 +294,7 @@ out_put_parent:
>>  
>>  static int cpu0_cpufreq_remove(struct platform_device *pdev)
>>  {
>> +	cpufreq_cooling_unregister(cdev);
>>  	cpufreq_unregister_driver(&cpu0_cpufreq_driver);
>>  	opp_free_cpufreq_table(cpu_dev, &freq_table);
>>  
>> -- 
>> 1.8.2.1.342.gfa7285d
>>
>>
> 
> 


-- 
You have got to be excited about what you are doing. (L. Lamport)

Eduardo Valentin


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 295 bytes --]

  reply	other threads:[~2013-08-27 13:05 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-23 23:15 [RFC PATCH 00/14] RFCv2: device thermal limits represented in device tree nodes Eduardo Valentin
2013-08-23 23:15 ` Eduardo Valentin
2013-08-23 23:15 ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 01/14] cpufreq: cpufreq-cpu0: add dt node parsing for 'cooling-zones' Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-26  4:42   ` Viresh Kumar
2013-08-26  4:54     ` [lm-sensors] " Viresh Kumar
2013-08-26 12:13     ` Eduardo Valentin
2013-08-26 12:13       ` Eduardo Valentin
2013-08-26 12:13       ` [lm-sensors] " Eduardo Valentin
2013-08-27  9:29   ` Mark Rutland
2013-08-27  9:29     ` [lm-sensors] " Mark Rutland
2013-08-27 13:05     ` Eduardo Valentin [this message]
2013-08-27 13:05       ` Eduardo Valentin
2013-08-27 13:05       ` [lm-sensors] " Eduardo Valentin
2013-08-27 13:05       ` Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 02/14] drivers: thermal: introduce device tree parser Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-27 10:22   ` Mark Rutland
2013-08-27 10:22     ` [lm-sensors] " Mark Rutland
2013-08-27 13:44     ` Eduardo Valentin
2013-08-27 13:44       ` [lm-sensors] " Eduardo Valentin
2013-08-27 16:23       ` Mark Rutland
2013-08-27 16:23         ` [lm-sensors] " Mark Rutland
2013-08-27 18:17         ` Eduardo Valentin
2013-08-27 18:17           ` [lm-sensors] " Eduardo Valentin
2013-08-29 23:19           ` Eduardo Valentin
2013-08-29 23:19             ` [lm-sensors] " Eduardo Valentin
2013-09-02  8:14             ` Wei Ni
2013-09-02  8:14               ` [lm-sensors] " Wei Ni
2013-09-02 16:28             ` Eduardo Valentin
2013-09-02 16:28               ` [lm-sensors] " Eduardo Valentin
2013-09-03 13:15             ` Mark Rutland
2013-09-03 13:15               ` [lm-sensors] " Mark Rutland
2013-09-03 17:12               ` Eduardo Valentin
2013-09-03 17:12                 ` [lm-sensors] " Eduardo Valentin
2013-09-07  0:19               ` Eduardo Valentin
2013-09-07  0:19                 ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 03/14] hwmon: lm75: expose to thermal fw via DT nodes Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:39   ` Guenter Roeck
2013-08-23 23:39     ` [lm-sensors] " Guenter Roeck
2013-08-26 12:11     ` Eduardo Valentin
2013-08-26 12:11       ` Eduardo Valentin
2013-08-26 12:11       ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:50   ` Guenter Roeck
2013-08-23 23:50     ` [lm-sensors] " Guenter Roeck
2013-08-26 12:15     ` Eduardo Valentin
2013-08-26 12:15       ` Eduardo Valentin
2013-08-26 12:15       ` [lm-sensors] " Eduardo Valentin
2013-08-27 10:26   ` Mark Rutland
2013-08-27 10:26     ` [lm-sensors] " Mark Rutland
2013-08-23 23:15 ` [RFC PATCH 04/14] hwmon: tmp102: " Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-27 10:27   ` Mark Rutland
2013-08-27 10:27     ` [lm-sensors] " Mark Rutland
2013-08-23 23:15 ` [RFC PATCH 05/14] thermal: ti-soc-thermal: use thermal DT infrastructure Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 06/14] arm: dts: add omap4 CPU thermal data Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 07/14] arm: dts: add omap4430 " Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 08/14] arm: dts: add omap4460 " Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 09/14] arm: dts: point to cooling-zones on omap4430 cpu node Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 10/14] arm: dts: point to cooling-zones on omap4460 " Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 11/14] arm: dts: add omap5 GPU thermal data Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 12/14] arm: dts: add omap5 CORE " Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 13/14] arm: dts: add omap5 " Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin
2013-08-23 23:15 ` [RFC PATCH 14/14] arm: dts: point to cooling-zones on omap5 cpu node Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` Eduardo Valentin
2013-08-23 23:15   ` [lm-sensors] " Eduardo Valentin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=521CA42C.9040106@ti.com \
    --to=eduardo.valentin@ti.com \
    --cc=Pawel.Moll@arm.com \
    --cc=cpufreq@vger.kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=durgadoss.r@intel.com \
    --cc=grant.likely@linaro.org \
    --cc=ian.campbell@citrix.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lm-sensors@lm-sensors.org \
    --cc=mark.rutland@arm.com \
    --cc=rjw@sisk.pl \
    --cc=rob.herring@calxeda.com \
    --cc=rui.zhang@intel.com \
    --cc=swarren@wwwdotorg.org \
    --cc=viresh.kumar@linaro.org \
    --cc=wni@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.