[1/2] cpufreq: drivers: Enable frequency invariance in qcom-cpufreq-hw
diff mbox series

Message ID 20190808131857.21082-1-douglas.raillard@arm.com
State New
Delegated to: viresh kumar
Headers show
Series
  • [1/2] cpufreq: drivers: Enable frequency invariance in qcom-cpufreq-hw
Related show

Commit Message

Douglas Raillard Aug. 8, 2019, 1:18 p.m. UTC
Add calls to arch_set_freq_scale() in qcom-cpufreq-hw driver to enable
frequency invariance.

Signed-off-by: Douglas RAILLARD <douglas.raillard@arm.com>
---
 drivers/cpufreq/qcom-cpufreq-hw.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

Comments

Quentin Perret Aug. 8, 2019, 5:32 p.m. UTC | #1
Hi Douglas,

On Thursday 08 Aug 2019 at 14:18:57 (+0100), Douglas RAILLARD wrote:
> Add calls to arch_set_freq_scale() in qcom-cpufreq-hw driver to enable
> frequency invariance.

Is there a patch 2/2 ?

> 
> Signed-off-by: Douglas RAILLARD <douglas.raillard@arm.com>
> ---
>  drivers/cpufreq/qcom-cpufreq-hw.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c
> index 4b0b50403901..3bd3b8b268d9 100644
> --- a/drivers/cpufreq/qcom-cpufreq-hw.c
> +++ b/drivers/cpufreq/qcom-cpufreq-hw.c
> @@ -34,9 +34,12 @@ static int qcom_cpufreq_hw_target_index(struct cpufreq_policy *policy,
>  					unsigned int index)
>  {
>  	void __iomem *perf_state_reg = policy->driver_data;
> +	unsigned long freq = policy->freq_table[index].frequency;
>  
>  	writel_relaxed(index, perf_state_reg);
>  
> +	arch_set_freq_scale(policy->related_cpus, freq,
> +			    policy->cpuinfo.max_freq);
>  	return 0;
>  }
>  
> @@ -63,6 +66,7 @@ static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
>  {
>  	void __iomem *perf_state_reg = policy->driver_data;
>  	int index;
> +	unsigned long freq;
>  
>  	index = policy->cached_resolved_idx;
>  	if (index < 0)
> @@ -70,7 +74,11 @@ static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
>  
>  	writel_relaxed(index, perf_state_reg);
>  
> -	return policy->freq_table[index].frequency;
> +	freq = policy->freq_table[index].frequency;
> +	arch_set_freq_scale(policy->related_cpus, freq,
> +			    policy->cpuinfo.max_freq);
> +
> +	return freq;
>  }
>  
>  static int qcom_cpufreq_hw_read_lut(struct device *cpu_dev,
> -- 
> 2.22.0

Reviewed-by: Quentin Perret <quentin.perret@arm.com>

Thanks,
Quentin
Douglas Raillard Aug. 9, 2019, 10:16 a.m. UTC | #2
Hi Quentin,

On 8/8/19 6:32 PM, Quentin Perret wrote:
> Hi Douglas,
> 
> On Thursday 08 Aug 2019 at 14:18:57 (+0100), Douglas RAILLARD wrote:
>> Add calls to arch_set_freq_scale() in qcom-cpufreq-hw driver to enable
>> frequency invariance.
> 
> Is there a patch 2/2 ?

That slipped through when format-patch-ing unrelated commits, there is no 2nd patch.

>>
>> Signed-off-by: Douglas RAILLARD <douglas.raillard@arm.com>
>> ---
>>   drivers/cpufreq/qcom-cpufreq-hw.c | 10 +++++++++-
>>   1 file changed, 9 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c
>> index 4b0b50403901..3bd3b8b268d9 100644
>> --- a/drivers/cpufreq/qcom-cpufreq-hw.c
>> +++ b/drivers/cpufreq/qcom-cpufreq-hw.c
>> @@ -34,9 +34,12 @@ static int qcom_cpufreq_hw_target_index(struct cpufreq_policy *policy,
>>   					unsigned int index)
>>   {
>>   	void __iomem *perf_state_reg = policy->driver_data;
>> +	unsigned long freq = policy->freq_table[index].frequency;
>>   
>>   	writel_relaxed(index, perf_state_reg);
>>   
>> +	arch_set_freq_scale(policy->related_cpus, freq,
>> +			    policy->cpuinfo.max_freq);
>>   	return 0;
>>   }
>>   
>> @@ -63,6 +66,7 @@ static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
>>   {
>>   	void __iomem *perf_state_reg = policy->driver_data;
>>   	int index;
>> +	unsigned long freq;
>>   
>>   	index = policy->cached_resolved_idx;
>>   	if (index < 0)
>> @@ -70,7 +74,11 @@ static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
>>   
>>   	writel_relaxed(index, perf_state_reg);
>>   
>> -	return policy->freq_table[index].frequency;
>> +	freq = policy->freq_table[index].frequency;
>> +	arch_set_freq_scale(policy->related_cpus, freq,
>> +			    policy->cpuinfo.max_freq);
>> +
>> +	return freq;
>>   }
>>   
>>   static int qcom_cpufreq_hw_read_lut(struct device *cpu_dev,
>> -- 
>> 2.22.0
> 
> Reviewed-by: Quentin Perret <quentin.perret@arm.com>
> 
> Thanks,
> Quentin
> 

Thanks,
Douglas
Quentin Perret Aug. 9, 2019, 10:37 a.m. UTC | #3
On Friday 09 Aug 2019 at 11:16:12 (+0100), Douglas Raillard wrote:
> Hi Quentin,
> 
> On 8/8/19 6:32 PM, Quentin Perret wrote:
> > Hi Douglas,
> > 
> > On Thursday 08 Aug 2019 at 14:18:57 (+0100), Douglas RAILLARD wrote:
> > > Add calls to arch_set_freq_scale() in qcom-cpufreq-hw driver to enable
> > > frequency invariance.
> > 
> > Is there a patch 2/2 ?
> 
> That slipped through when format-patch-ing unrelated commits, there is no 2nd patch.
> 
> > > 
> > > Signed-off-by: Douglas RAILLARD <douglas.raillard@arm.com>
> > > ---
> > >   drivers/cpufreq/qcom-cpufreq-hw.c | 10 +++++++++-
> > >   1 file changed, 9 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c
> > > index 4b0b50403901..3bd3b8b268d9 100644
> > > --- a/drivers/cpufreq/qcom-cpufreq-hw.c
> > > +++ b/drivers/cpufreq/qcom-cpufreq-hw.c
> > > @@ -34,9 +34,12 @@ static int qcom_cpufreq_hw_target_index(struct cpufreq_policy *policy,
> > >   					unsigned int index)
> > >   {
> > >   	void __iomem *perf_state_reg = policy->driver_data;
> > > +	unsigned long freq = policy->freq_table[index].frequency;
> > >   	writel_relaxed(index, perf_state_reg);
> > > +	arch_set_freq_scale(policy->related_cpus, freq,
> > > +			    policy->cpuinfo.max_freq);
> > >   	return 0;
> > >   }
> > > @@ -63,6 +66,7 @@ static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
> > >   {
> > >   	void __iomem *perf_state_reg = policy->driver_data;
> > >   	int index;
> > > +	unsigned long freq;
> > >   	index = policy->cached_resolved_idx;
> > >   	if (index < 0)
> > > @@ -70,7 +74,11 @@ static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
> > >   	writel_relaxed(index, perf_state_reg);
> > > -	return policy->freq_table[index].frequency;
> > > +	freq = policy->freq_table[index].frequency;
> > > +	arch_set_freq_scale(policy->related_cpus, freq,
> > > +			    policy->cpuinfo.max_freq);
> > > +
> > > +	return freq;
> > >   }
> > >   static int qcom_cpufreq_hw_read_lut(struct device *cpu_dev,
> > > -- 
> > > 2.22.0
> > 
> > Reviewed-by: Quentin Perret <quentin.perret@arm.com>
> > 
> > Thanks,
> > Quentin
> > 
> 
> Thanks,
> Douglas

Actually, one nit, the $subject should probably be formatted as:

  cpufreq: qcom-hw: invoke frequency-invariance setter function

for consistency with other patches in this area.

Thanks,
Quentin
Viresh Kumar Aug. 19, 2019, 6:57 a.m. UTC | #4
On 09-08-19, 11:37, Quentin Perret wrote:
> Actually, one nit, the $subject should probably be formatted as:
> 
>   cpufreq: qcom-hw: invoke frequency-invariance setter function
> 
> for consistency with other patches in this area.

Applied with these changes. Thanks.

Patch
diff mbox series

diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c
index 4b0b50403901..3bd3b8b268d9 100644
--- a/drivers/cpufreq/qcom-cpufreq-hw.c
+++ b/drivers/cpufreq/qcom-cpufreq-hw.c
@@ -34,9 +34,12 @@  static int qcom_cpufreq_hw_target_index(struct cpufreq_policy *policy,
 					unsigned int index)
 {
 	void __iomem *perf_state_reg = policy->driver_data;
+	unsigned long freq = policy->freq_table[index].frequency;
 
 	writel_relaxed(index, perf_state_reg);
 
+	arch_set_freq_scale(policy->related_cpus, freq,
+			    policy->cpuinfo.max_freq);
 	return 0;
 }
 
@@ -63,6 +66,7 @@  static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
 {
 	void __iomem *perf_state_reg = policy->driver_data;
 	int index;
+	unsigned long freq;
 
 	index = policy->cached_resolved_idx;
 	if (index < 0)
@@ -70,7 +74,11 @@  static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
 
 	writel_relaxed(index, perf_state_reg);
 
-	return policy->freq_table[index].frequency;
+	freq = policy->freq_table[index].frequency;
+	arch_set_freq_scale(policy->related_cpus, freq,
+			    policy->cpuinfo.max_freq);
+
+	return freq;
 }
 
 static int qcom_cpufreq_hw_read_lut(struct device *cpu_dev,