1#ifndef __NVKM_PM_H__
2#define __NVKM_PM_H__
3#include <core/engine.h>
4
5struct nvkm_perfdom;
6struct nvkm_perfctr;
7struct nvkm_pm {
8	struct nvkm_engine base;
9
10	struct nvkm_perfctx *context;
11	void *profile_data;
12
13	struct list_head domains;
14	u32 sequence;
15
16	/*XXX: temp for daemon backend */
17	u32 pwr[8];
18	u32 last;
19};
20
21static inline struct nvkm_pm *
22nvkm_pm(void *obj)
23{
24	return (void *)nvkm_engine(obj, NVDEV_ENGINE_PM);
25}
26
27extern struct nvkm_oclass *nv40_pm_oclass;
28extern struct nvkm_oclass *nv50_pm_oclass;
29extern struct nvkm_oclass *g84_pm_oclass;
30extern struct nvkm_oclass *gt215_pm_oclass;
31extern struct nvkm_oclass gf100_pm_oclass;
32extern struct nvkm_oclass gk104_pm_oclass;
33extern struct nvkm_oclass gk110_pm_oclass;
34#endif
35