tizen 2.4 release
[profile/mobile/platform/kernel/linux-3.10-sc7730.git] / drivers / gpu / drm / nouveau / core / include / engine / software.h
1 #ifndef __NOUVEAU_SOFTWARE_H__
2 #define __NOUVEAU_SOFTWARE_H__
3
4 #include <core/engine.h>
5 #include <core/engctx.h>
6 #include <core/event.h>
7
8 struct nouveau_software_chan {
9         struct nouveau_engctx base;
10
11         struct {
12                 struct nouveau_eventh event;
13                 u32 channel;
14                 u32 ctxdma;
15                 u64 offset;
16                 u32 value;
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
58 void nv04_software_intr(struct nouveau_subdev *);
59
60 #endif