cpufreq: teach cpuinfo_{min,max}_freq as available frequencies
Summary: The intel_pstate scaling driver exposes the `scaling_cur_freq` since kernel 3.17 [*], it would be fine that the min and max frequencies are known even without the `scaling_available_frequencie`. This commit teaches to use the cpuinfo_{min,max}_freq as fallback in case the `scaling_available_frequencies` is not available within intel pstate. [*] https://lkml.org/lkml/2014/11/11/1060 Signed-off-by: Takeshi Banse <takebi@laafc.net> Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D1686
This commit is contained in:
parent
70753a7903
commit
6601c09f82
|
@ -301,7 +301,8 @@ _button_cb_mouse_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED_
|
|||
}
|
||||
|
||||
if ((cpufreq_config->status->frequencies) &&
|
||||
(cpufreq_config->status->can_set_frequency))
|
||||
(cpufreq_config->status->can_set_frequency) &&
|
||||
(!cpufreq_config->status->pstate))
|
||||
{
|
||||
mo = e_menu_new();
|
||||
cpufreq_config->menu_frequency = mo;
|
||||
|
@ -766,6 +767,42 @@ _cpufreq_status_check_available(Cpu_Status *s)
|
|||
eina_list_count(s->frequencies),
|
||||
_cpufreq_cb_sort);
|
||||
}
|
||||
else
|
||||
do
|
||||
{
|
||||
#define CPUFREQ_SYSFSDIR "/sys/devices/system/cpu/cpu0/cpufreq"
|
||||
f = fopen(CPUFREQ_SYSFSDIR "/scaling_cur_freq", "r");
|
||||
if (!f) break;
|
||||
fclose(f);
|
||||
|
||||
f = fopen(CPUFREQ_SYSFSDIR "/scaling_driver", "r");
|
||||
if (!f) break;
|
||||
if (fgets(buf, sizeof(buf), f) == NULL)
|
||||
{
|
||||
fclose(f);
|
||||
break;
|
||||
}
|
||||
fclose(f);
|
||||
if (strcmp(buf, "intel_pstate\n")) break;
|
||||
|
||||
if (s->frequencies)
|
||||
{
|
||||
eina_list_free(s->frequencies);
|
||||
s->frequencies = NULL;
|
||||
}
|
||||
#define CPUFREQ_ADDF(filename) \
|
||||
f = fopen(CPUFREQ_SYSFSDIR filename, "r"); \
|
||||
if (f) \
|
||||
{ \
|
||||
if (fgets(buf, sizeof(buf), f) != NULL) \
|
||||
s->frequencies = eina_list_append(s->frequencies, \
|
||||
(void *)(long)(atoi(buf))); \
|
||||
fclose(f); \
|
||||
}
|
||||
CPUFREQ_ADDF("/cpuinfo_min_freq");
|
||||
CPUFREQ_ADDF("/cpuinfo_max_freq");
|
||||
}
|
||||
while (0);
|
||||
|
||||
f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors", "r");
|
||||
if (f)
|
||||
|
|
Loading…
Reference in New Issue