Commit | Line | Data |
---|---|---|
ebb945a9 BS |
1 | #ifndef __NOUVEAU_GRAPH_H__ |
2 | #define __NOUVEAU_GRAPH_H__ | |
3 | ||
4 | #include <core/engine.h> | |
5 | #include <core/engctx.h> | |
6 | #include <core/enum.h> | |
7 | ||
8 | struct nouveau_graph_chan { | |
9 | struct nouveau_engctx base; | |
10 | }; | |
11 | ||
12 | #define nouveau_graph_context_create(p,e,c,g,s,a,f,d) \ | |
13 | nouveau_engctx_create((p), (e), (c), (g), (s), (a), (f), (d)) | |
14 | #define nouveau_graph_context_destroy(d) \ | |
15 | nouveau_engctx_destroy(&(d)->base) | |
16 | #define nouveau_graph_context_init(d) \ | |
17 | nouveau_engctx_init(&(d)->base) | |
18 | #define nouveau_graph_context_fini(d,s) \ | |
19 | nouveau_engctx_fini(&(d)->base, (s)) | |
20 | ||
21 | #define _nouveau_graph_context_dtor _nouveau_engctx_dtor | |
22 | #define _nouveau_graph_context_init _nouveau_engctx_init | |
23 | #define _nouveau_graph_context_fini _nouveau_engctx_fini | |
24 | #define _nouveau_graph_context_rd32 _nouveau_engctx_rd32 | |
25 | #define _nouveau_graph_context_wr32 _nouveau_engctx_wr32 | |
26 | ||
27 | struct nouveau_graph { | |
28 | struct nouveau_engine base; | |
7e22e71e CB |
29 | |
30 | /* Returns chipset-specific counts of units packed into an u64. | |
31 | */ | |
32 | u64 (*units)(struct nouveau_graph *); | |
ebb945a9 BS |
33 | }; |
34 | ||
35 | static inline struct nouveau_graph * | |
36 | nouveau_graph(void *obj) | |
37 | { | |
38 | return (void *)nv_device(obj)->subdev[NVDEV_ENGINE_GR]; | |
39 | } | |
40 | ||
41 | #define nouveau_graph_create(p,e,c,y,d) \ | |
42 | nouveau_engine_create((p), (e), (c), (y), "PGRAPH", "graphics", (d)) | |
43 | #define nouveau_graph_destroy(d) \ | |
44 | nouveau_engine_destroy(&(d)->base) | |
45 | #define nouveau_graph_init(d) \ | |
46 | nouveau_engine_init(&(d)->base) | |
47 | #define nouveau_graph_fini(d,s) \ | |
48 | nouveau_engine_fini(&(d)->base, (s)) | |
49 | ||
50 | #define _nouveau_graph_dtor _nouveau_engine_dtor | |
51 | #define _nouveau_graph_init _nouveau_engine_init | |
52 | #define _nouveau_graph_fini _nouveau_engine_fini | |
53 | ||
54 | extern struct nouveau_oclass nv04_graph_oclass; | |
55 | extern struct nouveau_oclass nv10_graph_oclass; | |
56 | extern struct nouveau_oclass nv20_graph_oclass; | |
57 | extern struct nouveau_oclass nv25_graph_oclass; | |
58 | extern struct nouveau_oclass nv2a_graph_oclass; | |
59 | extern struct nouveau_oclass nv30_graph_oclass; | |
60 | extern struct nouveau_oclass nv34_graph_oclass; | |
61 | extern struct nouveau_oclass nv35_graph_oclass; | |
62 | extern struct nouveau_oclass nv40_graph_oclass; | |
63 | extern struct nouveau_oclass nv50_graph_oclass; | |
30f4e087 BS |
64 | extern struct nouveau_oclass *nvc0_graph_oclass; |
65 | extern struct nouveau_oclass *nvc1_graph_oclass; | |
66 | extern struct nouveau_oclass *nvc3_graph_oclass; | |
67 | extern struct nouveau_oclass *nvc8_graph_oclass; | |
68 | extern struct nouveau_oclass *nvd9_graph_oclass; | |
69 | extern struct nouveau_oclass *nve4_graph_oclass; | |
70 | extern struct nouveau_oclass *nvf0_graph_oclass; | |
ebb945a9 | 71 | |
e6626254 | 72 | extern const struct nouveau_bitfield nv04_graph_nsource[]; |
ebb945a9 BS |
73 | extern struct nouveau_ofuncs nv04_graph_ofuncs; |
74 | bool nv04_graph_idle(void *obj); | |
75 | ||
e6626254 MS |
76 | extern const struct nouveau_bitfield nv10_graph_intr_name[]; |
77 | extern const struct nouveau_bitfield nv10_graph_nstatus[]; | |
ebb945a9 | 78 | |
e6626254 | 79 | extern const struct nouveau_enum nv50_data_error_names[]; |
ebb945a9 BS |
80 | |
81 | #endif |