drm/nouveau/disp: port vblank handling to event interface
[deliverable/linux.git] / drivers / gpu / drm / nouveau / core / include / engine / software.h
CommitLineData
ebb945a9
BS
1#ifndef __NOUVEAU_SOFTWARE_H__
2#define __NOUVEAU_SOFTWARE_H__
3
4#include <core/engine.h>
5#include <core/engctx.h>
1d7c71a3 6#include <core/event.h>
ebb945a9
BS
7
8struct nouveau_software_chan {
9 struct nouveau_engctx base;
10
11 struct {
1d7c71a3 12 struct nouveau_eventh event;
ebb945a9
BS
13 u32 channel;
14 u32 ctxdma;
15 u64 offset;
16 u32 value;
ebb945a9
BS
17 } vblank;
18
19 int (*flip)(void *);
20 void *flip_data;
21};
22
23#define nouveau_software_context_create(p,e,c,d) \
24 nouveau_engctx_create((p), (e), (c), (p), 0, 0, 0, (d))
25#define nouveau_software_context_destroy(d) \
26 nouveau_engctx_destroy(&(d)->base)
27#define nouveau_software_context_init(d) \
28 nouveau_engctx_init(&(d)->base)
29#define nouveau_software_context_fini(d,s) \
30 nouveau_engctx_fini(&(d)->base, (s))
31
32#define _nouveau_software_context_dtor _nouveau_engctx_dtor
33#define _nouveau_software_context_init _nouveau_engctx_init
34#define _nouveau_software_context_fini _nouveau_engctx_fini
35
36struct nouveau_software {
37 struct nouveau_engine base;
38};
39
40#define nouveau_software_create(p,e,c,d) \
41 nouveau_engine_create((p), (e), (c), true, "SW", "software", (d))
42#define nouveau_software_destroy(d) \
43 nouveau_engine_destroy(&(d)->base)
44#define nouveau_software_init(d) \
45 nouveau_engine_init(&(d)->base)
46#define nouveau_software_fini(d,s) \
47 nouveau_engine_fini(&(d)->base, (s))
48
49#define _nouveau_software_dtor _nouveau_engine_dtor
50#define _nouveau_software_init _nouveau_engine_init
51#define _nouveau_software_fini _nouveau_engine_fini
52
53extern struct nouveau_oclass nv04_software_oclass;
54extern struct nouveau_oclass nv10_software_oclass;
55extern struct nouveau_oclass nv50_software_oclass;
56extern struct nouveau_oclass nvc0_software_oclass;
57
757833cc
BS
58void nv04_software_intr(struct nouveau_subdev *);
59
ebb945a9 60#endif
This page took 0.053427 seconds and 5 git commands to generate.