1 #ifndef __NVKM_PM_PRIV_H__
2 #define __NVKM_PM_PRIV_H__
15 extern struct nvkm_oclass nvkm_pm_sclass[];
17 #include <core/engctx.h>
20 struct nvkm_engctx base;
23 extern struct nvkm_oclass nvkm_pm_cclass;
34 const struct nvkm_specmux *mux;
39 struct list_head head;
50 const struct nvkm_specsrc *source;
60 const struct nvkm_specsig *signal;
61 const struct nvkm_funcdom *func;
65 struct nvkm_object base;
66 struct list_head head;
67 struct list_head list;
68 const struct nvkm_funcdom *func;
69 struct nvkm_perfctr *ctr[4];
75 struct nvkm_perfsig signal[];
79 void (*init)(struct nvkm_pm *, struct nvkm_perfdom *,
80 struct nvkm_perfctr *);
81 void (*read)(struct nvkm_pm *, struct nvkm_perfdom *,
82 struct nvkm_perfctr *);
83 void (*next)(struct nvkm_pm *, struct nvkm_perfdom *);
86 int nvkm_perfdom_new(struct nvkm_pm *, const char *, u32, u32, u32, u32,
87 const struct nvkm_specdom *);
89 #define nvkm_pm_create(p,e,o,d) \
90 nvkm_pm_create_((p), (e), (o), sizeof(**d), (void **)d)
91 #define nvkm_pm_dtor(p) ({ \
92 struct nvkm_pm *c = (p); \
93 _nvkm_pm_dtor(nv_object(c)); \
95 #define nvkm_pm_init(p) ({ \
96 struct nvkm_pm *c = (p); \
97 _nvkm_pm_init(nv_object(c)); \
99 #define nvkm_pm_fini(p,s) ({ \
100 struct nvkm_pm *c = (p); \
101 _nvkm_pm_fini(nv_object(c), (s)); \
104 int nvkm_pm_create_(struct nvkm_object *, struct nvkm_object *,
105 struct nvkm_oclass *, int, void **);
106 void _nvkm_pm_dtor(struct nvkm_object *);
107 int _nvkm_pm_init(struct nvkm_object *);
108 int _nvkm_pm_fini(struct nvkm_object *, bool);