]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h
Merge tag 'for-linus-20170825' of git://git.infradead.org/linux-mtd
[mirror_ubuntu-artful-kernel.git] / drivers / gpu / drm / nouveau / nvkm / engine / disp / nv50.h
CommitLineData
70cabe4a
BS
1#ifndef __NV50_DISP_H__
2#define __NV50_DISP_H__
0ce41e3c 3#define nv50_disp(p) container_of((p), struct nv50_disp, base)
a8f8b489 4#include "priv.h"
327c5581 5struct nvkm_head;
a8f8b489 6
fd166a18 7struct nv50_disp {
70aa8670 8 const struct nv50_disp_func *func;
878da15a 9 struct nvkm_disp base;
5cc027f6 10
3607bfd3 11 struct workqueue_struct *wq;
5cc027f6
BS
12 struct work_struct supervisor;
13 u32 super;
14
b38a2322
BS
15 struct nvkm_event uevent;
16
70cabe4a 17 struct {
4a230fa6 18 u32 lvdsconf;
70cabe4a 19 } sor;
70aa8670 20
a2bc283f 21 struct {
a2bc283f 22 u8 type[3];
a2bc283f 23 } pior;
0ce41e3c 24
a90e049c 25 struct nv50_disp_chan *chan[21];
70cabe4a
BS
26};
27
29c0ca73 28void nv50_disp_super_1(struct nv50_disp *);
327c5581 29void nv50_disp_super_1_0(struct nv50_disp *, struct nvkm_head *);
d52e948c 30void nv50_disp_super_2_0(struct nv50_disp *, struct nvkm_head *);
1f0c9eaf 31void nv50_disp_super_2_1(struct nv50_disp *, struct nvkm_head *);
8d7ef84d 32void nv50_disp_super_2_2(struct nv50_disp *, struct nvkm_head *);
0d93cd92 33void nv50_disp_super_3_0(struct nv50_disp *, struct nvkm_head *);
29c0ca73 34
70aa8670
BS
35int nv50_disp_new_(const struct nv50_disp_func *, struct nvkm_device *,
36 int index, int heads, struct nvkm_disp **);
37int gf119_disp_new_(const struct nv50_disp_func *, struct nvkm_device *,
38 int index, struct nvkm_disp **);
39
70aa8670
BS
40struct nv50_disp_func {
41 void (*intr)(struct nv50_disp *);
fd47877f 42 void (*intr_error)(struct nv50_disp *, int chid);
70aa8670
BS
43
44 const struct nvkm_event_func *uevent;
45 void (*super)(struct work_struct *);
46
47 const struct nvkm_disp_oclass *root;
48
49 struct {
a1c93078 50 int (*new)(struct nvkm_disp *, int id);
70aa8670
BS
51 } head;
52
70aa8670
BS
53 struct {
54 int nr;
78f1ad6f 55 int (*new)(struct nvkm_disp *, int id);
70aa8670
BS
56 } dac;
57
58 struct {
59 int nr;
78f1ad6f 60 int (*new)(struct nvkm_disp *, int id);
70aa8670
BS
61 } sor;
62
63 struct {
64 int nr;
78f1ad6f 65 int (*new)(struct nvkm_disp *, int id);
70aa8670
BS
66 } pior;
67};
68
70aa8670 69void nv50_disp_intr(struct nv50_disp *);
af85389c 70void nv50_disp_super(struct work_struct *);
70cabe4a 71
70aa8670 72void gf119_disp_intr(struct nv50_disp *);
af85389c 73void gf119_disp_super(struct work_struct *);
fd47877f 74void gf119_disp_intr_error(struct nv50_disp *, int);
af85389c
BS
75
76void nv50_disp_dptmds_war_2(struct nv50_disp *, struct dcb_output *);
77void nv50_disp_dptmds_war_3(struct nv50_disp *, struct dcb_output *);
78void nv50_disp_update_sppll1(struct nv50_disp *);
70cabe4a 79#endif