1/* SPDX-License-Identifier: MIT */
2#ifndef __NVKM_CHID_H__
3#define __NVKM_CHID_H__
4#include <core/event.h>
5
6struct nvkm_chid {
7	struct kref kref;
8	int nr;
9	u32 mask;
10
11	struct nvkm_event event;
12
13	void **data;
14
15	spinlock_t lock;
16	unsigned long used[];
17};
18
19int nvkm_chid_new(const struct nvkm_event_func *, struct nvkm_subdev *,
20		  int nr, int first, int count, struct nvkm_chid **pchid);
21struct nvkm_chid *nvkm_chid_ref(struct nvkm_chid *);
22void nvkm_chid_unref(struct nvkm_chid **);
23int nvkm_chid_get(struct nvkm_chid *, void *data);
24void nvkm_chid_put(struct nvkm_chid *, int id, spinlock_t *data_lock);
25#endif
26