]>
git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/gpu/drm/nouveau/include/nvkm/core/object.h
1 #ifndef __NVKM_OBJECT_H__
2 #define __NVKM_OBJECT_H__
3 #include <core/oclass.h>
8 const struct nvkm_object_func
*func
;
9 struct nvkm_client
*client
;
10 struct nvkm_engine
*engine
;
14 struct list_head head
;
15 struct list_head tree
;
22 struct nvkm_object_func
{
23 void *(*dtor
)(struct nvkm_object
*);
24 int (*init
)(struct nvkm_object
*);
25 int (*fini
)(struct nvkm_object
*, bool suspend
);
26 int (*mthd
)(struct nvkm_object
*, u32 mthd
, void *data
, u32 size
);
27 int (*ntfy
)(struct nvkm_object
*, u32 mthd
, struct nvkm_event
**);
28 int (*map
)(struct nvkm_object
*, u64
*addr
, u32
*size
);
29 int (*rd08
)(struct nvkm_object
*, u64 addr
, u8
*data
);
30 int (*rd16
)(struct nvkm_object
*, u64 addr
, u16
*data
);
31 int (*rd32
)(struct nvkm_object
*, u64 addr
, u32
*data
);
32 int (*wr08
)(struct nvkm_object
*, u64 addr
, u8 data
);
33 int (*wr16
)(struct nvkm_object
*, u64 addr
, u16 data
);
34 int (*wr32
)(struct nvkm_object
*, u64 addr
, u32 data
);
35 int (*bind
)(struct nvkm_object
*, struct nvkm_gpuobj
*, int align
,
36 struct nvkm_gpuobj
**);
37 int (*sclass
)(struct nvkm_object
*, int index
, struct nvkm_oclass
*);
40 void nvkm_object_ctor(const struct nvkm_object_func
*,
41 const struct nvkm_oclass
*, struct nvkm_object
*);
42 int nvkm_object_new_(const struct nvkm_object_func
*,
43 const struct nvkm_oclass
*, void *data
, u32 size
,
44 struct nvkm_object
**);
45 int nvkm_object_new(const struct nvkm_oclass
*, void *data
, u32 size
,
46 struct nvkm_object
**);
47 void nvkm_object_del(struct nvkm_object
**);
48 void *nvkm_object_dtor(struct nvkm_object
*);
49 int nvkm_object_init(struct nvkm_object
*);
50 int nvkm_object_fini(struct nvkm_object
*, bool suspend
);
51 int nvkm_object_mthd(struct nvkm_object
*, u32 mthd
, void *data
, u32 size
);
52 int nvkm_object_ntfy(struct nvkm_object
*, u32 mthd
, struct nvkm_event
**);
53 int nvkm_object_map(struct nvkm_object
*, u64
*addr
, u32
*size
);
54 int nvkm_object_rd08(struct nvkm_object
*, u64 addr
, u8
*data
);
55 int nvkm_object_rd16(struct nvkm_object
*, u64 addr
, u16
*data
);
56 int nvkm_object_rd32(struct nvkm_object
*, u64 addr
, u32
*data
);
57 int nvkm_object_wr08(struct nvkm_object
*, u64 addr
, u8 data
);
58 int nvkm_object_wr16(struct nvkm_object
*, u64 addr
, u16 data
);
59 int nvkm_object_wr32(struct nvkm_object
*, u64 addr
, u32 data
);
60 int nvkm_object_bind(struct nvkm_object
*, struct nvkm_gpuobj
*, int align
,
61 struct nvkm_gpuobj
**);
63 bool nvkm_object_insert(struct nvkm_object
*);
64 void nvkm_object_remove(struct nvkm_object
*);
65 struct nvkm_object
*nvkm_object_search(struct nvkm_client
*, u64 object
,
66 const struct nvkm_object_func
*);