1 #ifndef __NVKM_PM_PRIV_H__
2 #define __NVKM_PM_PRIV_H__
6 struct nvkm_object base
;
8 struct nvkm_perfsig
*signal
[4];
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
;
36 const struct nvkm_specsig
*signal
;
37 const struct nvkm_funcdom
*func
;
41 struct list_head head
;
42 struct list_head list
;
43 const struct nvkm_funcdom
*func
;
48 struct nvkm_perfsig signal
[];
52 void (*init
)(struct nvkm_pm
*, struct nvkm_perfdom
*,
53 struct nvkm_perfctr
*);
54 void (*read
)(struct nvkm_pm
*, struct nvkm_perfdom
*,
55 struct nvkm_perfctr
*);
56 void (*next
)(struct nvkm_pm
*, struct nvkm_perfdom
*);
59 int nvkm_perfdom_new(struct nvkm_pm
*, const char *, u32
, u32
, u32
, u32
,
60 const struct nvkm_specdom
*);
62 #define nvkm_pm_create(p,e,o,d) \
63 nvkm_pm_create_((p), (e), (o), sizeof(**d), (void **)d)
64 #define nvkm_pm_dtor(p) ({ \
65 struct nvkm_pm *c = (p); \
66 _nvkm_pm_dtor(nv_object(c)); \
68 #define nvkm_pm_init(p) ({ \
69 struct nvkm_pm *c = (p); \
70 _nvkm_pm_init(nv_object(c)); \
72 #define nvkm_pm_fini(p,s) ({ \
73 struct nvkm_pm *c = (p); \
74 _nvkm_pm_fini(nv_object(c), (s)); \
77 int nvkm_pm_create_(struct nvkm_object
*, struct nvkm_object
*,
78 struct nvkm_oclass
*, int, void **);
79 void _nvkm_pm_dtor(struct nvkm_object
*);
80 int _nvkm_pm_init(struct nvkm_object
*);
81 int _nvkm_pm_fini(struct nvkm_object
*, bool);