1#ifndef __NVKM_PERFMON_H__
2#define __NVKM_PERFMON_H__
3
4#include <core/device.h>
5#include <core/engine.h>
6#include <core/engctx.h>
7#include <core/class.h>
8
9struct nouveau_perfdom;
10struct nouveau_perfctr;
11struct nouveau_perfmon {
12 struct nouveau_engine base;
13
14 struct nouveau_perfctx *context;
15 void *profile_data;
16
17 struct list_head domains;
18 u32 sequence;
19
20 /*XXX: temp for daemon backend */
21 u32 pwr[8];
22 u32 last;
23};
24
25static inline struct nouveau_perfmon *
26nouveau_perfmon(void *obj)
27{
28 return (void *)nv_device(obj)->subdev[NVDEV_ENGINE_PERFMON];
29}
30
31extern struct nouveau_oclass *nv40_perfmon_oclass;
32extern struct nouveau_oclass *nv50_perfmon_oclass;
33extern struct nouveau_oclass *nv84_perfmon_oclass;
34extern struct nouveau_oclass *nva3_perfmon_oclass;
35extern struct nouveau_oclass nvc0_perfmon_oclass;
36extern struct nouveau_oclass nve0_perfmon_oclass;
37extern struct nouveau_oclass nvf0_perfmon_oclass;
38
39#endif
40