cpufreq: amd-pstate: Add AMD P-State frequencies attributes
authorHuang Rui <ray.huang@amd.com>
Fri, 24 Dec 2021 01:05:05 +0000 (09:05 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 30 Dec 2021 17:51:40 +0000 (18:51 +0100)
Introduce sysfs attributes to get the different level processor
frequencies.

Signed-off-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/amd-pstate.c

index 9e23efc..dbb7eee 100644 (file)
@@ -509,6 +509,52 @@ 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_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_lowest_nonlinear_freq);
+
+static struct freq_attr *amd_pstate_attr[] = {
+       &amd_pstate_max_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,
@@ -517,6 +563,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)