#ifndef __NVKM_DISP_PRIV_H__ #define __NVKM_DISP_PRIV_H__ #include #include #include #include struct nouveau_disp_impl { struct nouveau_oclass base; struct nouveau_oclass **outp; struct nouveau_oclass **conn; const struct nvkm_event_func *vblank; }; #define nouveau_disp_create(p,e,c,h,i,x,d) \ nouveau_disp_create_((p), (e), (c), (h), (i), (x), \ sizeof(**d), (void **)d) #define nouveau_disp_destroy(d) ({ \ struct nouveau_disp *disp = (d); \ _nouveau_disp_dtor(nv_object(disp)); \ }) #define nouveau_disp_init(d) ({ \ struct nouveau_disp *disp = (d); \ _nouveau_disp_init(nv_object(disp)); \ }) #define nouveau_disp_fini(d,s) ({ \ struct nouveau_disp *disp = (d); \ _nouveau_disp_fini(nv_object(disp), (s)); \ }) int nouveau_disp_create_(struct nouveau_object *, struct nouveau_object *, struct nouveau_oclass *, int heads, const char *, const char *, int, void **); void _nouveau_disp_dtor(struct nouveau_object *); int _nouveau_disp_init(struct nouveau_object *); int _nouveau_disp_fini(struct nouveau_object *, bool); extern struct nouveau_oclass *nvkm_output_oclass; extern struct nouveau_oclass *nvkm_connector_oclass; int nouveau_disp_vblank_ctor(struct nouveau_object *, void *data, u32 size, struct nvkm_notify *); void nouveau_disp_vblank(struct nouveau_disp *, int head); int nouveau_disp_ntfy(struct nouveau_object *, u32, struct nvkm_event **); #endif