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; |
29 | |
30 | /* Returns chipset-specific counts of units packed into an u64. |
31 | */ |
32 | u64 (*units)(struct nouveau_graph *); |
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; |
64 | extern struct nouveau_oclass *nvc0_graph_oclass; |
65 | extern struct nouveau_oclass *nvc1_graph_oclass; |
66 | extern struct nouveau_oclass *nvc4_graph_oclass; |
67 | extern struct nouveau_oclass *nvc8_graph_oclass; |
68 | extern struct nouveau_oclass *nvd7_graph_oclass; |
69 | extern struct nouveau_oclass *nvd9_graph_oclass; |
70 | extern struct nouveau_oclass *nve4_graph_oclass; |
71 | extern struct nouveau_oclass *gk20a_graph_oclass; |
72 | extern struct nouveau_oclass *nvf0_graph_oclass; |
73 | extern struct nouveau_oclass *nv108_graph_oclass; |
74 | extern struct nouveau_oclass *gm107_graph_oclass; |
75 | |
76 | extern const struct nouveau_bitfield nv04_graph_nsource[]; |
77 | extern struct nouveau_ofuncs nv04_graph_ofuncs; |
78 | bool nv04_graph_idle(void *obj); |
79 | |
80 | extern const struct nouveau_bitfield nv10_graph_intr_name[]; |
81 | extern const struct nouveau_bitfield nv10_graph_nstatus[]; |
82 | |
83 | extern const struct nouveau_enum nv50_data_error_names[]; |
84 | |
85 | #endif |
86 | |