Commit | Line | Data |
---|---|---|
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 | |
8 | struct 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 | ||
36 | struct 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 | ||
53 | extern struct nouveau_oclass nv04_software_oclass; | |
54 | extern struct nouveau_oclass nv10_software_oclass; | |
55 | extern struct nouveau_oclass nv50_software_oclass; | |
56 | extern struct nouveau_oclass nvc0_software_oclass; | |
57 | ||
757833cc BS |
58 | void nv04_software_intr(struct nouveau_subdev *); |
59 | ||
ebb945a9 | 60 | #endif |