]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - drivers/gpu/drm/nouveau/include/nvkm/core/namedb.h
drm/nouveau/nvif: assign internal class identifiers to sw classes
[mirror_ubuntu-jammy-kernel.git] / drivers / gpu / drm / nouveau / include / nvkm / core / namedb.h
CommitLineData
5025407b
BS
1#ifndef __NVKM_NAMEDB_H__
2#define __NVKM_NAMEDB_H__
9274f4a9 3#include <core/parent.h>
5025407b 4struct nvkm_handle;
9274f4a9 5
5025407b
BS
6struct nvkm_namedb {
7 struct nvkm_parent parent;
9274f4a9
BS
8 rwlock_t lock;
9 struct list_head list;
10};
11
5025407b 12static inline struct nvkm_namedb *
9274f4a9
BS
13nv_namedb(void *obj)
14{
15#if CONFIG_NOUVEAU_DEBUG >= NV_DBG_PARANOIA
53003941 16 BUG_ON(!nv_iclass(obj, NV_NAMEDB_CLASS));
9274f4a9
BS
17#endif
18 return obj;
19}
20
5025407b
BS
21#define nvkm_namedb_create(p,e,c,v,s,m,d) \
22 nvkm_namedb_create_((p), (e), (c), (v), (s), (m), \
9274f4a9 23 sizeof(**d), (void **)d)
5025407b
BS
24#define nvkm_namedb_init(p) \
25 nvkm_parent_init(&(p)->parent)
26#define nvkm_namedb_fini(p,s) \
27 nvkm_parent_fini(&(p)->parent, (s))
28#define nvkm_namedb_destroy(p) \
29 nvkm_parent_destroy(&(p)->parent)
30
31int nvkm_namedb_create_(struct nvkm_object *, struct nvkm_object *,
32 struct nvkm_oclass *, u32 pclass,
33 struct nvkm_oclass *, u64 engcls,
9274f4a9
BS
34 int size, void **);
35
5025407b
BS
36int _nvkm_namedb_ctor(struct nvkm_object *, struct nvkm_object *,
37 struct nvkm_oclass *, void *, u32,
38 struct nvkm_object **);
39#define _nvkm_namedb_dtor _nvkm_parent_dtor
40#define _nvkm_namedb_init _nvkm_parent_init
41#define _nvkm_namedb_fini _nvkm_parent_fini
42
43int nvkm_namedb_insert(struct nvkm_namedb *, u32 name, struct nvkm_object *,
44 struct nvkm_handle *);
45void nvkm_namedb_remove(struct nvkm_handle *);
46
47struct nvkm_handle *nvkm_namedb_get(struct nvkm_namedb *, u32);
f58ddf95 48struct nvkm_handle *nvkm_namedb_get_class(struct nvkm_namedb *, s32);
5025407b
BS
49struct nvkm_handle *nvkm_namedb_get_vinst(struct nvkm_namedb *, u64);
50struct nvkm_handle *nvkm_namedb_get_cinst(struct nvkm_namedb *, u32);
51void nvkm_namedb_put(struct nvkm_handle *);
9274f4a9 52#endif