linux/drivers/gpu/drm/nouveau/core/engine/perfmon/priv.h
<<
>>
Prefs
   1#ifndef __NVKM_PERFMON_PRIV_H__
   2#define __NVKM_PERFMON_PRIV_H__
   3
   4#include <engine/perfmon.h>
   5
   6struct nouveau_perfctr {
   7        struct nouveau_object base;
   8        struct list_head head;
   9        struct nouveau_perfsig *signal[4];
  10        int slot;
  11        u32 logic_op;
  12        u32 clk;
  13        u32 ctr;
  14};
  15
  16extern struct nouveau_oclass nouveau_perfmon_sclass[];
  17
  18struct nouveau_perfctx {
  19        struct nouveau_engctx base;
  20};
  21
  22extern struct nouveau_oclass nouveau_perfmon_cclass;
  23
  24struct nouveau_specsig {
  25        u8 signal;
  26        const char *name;
  27};
  28
  29struct nouveau_perfsig {
  30        const char *name;
  31};
  32
  33struct nouveau_perfdom;
  34struct nouveau_perfctr *
  35nouveau_perfsig_wrap(struct nouveau_perfmon *, const char *,
  36                     struct nouveau_perfdom **);
  37
  38struct nouveau_specdom {
  39        u16 signal_nr;
  40        const struct nouveau_specsig *signal;
  41        const struct nouveau_funcdom *func;
  42};
  43
  44extern const struct nouveau_specdom nva3_perfmon_pwr[];
  45extern const struct nouveau_specdom nvc0_perfmon_pwr[];
  46extern const struct nouveau_specdom nve0_perfmon_pwr[];
  47
  48struct nouveau_perfdom {
  49        struct list_head head;
  50        struct list_head list;
  51        const struct nouveau_funcdom *func;
  52        char name[32];
  53        u32 addr;
  54        u8  quad;
  55        u32 signal_nr;
  56        struct nouveau_perfsig signal[];
  57};
  58
  59struct nouveau_funcdom {
  60        void (*init)(struct nouveau_perfmon *, struct nouveau_perfdom *,
  61                     struct nouveau_perfctr *);
  62        void (*read)(struct nouveau_perfmon *, struct nouveau_perfdom *,
  63                     struct nouveau_perfctr *);
  64        void (*next)(struct nouveau_perfmon *, struct nouveau_perfdom *);
  65};
  66
  67int nouveau_perfdom_new(struct nouveau_perfmon *, const char *, u32,
  68                        u32, u32, u32, const struct nouveau_specdom *);
  69
  70#define nouveau_perfmon_create(p,e,o,d)                                        \
  71        nouveau_perfmon_create_((p), (e), (o), sizeof(**d), (void **)d)
  72#define nouveau_perfmon_dtor(p) ({                                             \
  73        struct nouveau_perfmon *c = (p);                                       \
  74        _nouveau_perfmon_dtor(nv_object(c));                                   \
  75})
  76#define nouveau_perfmon_init(p) ({                                             \
  77        struct nouveau_perfmon *c = (p);                                       \
  78        _nouveau_perfmon_init(nv_object(c));                                   \
  79})
  80#define nouveau_perfmon_fini(p,s) ({                                           \
  81        struct nouveau_perfmon *c = (p);                                       \
  82        _nouveau_perfmon_fini(nv_object(c), (s));                              \
  83})
  84
  85int nouveau_perfmon_create_(struct nouveau_object *, struct nouveau_object *,
  86                            struct nouveau_oclass *, int, void **);
  87void _nouveau_perfmon_dtor(struct nouveau_object *);
  88int  _nouveau_perfmon_init(struct nouveau_object *);
  89int  _nouveau_perfmon_fini(struct nouveau_object *, bool);
  90
  91#endif
  92