diff options
-rw-r--r-- | modules/devices/arm/processor.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/modules/devices/arm/processor.c b/modules/devices/arm/processor.c index f4b58533..65e94e5e 100644 --- a/modules/devices/arm/processor.c +++ b/modules/devices/arm/processor.c @@ -45,6 +45,7 @@ processor_scan(void) gchar buffer[128]; gchar *rep_pname = NULL; GSList *pi = NULL; + dtr *dt = dtr_new(NULL); cpuinfo = fopen(PROC_CPUINFO, "r"); if (!cpuinfo) @@ -162,6 +163,18 @@ processor_scan(void) else processor->cpu_mhz = 0.0f; + /* Try OPP, although if it exists, it should have been available + * via cpufreq. */ + if (dt && processor->cpu_mhz == 0.0f) { + gchar *dt_cpu_path = g_strdup_printf("/cpus/cpu@%d", processor->id); + dt_opp_range *opp = dtr_get_opp_range(dt, dt_cpu_path); + if (opp) { + processor->cpu_mhz = (double)opp->khz_max / 1000; + g_free(opp); + } + g_free(dt_cpu_path); + } + /* mode */ processor->mode = ARM_A32; if ( processor_has_flag(processor->flags, "pmull") @@ -173,6 +186,7 @@ processor_scan(void) #endif } } + dtr_free(dt); return procs; } |