Message ID | 1395317460-14811-4-git-send-email-ego@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Thu, Mar 20, 2014 at 05:40:58PM +0530, Gautham R. Shenoy wrote: > From: "Gautham R. Shenoy" <ego@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 <preeti@linux.vnet.ibm.com> > Signed-off-by: Gautham R. Shenoy <ego@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 > -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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,