linux/drivers/gpu/drm/nouveau/dispnv50/core.h
<<
>>
Prefs
   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