drm/nouveau/fifo: split user classes out from engine implementations
[linux-2.6-block.git] / drivers / gpu / drm / nouveau / nvkm / engine / fifo / chan.h
1 #ifndef __NVKM_FIFO_CHAN_H__
2 #define __NVKM_FIFO_CHAN_H__
3 #include "priv.h"
4
5 #define nvkm_fifo_channel_create(p,e,c,b,a,s,n,m,d)                         \
6         nvkm_fifo_channel_create_((p), (e), (c), (b), (a), (s), (n),        \
7                                      (m), sizeof(**d), (void **)d)
8 #define nvkm_fifo_channel_init(p)                                           \
9         nvkm_namedb_init(&(p)->namedb)
10 #define nvkm_fifo_channel_fini(p,s)                                         \
11         nvkm_namedb_fini(&(p)->namedb, (s))
12
13 int  nvkm_fifo_channel_create_(struct nvkm_object *,
14                                   struct nvkm_object *,
15                                   struct nvkm_oclass *,
16                                   int bar, u32 addr, u32 size, u64 push,
17                                   u64 engmask, int len, void **);
18 void nvkm_fifo_channel_destroy(struct nvkm_fifo_chan *);
19
20 #define _nvkm_fifo_channel_init _nvkm_namedb_init
21 #define _nvkm_fifo_channel_fini _nvkm_namedb_fini
22
23 void _nvkm_fifo_channel_dtor(struct nvkm_object *);
24 int  _nvkm_fifo_channel_map(struct nvkm_object *, u64 *, u32 *);
25 u32  _nvkm_fifo_channel_rd32(struct nvkm_object *, u64);
26 void _nvkm_fifo_channel_wr32(struct nvkm_object *, u64, u32);
27 int  _nvkm_fifo_channel_ntfy(struct nvkm_object *, u32, struct nvkm_event **);
28 #endif