1b7019ac5SIlia Mirkin /* SPDX-License-Identifier: MIT */ 20ce41e3cSBen Skeggs #ifndef __NVKM_OPROXY_H__ 30ce41e3cSBen Skeggs #define __NVKM_OPROXY_H__ 40ce41e3cSBen Skeggs #define nvkm_oproxy(p) container_of((p), struct nvkm_oproxy, base) 50ce41e3cSBen Skeggs #include <core/object.h> 60ce41e3cSBen Skeggs 70ce41e3cSBen Skeggs struct nvkm_oproxy { 80ce41e3cSBen Skeggs const struct nvkm_oproxy_func *func; 90ce41e3cSBen Skeggs struct nvkm_object base; 100ce41e3cSBen Skeggs struct nvkm_object *object; 110ce41e3cSBen Skeggs }; 120ce41e3cSBen Skeggs 130ce41e3cSBen Skeggs struct nvkm_oproxy_func { 140ce41e3cSBen Skeggs void (*dtor[2])(struct nvkm_oproxy *); 150ce41e3cSBen Skeggs int (*init[2])(struct nvkm_oproxy *); 160ce41e3cSBen Skeggs int (*fini[2])(struct nvkm_oproxy *, bool suspend); 170ce41e3cSBen Skeggs }; 180ce41e3cSBen Skeggs 190ce41e3cSBen Skeggs void nvkm_oproxy_ctor(const struct nvkm_oproxy_func *, 200ce41e3cSBen Skeggs const struct nvkm_oclass *, struct nvkm_oproxy *); 210ce41e3cSBen Skeggs int nvkm_oproxy_new_(const struct nvkm_oproxy_func *, 220ce41e3cSBen Skeggs const struct nvkm_oclass *, struct nvkm_oproxy **); 230ce41e3cSBen Skeggs #endif 24