Use Intelligent Power Allocation (IPA) technical to add dynamic power model for binding CPU thermal zone. The power allocator governor allocates power budget to control CPU temperature.
Power Allocator governor is able to keep SOC temperature within a defined temperature range to avoid SOC overheat and keep it's performance.
mt8173-cpufreq.c need to register its' own power model with power allocator thermal governor, so that power allocator governor can allocates suitable power budget to control CPU temperature.
Binding document is refer to this patchset
https://lkml.org/lkml/2015/11/30/239
Change since V5:
1. Remove thermal sensor ID from phandles
Change since V4:
1. Remove unnecessary error-checking for mt8173-cpufreq.c 2. Initializing variable capacitance with 0
Change since V3:
1. Remove static power model
2. Split V3's device tree in two for thermal zones and dynamic power models respectively
Change since V2:
1. Move dynamic/static power model in device tree
Change since V1:
1. Include mt8171.h and sort header file for mt8173.dtsi
Dawei Chien (3):
thermal: mediatek: Add cpu dynamic power cooling model.
arm64: dts: mt8173: Add thermal zone node.
arm64: dts: mt8173: Add dynamic power node.
arch/arm64/boot/dts/mediatek/mt8173.dtsi | 47 ++++++++++++++++++++++++++++++
drivers/cpufreq/mt8173-cpufreq.c | 12 ++++++--
2 files changed, 57 insertions(+), 2 deletions(-)
This device node is for calculating dynamic power in mW.
Since mt8173 has two clusters, there are two dynamic power
coefficient as well.
Signed-off-by: Dawei Chien <[email protected]>
---
This patch is base on patchset:
https://lkml.org/lkml/2015/11/17/251
---
arch/arm64/boot/dts/mediatek/mt8173.dtsi | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
index f9c44cc..5cb6b4e 100644
--- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
@@ -71,6 +71,7 @@
#cooling-cells = <2>;
#cooling-min-level = <0>;
#cooling-max-level = <7>;
+ dynamic-power-coefficient = <263>;
};
cpu1: cpu@1 {
@@ -95,6 +96,7 @@
#cooling-cells = <2>;
#cooling-min-level = <0>;
#cooling-max-level = <7>;
+ dynamic-power-coefficient = <263>;
};
cpu2: cpu@100 {
@@ -119,6 +121,7 @@
#cooling-cells = <2>;
#cooling-min-level = <0>;
#cooling-max-level = <7>;
+ dynamic-power-coefficient = <530>;
};
cpu3: cpu@101 {
@@ -143,6 +146,7 @@
#cooling-cells = <2>;
#cooling-min-level = <0>;
#cooling-max-level = <7>;
+ dynamic-power-coefficient = <530>;
};
idle-states {
--
1.7.9.5
MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
cooling devices with dynamic power coefficient.
Signed-off-by: Dawei Chien <[email protected]>
Acked-by: Viresh Kumar <[email protected]>
---
This patch is base on patchset:
https://lkml.org/lkml/2015/11/17/251
---
drivers/cpufreq/mt8173-cpufreq.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/cpufreq/mt8173-cpufreq.c b/drivers/cpufreq/mt8173-cpufreq.c
index 1efba34..d8ad406 100644
--- a/drivers/cpufreq/mt8173-cpufreq.c
+++ b/drivers/cpufreq/mt8173-cpufreq.c
@@ -309,17 +309,24 @@ static int mtk_cpufreq_set_target(struct cpufreq_policy *policy,
return 0;
}
+#define DYNAMIC_POWER "dynamic-power-coefficient"
+
static void mtk_cpufreq_ready(struct cpufreq_policy *policy)
{
struct mtk_cpu_dvfs_info *info = policy->driver_data;
struct device_node *np = of_node_get(info->cpu_dev->of_node);
+ u32 capacitance = 0;
if (WARN_ON(!np))
return;
if (of_find_property(np, "#cooling-cells", NULL)) {
- info->cdev = of_cpufreq_cooling_register(np,
- policy->related_cpus);
+ of_property_read_u32(np, DYNAMIC_POWER, &capacitance);
+
+ info->cdev = of_cpufreq_power_cooling_register(np,
+ policy->related_cpus,
+ capacitance,
+ NULL);
if (IS_ERR(info->cdev)) {
dev_err(info->cpu_dev,
--
1.7.9.5
This adds thermal zone node to Mediatek MT8173 dtsi file.
Signed-off-by: Dawei Chien <[email protected]>
---
This patch is base on patchset:
https://lkml.org/lkml/2015/11/30/239
---
arch/arm64/boot/dts/mediatek/mt8173.dtsi | 43 ++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
index 47151e8..f9c44cc 100644
--- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
@@ -188,6 +188,49 @@
clock-output-names = "cpum_ck";
};
+ thermal-zones {
+ cpu_thermal: cpu_thermal {
+ polling-delay-passive = <1000>; /* milliseconds */
+ polling-delay = <1000>; /* milliseconds */
+
+ thermal-sensors = <&thermal>;
+ sustainable-power = <1500>; /* milliwatts */
+
+ trips {
+ threshold: trip-point@0 {
+ temperature = <68000>;
+ hysteresis = <2000>;
+ type = "passive";
+ };
+
+ target: trip-point@1 {
+ temperature = <85000>;
+ hysteresis = <2000>;
+ type = "passive";
+ };
+
+ cpu_crit: cpu_crit@0 {
+ temperature = <115000>;
+ hysteresis = <2000>;
+ type = "critical";
+ };
+ };
+
+ cooling-maps {
+ map@0 {
+ trip = <&target>;
+ cooling-device = <&cpu0 0 0>;
+ contribution = <1024>;
+ };
+ map@1 {
+ trip = <&target>;
+ cooling-device = <&cpu2 0 0>;
+ contribution = <2048>;
+ };
+ };
+ };
+ };
+
timer {
compatible = "arm,armv8-timer";
interrupt-parent = <&gic>;
--
1.7.9.5
Hi Rafael,
On 15-03-16, 16:10, Dawei Chien wrote:
> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
> cooling devices with dynamic power coefficient.
>
> Signed-off-by: Dawei Chien <[email protected]>
> Acked-by: Viresh Kumar <[email protected]>
Can you please apply this patch from Dawei ?
--
viresh
On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
> Hi Rafael,
>
> On 15-03-16, 16:10, Dawei Chien wrote:
>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
>> cooling devices with dynamic power coefficient.
>>
>> Signed-off-by: Dawei Chien <[email protected]>
>> Acked-by: Viresh Kumar <[email protected]>
>
> Can you please apply this patch from Dawei ?
I can, but I'm traveling this week, so that's rather going to happen next week.
Thanks,
Rafael
Hi Rafael,
On 13/04/16 06:52, Rafael J. Wysocki wrote:
> On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
>> Hi Rafael,
>>
>> On 15-03-16, 16:10, Dawei Chien wrote:
>>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
>>> cooling devices with dynamic power coefficient.
>>>
>>> Signed-off-by: Dawei Chien <[email protected]>
>>> Acked-by: Viresh Kumar <[email protected]>
>>
>> Can you please apply this patch from Dawei ?
>
> I can, but I'm traveling this week, so that's rather going to happen next week.
>
I don't see the patch in linux-next, did you forget to pick/push it?
Regards,
Matthias
On Wednesday, April 20, 2016 01:58:07 PM Matthias Brugger wrote:
> Hi Rafael,
>
> On 13/04/16 06:52, Rafael J. Wysocki wrote:
> > On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
> >> Hi Rafael,
> >>
> >> On 15-03-16, 16:10, Dawei Chien wrote:
> >>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
> >>> cooling devices with dynamic power coefficient.
> >>>
> >>> Signed-off-by: Dawei Chien <[email protected]>
> >>> Acked-by: Viresh Kumar <[email protected]>
> >>
> >> Can you please apply this patch from Dawei ?
> >
> > I can, but I'm traveling this week, so that's rather going to happen next week.
> >
>
> I don't see the patch in linux-next, did you forget to pick/push it?
No, I didn't. I just didn't have the time to get to them before.
Now, given that they are thermal patches, they really should go in via
linux-soc-thermal.git.
Eduardo, any chance to take care of these?
Thanks,
Rafael
On Thu, Apr 21, 2016 at 02:41:24AM +0200, Rafael J. Wysocki wrote:
> On Wednesday, April 20, 2016 01:58:07 PM Matthias Brugger wrote:
> > Hi Rafael,
> >
> > On 13/04/16 06:52, Rafael J. Wysocki wrote:
> > > On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
> > >> Hi Rafael,
> > >>
> > >> On 15-03-16, 16:10, Dawei Chien wrote:
> > >>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
> > >>> cooling devices with dynamic power coefficient.
> > >>>
> > >>> Signed-off-by: Dawei Chien <[email protected]>
> > >>> Acked-by: Viresh Kumar <[email protected]>
> > >>
> > >> Can you please apply this patch from Dawei ?
> > >
> > > I can, but I'm traveling this week, so that's rather going to happen next week.
> > >
> >
> > I don't see the patch in linux-next, did you forget to pick/push it?
>
> No, I didn't. I just didn't have the time to get to them before.
>
> Now, given that they are thermal patches, they really should go in via
> linux-soc-thermal.git.
>
> Eduardo, any chance to take care of these?
Yes I can add this one, given that they have the proper acked-by. I was
a bit hesitant to just get them because they are touching
drivers/cpufreq.
Anyways, I am adding this to my branch to the next merge window.
>
> Thanks,
> Rafael
>
On Wed, Apr 20, 2016 at 08:01:41PM -0700, Eduardo Valentin wrote:
> On Thu, Apr 21, 2016 at 02:41:24AM +0200, Rafael J. Wysocki wrote:
> > On Wednesday, April 20, 2016 01:58:07 PM Matthias Brugger wrote:
> > > Hi Rafael,
> > >
> > > On 13/04/16 06:52, Rafael J. Wysocki wrote:
> > > > On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
> > > >> Hi Rafael,
> > > >>
> > > >> On 15-03-16, 16:10, Dawei Chien wrote:
> > > >>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
> > > >>> cooling devices with dynamic power coefficient.
> > > >>>
> > > >>> Signed-off-by: Dawei Chien <[email protected]>
> > > >>> Acked-by: Viresh Kumar <[email protected]>
> > > >>
> > > >> Can you please apply this patch from Dawei ?
> > > >
> > > > I can, but I'm traveling this week, so that's rather going to happen next week.
> > > >
> > >
> > > I don't see the patch in linux-next, did you forget to pick/push it?
> >
> > No, I didn't. I just didn't have the time to get to them before.
> >
> > Now, given that they are thermal patches, they really should go in via
> > linux-soc-thermal.git.
> >
> > Eduardo, any chance to take care of these?
>
> Yes I can add this one, given that they have the proper acked-by. I was
> a bit hesitant to just get them because they are touching
> drivers/cpufreq.
>
> Anyways, I am adding this to my branch to the next merge window.
Added the driver changes. The dt parts should go via your platform tree.
And you can add my
Acked-by: Eduardo Valentin <[email protected]>
on the dt changes.
>
>
> >
> > Thanks,
> > Rafael
> >
On Tue, 2016-03-15 at 16:10 +0800, Dawei Chien (錢大衛) wrote:
> This device node is for calculating dynamic power in mW.
> Since mt8173 has two clusters, there are two dynamic power
> coefficient as well.
>
> Signed-off-by: Dawei Chien <[email protected]>
> ---
> This patch is base on patchset:
> https://lkml.org/lkml/2015/11/17/251
Sorry for miss one dependence for this device node.
https://lkml.org/lkml/2015/7/9/206
> ---
> arch/arm64/boot/dts/mediatek/mt8173.dtsi | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> index f9c44cc..5cb6b4e 100644
> --- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> +++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
> @@ -71,6 +71,7 @@
> #cooling-cells = <2>;
> #cooling-min-level = <0>;
> #cooling-max-level = <7>;
> + dynamic-power-coefficient = <263>;
> };
>
> cpu1: cpu@1 {
> @@ -95,6 +96,7 @@
> #cooling-cells = <2>;
> #cooling-min-level = <0>;
> #cooling-max-level = <7>;
> + dynamic-power-coefficient = <263>;
> };
>
> cpu2: cpu@100 {
> @@ -119,6 +121,7 @@
> #cooling-cells = <2>;
> #cooling-min-level = <0>;
> #cooling-max-level = <7>;
> + dynamic-power-coefficient = <530>;
> };
>
> cpu3: cpu@101 {
> @@ -143,6 +146,7 @@
> #cooling-cells = <2>;
> #cooling-min-level = <0>;
> #cooling-max-level = <7>;
> + dynamic-power-coefficient = <530>;
> };
>
> idle-states {
> --
> 1.7.9.5
>
On 21/04/16 06:12, dawei chien wrote:
> On Tue, 2016-03-15 at 16:10 +0800, Dawei Chien (錢大衛) wrote:
>> This device node is for calculating dynamic power in mW.
>> Since mt8173 has two clusters, there are two dynamic power
>> coefficient as well.
>>
>> Signed-off-by: Dawei Chien <[email protected]>
>> ---
>> This patch is base on patchset:
>> https://lkml.org/lkml/2015/11/17/251
>
> Sorry for miss one dependence for this device node.
> https://lkml.org/lkml/2015/7/9/206
>
This patch got somehow forgotten.
Thanks for the reminder.
Matthias
>> ---
>> arch/arm64/boot/dts/mediatek/mt8173.dtsi | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/mediatek/mt8173.dtsi b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
>> index f9c44cc..5cb6b4e 100644
>> --- a/arch/arm64/boot/dts/mediatek/mt8173.dtsi
>> +++ b/arch/arm64/boot/dts/mediatek/mt8173.dtsi
>> @@ -71,6 +71,7 @@
>> #cooling-cells = <2>;
>> #cooling-min-level = <0>;
>> #cooling-max-level = <7>;
>> + dynamic-power-coefficient = <263>;
>> };
>>
>> cpu1: cpu@1 {
>> @@ -95,6 +96,7 @@
>> #cooling-cells = <2>;
>> #cooling-min-level = <0>;
>> #cooling-max-level = <7>;
>> + dynamic-power-coefficient = <263>;
>> };
>>
>> cpu2: cpu@100 {
>> @@ -119,6 +121,7 @@
>> #cooling-cells = <2>;
>> #cooling-min-level = <0>;
>> #cooling-max-level = <7>;
>> + dynamic-power-coefficient = <530>;
>> };
>>
>> cpu3: cpu@101 {
>> @@ -143,6 +146,7 @@
>> #cooling-cells = <2>;
>> #cooling-min-level = <0>;
>> #cooling-max-level = <7>;
>> + dynamic-power-coefficient = <530>;
>> };
>>
>> idle-states {
>> --
>> 1.7.9.5
>>
>
>
On Thu, Apr 21, 2016 at 5:01 AM, Eduardo Valentin <[email protected]> wrote:
> On Thu, Apr 21, 2016 at 02:41:24AM +0200, Rafael J. Wysocki wrote:
>> On Wednesday, April 20, 2016 01:58:07 PM Matthias Brugger wrote:
>> > Hi Rafael,
>> >
>> > On 13/04/16 06:52, Rafael J. Wysocki wrote:
>> > > On Tue, Apr 12, 2016 at 7:38 AM, Viresh Kumar <[email protected]> wrote:
>> > >> Hi Rafael,
>> > >>
>> > >> On 15-03-16, 16:10, Dawei Chien wrote:
>> > >>> MT8173 cpufreq driver select of_cpufreq_power_cooling_register registering
>> > >>> cooling devices with dynamic power coefficient.
>> > >>>
>> > >>> Signed-off-by: Dawei Chien <[email protected]>
>> > >>> Acked-by: Viresh Kumar <[email protected]>
>> > >>
>> > >> Can you please apply this patch from Dawei ?
>> > >
>> > > I can, but I'm traveling this week, so that's rather going to happen next week.
>> > >
>> >
>> > I don't see the patch in linux-next, did you forget to pick/push it?
>>
>> No, I didn't. I just didn't have the time to get to them before.
>>
>> Now, given that they are thermal patches, they really should go in via
>> linux-soc-thermal.git.
>>
>> Eduardo, any chance to take care of these?
>
> Yes I can add this one, given that they have the proper acked-by. I was
> a bit hesitant to just get them because they are touching
> drivers/cpufreq.
Generally, ACKs from Viresh are sufficient for ARM cpufreq drivers
unless the maintainers of the platform in question disagree.
> Anyways, I am adding this to my branch to the next merge window.
Thanks!