This source file includes following definitions.
- gf119_disp_chan_uevent_fini
- gf119_disp_chan_uevent_init
- gf119_disp_chan_intr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include "channv50.h"
25
26 static void
27 gf119_disp_chan_uevent_fini(struct nvkm_event *event, int type, int index)
28 {
29 struct nv50_disp *disp = container_of(event, typeof(*disp), uevent);
30 struct nvkm_device *device = disp->base.engine.subdev.device;
31 nvkm_mask(device, 0x610090, 0x00000001 << index, 0x00000000 << index);
32 nvkm_wr32(device, 0x61008c, 0x00000001 << index);
33 }
34
35 static void
36 gf119_disp_chan_uevent_init(struct nvkm_event *event, int types, int index)
37 {
38 struct nv50_disp *disp = container_of(event, typeof(*disp), uevent);
39 struct nvkm_device *device = disp->base.engine.subdev.device;
40 nvkm_wr32(device, 0x61008c, 0x00000001 << index);
41 nvkm_mask(device, 0x610090, 0x00000001 << index, 0x00000001 << index);
42 }
43
44 const struct nvkm_event_func
45 gf119_disp_chan_uevent = {
46 .ctor = nv50_disp_chan_uevent_ctor,
47 .init = gf119_disp_chan_uevent_init,
48 .fini = gf119_disp_chan_uevent_fini,
49 };
50
51 void
52 gf119_disp_chan_intr(struct nv50_disp_chan *chan, bool en)
53 {
54 struct nvkm_device *device = chan->disp->base.engine.subdev.device;
55 const u32 mask = 0x00000001 << chan->chid.user;
56 if (!en) {
57 nvkm_mask(device, 0x610090, mask, 0x00000000);
58 nvkm_mask(device, 0x6100a0, mask, 0x00000000);
59 } else {
60 nvkm_mask(device, 0x6100a0, mask, mask);
61 }
62 }