/* $NetBSD: priv.h,v 1.2 2018/08/27 04:58:31 riastradh Exp $ */ #ifndef __NVKM_DISP_PRIV_H__ #define __NVKM_DISP_PRIV_H__ #include <engine/disp.h> #include "outp.h" #include "outpdp.h" int nvkm_disp_ctor(const struct nvkm_disp_func *, struct nvkm_device *, int index, int heads, struct nvkm_disp *); int nvkm_disp_new_(const struct nvkm_disp_func *, struct nvkm_device *, int index, int heads, struct nvkm_disp **); void nvkm_disp_vblank(struct nvkm_disp *, int head); struct nvkm_disp_func_outp { int (* crt)(struct nvkm_disp *, int index, struct dcb_output *, struct nvkm_output **); int (* tv)(struct nvkm_disp *, int index, struct dcb_output *, struct nvkm_output **); int (*tmds)(struct nvkm_disp *, int index, struct dcb_output *, struct nvkm_output **); int (*lvds)(struct nvkm_disp *, int index, struct dcb_output *, struct nvkm_output **); int (* dp)(struct nvkm_disp *, int index, struct dcb_output *, struct nvkm_output **); }; struct nvkm_disp_func { void *(*dtor)(struct nvkm_disp *); void (*intr)(struct nvkm_disp *); const struct nvkm_disp_oclass *(*root)(struct nvkm_disp *); struct { void (*vblank_init)(struct nvkm_disp *, int head); void (*vblank_fini)(struct nvkm_disp *, int head); } head; struct { const struct nvkm_disp_func_outp internal; const struct nvkm_disp_func_outp external; } outp; }; int nvkm_disp_ntfy(struct nvkm_object *, u32, struct nvkm_event **); extern const struct nvkm_disp_oclass nv04_disp_root_oclass; struct nvkm_disp_oclass { int (*ctor)(struct nvkm_disp *, const struct nvkm_oclass *, void *data, u32 size, struct nvkm_object **); struct nvkm_sclass base; }; #endif |