1 #ifndef __NVKM_HANDLE_H__
2 #define __NVKM_HANDLE_H__
3 #include <core/os.h>
4 struct nvkm_object;
5 
6 struct nvkm_handle {
7 	struct nvkm_namedb *namedb;
8 	struct list_head node;
9 
10 	struct list_head head;
11 	struct list_head tree;
12 	u32 name;
13 	u32 priv;
14 
15 	u8  route;
16 	u64 token;
17 
18 	struct nvkm_handle *parent;
19 	struct nvkm_object *object;
20 };
21 
22 int  nvkm_handle_create(struct nvkm_object *, u32 parent, u32 handle,
23 			struct nvkm_object *, struct nvkm_handle **);
24 void nvkm_handle_destroy(struct nvkm_handle *);
25 int  nvkm_handle_init(struct nvkm_handle *);
26 int  nvkm_handle_fini(struct nvkm_handle *, bool suspend);
27 
28 struct nvkm_object *nvkm_handle_ref(struct nvkm_object *, u32 name);
29 
30 struct nvkm_handle *nvkm_handle_get_class(struct nvkm_object *, u16);
31 struct nvkm_handle *nvkm_handle_get_vinst(struct nvkm_object *, u64);
32 struct nvkm_handle *nvkm_handle_get_cinst(struct nvkm_object *, u32);
33 void nvkm_handle_put(struct nvkm_handle *);
34 #endif
35