linux/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __NV50_DISP_H__
   3#define __NV50_DISP_H__
   4#define nv50_disp(p) container_of((p), struct nv50_disp, base)
   5#include "priv.h"
   6struct nvkm_head;
   7
   8struct nv50_disp {
   9        const struct nv50_disp_func *func;
  10        struct nvkm_disp base;
  11
  12        struct workqueue_struct *wq;
  13        struct work_struct supervisor;
  14        u32 super;
  15
  16        struct nvkm_event uevent;
  17
  18        struct {
  19                u32 lvdsconf;
  20        } sor;
  21
  22        struct {
  23                u8 type[3];
  24        } pior;
  25
  26        struct nv50_disp_chan *chan[21];
  27};
  28
  29void nv50_disp_super_1(struct nv50_disp *);
  30void nv50_disp_super_1_0(struct nv50_disp *, struct nvkm_head *);
  31void nv50_disp_super_2_0(struct nv50_disp *, struct nvkm_head *);
  32void nv50_disp_super_2_1(struct nv50_disp *, struct nvkm_head *);
  33void nv50_disp_super_2_2(struct nv50_disp *, struct nvkm_head *);
  34void nv50_disp_super_3_0(struct nv50_disp *, struct nvkm_head *);
  35
  36int nv50_disp_new_(const struct nv50_disp_func *, struct nvkm_device *,
  37                   int index, int heads, struct nvkm_disp **);
  38int gf119_disp_new_(const struct nv50_disp_func *, struct nvkm_device *,
  39                    int index, struct nvkm_disp **);
  40
  41struct nv50_disp_func {
  42        void (*intr)(struct nv50_disp *);
  43        void (*intr_error)(struct nv50_disp *, int chid);
  44
  45        const struct nvkm_event_func *uevent;
  46        void (*super)(struct work_struct *);
  47
  48        const struct nvkm_disp_oclass *root;
  49
  50        struct {
  51                int (*new)(struct nvkm_disp *, int id);
  52        } head;
  53
  54        struct {
  55                int nr;
  56                int (*new)(struct nvkm_disp *, int id);
  57        } dac;
  58
  59        struct {
  60                int nr;
  61                int (*new)(struct nvkm_disp *, int id);
  62        } sor;
  63
  64        struct {
  65                int nr;
  66                int (*new)(struct nvkm_disp *, int id);
  67        } pior;
  68};
  69
  70void nv50_disp_intr(struct nv50_disp *);
  71void nv50_disp_super(struct work_struct *);
  72
  73void gf119_disp_intr(struct nv50_disp *);
  74void gf119_disp_super(struct work_struct *);
  75void gf119_disp_intr_error(struct nv50_disp *, int);
  76
  77void nv50_disp_dptmds_war_2(struct nv50_disp *, struct dcb_output *);
  78void nv50_disp_dptmds_war_3(struct nv50_disp *, struct dcb_output *);
  79void nv50_disp_update_sppll1(struct nv50_disp *);
  80#endif
  81