diff options
author | Burt P <pburt0@gmail.com> | 2018-10-21 15:51:08 -0500 |
---|---|---|
committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2018-10-22 19:45:03 -0700 |
commit | 459f2b1922fff188ea7912dca0f83ebc587a11c4 (patch) | |
tree | a364a7189a23228343c0f296d1f7cca66d7887d6 /modules/devices/arm/processor.c | |
parent | f281f89033b95cce1ac833c30a37d2d5ff396583 (diff) |
arm: try device tree opp for cpu freq
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'modules/devices/arm/processor.c')
-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; } |