1#ifndef __NV50_KMS_CORE_H__ 2#define __NV50_KMS_CORE_H__ 3#include "disp.h" 4#include "atom.h" 5 6struct nv50_core { 7 const struct nv50_core_func *func; 8 struct nv50_dmac chan; 9}; 10 11int nv50_core_new(struct nouveau_drm *, struct nv50_core **); 12void nv50_core_del(struct nv50_core **); 13 14struct nv50_core_func { 15 void (*init)(struct nv50_core *); 16 void (*ntfy_init)(struct nouveau_bo *, u32 offset); 17 int (*ntfy_wait_done)(struct nouveau_bo *, u32 offset, 18 struct nvif_device *); 19 void (*update)(struct nv50_core *, u32 *interlock, bool ntfy); 20 21 const struct nv50_head_func *head; 22 const struct nv50_outp_func { 23 void (*ctrl)(struct nv50_core *, int or, u32 ctrl, 24 struct nv50_head_atom *); 25 } *dac, *pior, *sor; 26}; 27 28int core507d_new(struct nouveau_drm *, s32, struct nv50_core **); 29int core507d_new_(const struct nv50_core_func *, struct nouveau_drm *, s32, 30 struct nv50_core **); 31void core507d_init(struct nv50_core *); 32void core507d_ntfy_init(struct nouveau_bo *, u32); 33int core507d_ntfy_wait_done(struct nouveau_bo *, u32, struct nvif_device *); 34void core507d_update(struct nv50_core *, u32 *, bool); 35 36extern const struct nv50_outp_func dac507d; 37extern const struct nv50_outp_func sor507d; 38extern const struct nv50_outp_func pior507d; 39 40int core827d_new(struct nouveau_drm *, s32, struct nv50_core **); 41 42int core907d_new(struct nouveau_drm *, s32, struct nv50_core **); 43extern const struct nv50_outp_func dac907d; 44extern const struct nv50_outp_func sor907d; 45 46int core917d_new(struct nouveau_drm *, s32, struct nv50_core **); 47 48int corec37d_new(struct nouveau_drm *, s32, struct nv50_core **); 49int corec37d_ntfy_wait_done(struct nouveau_bo *, u32, struct nvif_device *); 50void corec37d_update(struct nv50_core *, u32 *, bool); 51extern const struct nv50_outp_func sorc37d; 52 53int corec57d_new(struct nouveau_drm *, s32, struct nv50_core **); 54#endif 55