Re: [PATCH v3 3/5] powernv:cpufreq: Create pstate_id_to_freq() helper

2014-03-21 Thread Gautham R Shenoy
On Thu, Mar 20, 2014 at 05:40:58PM +0530, Gautham R. Shenoy wrote:
 From: Gautham R. Shenoy e...@linux.vnet.ibm.com
 
 Create a helper routine that can return the cpu-frequency for the
 corresponding pstate_id.
 
 Also, cache the values of the pstate_max, pstate_min and
 pstate_nominal and nr_pstates in a static structure so that they can
 be reused in the future to perform any validations.
 

Forgot to add the following line:

  Reviewed-by: Preeti U Murthy pre...@linux.vnet.ibm.com
 Signed-off-by: Gautham R. Shenoy e...@linux.vnet.ibm.com
 ---
  drivers/cpufreq/powernv-cpufreq.c | 27 +++
  1 file changed, 27 insertions(+)
 
 diff --git a/drivers/cpufreq/powernv-cpufreq.c 
 b/drivers/cpufreq/powernv-cpufreq.c
 index 66dae0d..e7b0292 100644
 --- a/drivers/cpufreq/powernv-cpufreq.c
 +++ b/drivers/cpufreq/powernv-cpufreq.c
 @@ -39,6 +39,14 @@ static DEFINE_PER_CPU(struct mutex, freq_switch_lock);
  static struct cpufreq_frequency_table powernv_freqs[POWERNV_MAX_PSTATES+1];
  static int powernv_pstate_ids[POWERNV_MAX_PSTATES+1];
 
 +struct powernv_pstate_info {
 + int pstate_min_id;
 + int pstate_max_id;
 + int pstate_nominal_id;
 + int nr_pstates;
 +};
 +static struct powernv_pstate_info powernv_pstate_info;
 +
  /*
   * Initialize the freq table based on data obtained
   * from the firmware passed via device-tree
 @@ -112,9 +120,28 @@ static int init_powernv_pstates(void)
   for (i = 0; powernv_freqs[i].frequency != CPUFREQ_TABLE_END; i++)
   pr_debug(%d: %d\n, i, powernv_freqs[i].frequency);
 
 + powernv_pstate_info.pstate_min_id = pstate_min;
 + powernv_pstate_info.pstate_max_id = pstate_max;
 + powernv_pstate_info.pstate_nominal_id = pstate_nominal;
 + powernv_pstate_info.nr_pstates = nr_pstates;
 +
   return 0;
  }
 
 +/**
 + * Returns the cpu frequency corresponding to the pstate_id.
 + */
 +static unsigned int pstate_id_to_freq(int pstate_id)
 +{
 + int i;
 +
 + i = powernv_pstate_info.pstate_max_id - pstate_id;
 +
 + BUG_ON(i = powernv_pstate_info.nr_pstates || i  0);
 + WARN_ON(powernv_pstate_ids[i] != pstate_id);
 + return powernv_freqs[i].frequency;
 +}
 +
  static struct freq_attr *powernv_cpu_freq_attr[] = {
   cpufreq_freq_attr_scaling_available_freqs,
   NULL,
 -- 
 1.8.3.1
 

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

[PATCH v3 3/5] powernv:cpufreq: Create pstate_id_to_freq() helper

2014-03-20 Thread Gautham R. Shenoy
From: Gautham R. Shenoy e...@linux.vnet.ibm.com

Create a helper routine that can return the cpu-frequency for the
corresponding pstate_id.

Also, cache the values of the pstate_max, pstate_min and
pstate_nominal and nr_pstates in a static structure so that they can
be reused in the future to perform any validations.

Signed-off-by: Gautham R. Shenoy e...@linux.vnet.ibm.com
---
 drivers/cpufreq/powernv-cpufreq.c | 27 +++
 1 file changed, 27 insertions(+)

diff --git a/drivers/cpufreq/powernv-cpufreq.c 
b/drivers/cpufreq/powernv-cpufreq.c
index 66dae0d..e7b0292 100644
--- a/drivers/cpufreq/powernv-cpufreq.c
+++ b/drivers/cpufreq/powernv-cpufreq.c
@@ -39,6 +39,14 @@ static DEFINE_PER_CPU(struct mutex, freq_switch_lock);
 static struct cpufreq_frequency_table powernv_freqs[POWERNV_MAX_PSTATES+1];
 static int powernv_pstate_ids[POWERNV_MAX_PSTATES+1];
 
+struct powernv_pstate_info {
+   int pstate_min_id;
+   int pstate_max_id;
+   int pstate_nominal_id;
+   int nr_pstates;
+};
+static struct powernv_pstate_info powernv_pstate_info;
+
 /*
  * Initialize the freq table based on data obtained
  * from the firmware passed via device-tree
@@ -112,9 +120,28 @@ static int init_powernv_pstates(void)
for (i = 0; powernv_freqs[i].frequency != CPUFREQ_TABLE_END; i++)
pr_debug(%d: %d\n, i, powernv_freqs[i].frequency);
 
+   powernv_pstate_info.pstate_min_id = pstate_min;
+   powernv_pstate_info.pstate_max_id = pstate_max;
+   powernv_pstate_info.pstate_nominal_id = pstate_nominal;
+   powernv_pstate_info.nr_pstates = nr_pstates;
+
return 0;
 }
 
+/**
+ * Returns the cpu frequency corresponding to the pstate_id.
+ */
+static unsigned int pstate_id_to_freq(int pstate_id)
+{
+   int i;
+
+   i = powernv_pstate_info.pstate_max_id - pstate_id;
+
+   BUG_ON(i = powernv_pstate_info.nr_pstates || i  0);
+   WARN_ON(powernv_pstate_ids[i] != pstate_id);
+   return powernv_freqs[i].frequency;
+}
+
 static struct freq_attr *powernv_cpu_freq_attr[] = {
cpufreq_freq_attr_scaling_available_freqs,
NULL,
-- 
1.8.3.1

___
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev