1/* SPDX-License-Identifier: MIT */
2#ifndef __NVKM_RAMHT_H__
3#define __NVKM_RAMHT_H__
4#include <core/gpuobj.h>
5struct nvkm_object;
6
7struct nvkm_ramht_data {
8	struct nvkm_gpuobj *inst;
9	int chid;
10	u32 handle;
11};
12
13struct nvkm_ramht {
14	struct nvkm_device *device;
15	struct nvkm_gpuobj *parent;
16	struct nvkm_gpuobj *gpuobj;
17	int size;
18	int bits;
19	struct nvkm_ramht_data data[];
20};
21
22int  nvkm_ramht_new(struct nvkm_device *, u32 size, u32 align,
23		    struct nvkm_gpuobj *, struct nvkm_ramht **);
24void nvkm_ramht_del(struct nvkm_ramht **);
25int  nvkm_ramht_insert(struct nvkm_ramht *, struct nvkm_object *,
26		       int chid, int addr, u32 handle, u32 context);
27void nvkm_ramht_remove(struct nvkm_ramht *, int cookie);
28struct nvkm_gpuobj *
29nvkm_ramht_search(struct nvkm_ramht *, int chid, u32 handle);
30#endif
31