diff options
| author | Burt P <pburt0@gmail.com> | 2018-09-28 20:43:41 -0500 | 
|---|---|---|
| committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2018-10-22 19:45:03 -0700 | 
| commit | 61ffa17d01ef8668def03e15c33d1bd0dc9be93e (patch) | |
| tree | e0f92bde2f13d5ae246f41d54678ed13ac1198cd /includes | |
| parent | 7c3ba61e9e433bbad816833320c39cf5bb8afcd8 (diff) | |
devicetree: get opp-v2 freq range for gpu, if available
* opp-v2 = operating-points-v2, frequency scaling information
  from device tree that can be used for cpu, gpu, etc.
* adds helper function to get the opp-v2 range of frequencies
  for a node, dtr_get_opp_range() in dt_util.c
* adds a freq range in opp-v2 property for a node in dt
* reports a gpu's max clock frequency if avaiable via opp-v2
Signed-off-by: Burt P <pburt0@gmail.com>
Diffstat (limited to 'includes')
| -rw-r--r-- | includes/dt_util.h | 15 | ||||
| -rw-r--r-- | includes/gpu_util.h | 2 | 
2 files changed, 16 insertions, 1 deletions
| diff --git a/includes/dt_util.h b/includes/dt_util.h index 0fbd53cf..62b215fc 100644 --- a/includes/dt_util.h +++ b/includes/dt_util.h @@ -30,6 +30,7 @@ enum {      DTP_CLOCKS,  /* <phref, #clock-cells> */      DTP_GPIOS,   /* <phref, #gpio-cells> */      DTP_DMAS,    /* dma-specifier list */ +    DTP_PH_REF_OPP2,  /* phandle reference to opp-v2 table */  };  /* simplest, no aliases, doesn't require an existing dt. @@ -55,18 +56,20 @@ char *dtr_obj_alias(dtr_obj *);  char *dtr_obj_symbol(dtr_obj *);  char *dtr_obj_path(dtr_obj *);        /* device tree path */  char *dtr_obj_full_path(dtr_obj *);   /* system path */ +dtr_obj *dtr_get_parent_obj(dtr_obj *);  /* find property/node 'name' relative to node   * if node is NULL, then from root */  dtr_obj *dtr_get_prop_obj(dtr *, dtr_obj *node, const char *name);  char *dtr_get_prop_str(dtr *, dtr_obj *node, const char *name);  uint32_t dtr_get_prop_u32(dtr *, dtr_obj *node, const char *name); +uint64_t dtr_get_prop_u64(dtr *, dtr_obj *node, const char *name);  /* attempts to render the object as a string */  char* dtr_str(dtr_obj *obj);  int dtr_guess_type(dtr_obj *obj); -char *dtr_elem_phref(dtr *, dt_uint e, int show_path); +char *dtr_elem_phref(dtr *, dt_uint e, int show_path, const char *extra);  char *dtr_elem_hex(dt_uint e);  char *dtr_elem_byte(uint8_t e);  char *dtr_elem_uint(dt_uint e); @@ -88,4 +91,14 @@ void dtr_msg(dtr *s, char *fmt, ...);   * ex: ret = appf(ret, "%s=%s\n", name, value); */  char *appf(char *src, char *fmt, ...); +/* operating-points-v2 */ +typedef struct { +    uint32_t phandle; +    uint32_t khz_min; +    uint32_t khz_max; +    uint32_t clock_latency_ns; +} dt_opp_range; + +dt_opp_range *dtr_get_opp_range(dtr *, const char *name); +  #endif diff --git a/includes/gpu_util.h b/includes/gpu_util.h index 0523cc81..1eb3c6c4 100644 --- a/includes/gpu_util.h +++ b/includes/gpu_util.h @@ -35,6 +35,7 @@ typedef struct gpud {      char *vendor_str;      char *device_str;      char *location; +    uint32_t khz_max;      char *drm_dev;      char *sysfs_drm_path; @@ -42,6 +43,7 @@ typedef struct gpud {      char *dt_compat, *dt_status, *dt_name, *dt_path;      const char *dt_vendor, *dt_device; +    dt_opp_range *dt_opp;      nvgpu *nv_info;      /* ... */ | 
