1800ac1f8SBen Skeggs /* SPDX-License-Identifier: MIT */ 2800ac1f8SBen Skeggs #ifndef __NVKM_CHID_H__ 3800ac1f8SBen Skeggs #define __NVKM_CHID_H__ 4800ac1f8SBen Skeggs #include <core/event.h> 5800ac1f8SBen Skeggs 6800ac1f8SBen Skeggs struct nvkm_chid { 7800ac1f8SBen Skeggs struct kref kref; 8800ac1f8SBen Skeggs int nr; 9800ac1f8SBen Skeggs u32 mask; 10800ac1f8SBen Skeggs 11800ac1f8SBen Skeggs struct nvkm_event event; 12800ac1f8SBen Skeggs 13800ac1f8SBen Skeggs void **data; 14800ac1f8SBen Skeggs 15800ac1f8SBen Skeggs spinlock_t lock; 16800ac1f8SBen Skeggs unsigned long used[]; 17800ac1f8SBen Skeggs }; 18800ac1f8SBen Skeggs 19800ac1f8SBen Skeggs int nvkm_chid_new(const struct nvkm_event_func *, struct nvkm_subdev *, 20800ac1f8SBen Skeggs int nr, int first, int count, struct nvkm_chid **pchid); 21800ac1f8SBen Skeggs struct nvkm_chid *nvkm_chid_ref(struct nvkm_chid *); 22800ac1f8SBen Skeggs void nvkm_chid_unref(struct nvkm_chid **); 23*468fae7bSBen Skeggs int nvkm_chid_get(struct nvkm_chid *, void *data); 24*468fae7bSBen Skeggs void nvkm_chid_put(struct nvkm_chid *, int id, spinlock_t *data_lock); 25800ac1f8SBen Skeggs #endif 26