Skip to content

Commit

Permalink
cpufreq: amd: add amd-pstate frequencies attributes
Browse files Browse the repository at this point in the history
Introduce sysfs attributes to get the different level processor
frequencies.

Signed-off-by: Huang Rui <ray.huang@amd.com>
  • Loading branch information
huangrui authored and xanmod committed Nov 4, 2021
1 parent 9f1e5af commit dd80c52
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions drivers/cpufreq/amd-pstate.c
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,68 @@ static int amd_pstate_cpu_exit(struct cpufreq_policy *policy)
return 0;
}

/* Sysfs attributes */

/* This frequency is to indicate the maximum hardware frequency.
* If boost is not active but supported, the frequency will be larger than the
* one in cpuinfo.
*/
static ssize_t show_amd_pstate_max_freq(struct cpufreq_policy *policy,
char *buf)
{
int max_freq;
struct amd_cpudata *cpudata;

cpudata = policy->driver_data;

max_freq = amd_get_max_freq(cpudata);
if (max_freq < 0)
return max_freq;

return sprintf(&buf[0], "%u\n", max_freq);
}

static ssize_t show_amd_pstate_nominal_freq(struct cpufreq_policy *policy,
char *buf)
{
int nominal_freq;
struct amd_cpudata *cpudata;

cpudata = policy->driver_data;

nominal_freq = amd_get_nominal_freq(cpudata);
if (nominal_freq < 0)
return nominal_freq;

return sprintf(&buf[0], "%u\n", nominal_freq);
}

static ssize_t show_amd_pstate_lowest_nonlinear_freq(struct cpufreq_policy *policy,
char *buf)
{
int freq;
struct amd_cpudata *cpudata;

cpudata = policy->driver_data;

freq = amd_get_lowest_nonlinear_freq(cpudata);
if (freq < 0)
return freq;

return sprintf(&buf[0], "%u\n", freq);
}

cpufreq_freq_attr_ro(amd_pstate_max_freq);
cpufreq_freq_attr_ro(amd_pstate_nominal_freq);
cpufreq_freq_attr_ro(amd_pstate_lowest_nonlinear_freq);

static struct freq_attr *amd_pstate_attr[] = {
&amd_pstate_max_freq,
&amd_pstate_nominal_freq,
&amd_pstate_lowest_nonlinear_freq,
NULL,
};

static struct cpufreq_driver amd_pstate_driver = {
.flags = CPUFREQ_CONST_LOOPS | CPUFREQ_NEED_UPDATE_LIMITS,
.verify = amd_pstate_verify,
Expand All @@ -493,6 +555,7 @@ static struct cpufreq_driver amd_pstate_driver = {
.exit = amd_pstate_cpu_exit,
.set_boost = amd_pstate_set_boost,
.name = "amd-pstate",
.attr = amd_pstate_attr,
};

static int __init amd_pstate_init(void)
Expand Down

0 comments on commit dd80c52

Please sign in to comment.