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 | |
| parent | f281f89033b95cce1ac833c30a37d2d5ff396583 (diff) | |
arm: try device tree opp for cpu freq
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'modules')
| -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;  } | 
