1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __NVKM_FIFO_PRIV_H__
3 #define __NVKM_FIFO_PRIV_H__
4 #define nvkm_fifo(p) container_of((p), struct nvkm_fifo, engine)
5 #include <engine/fifo.h>
7 int nvkm_fifo_ctor(const struct nvkm_fifo_func
*, struct nvkm_device
*,
8 int index
, int nr
, struct nvkm_fifo
*);
9 void nvkm_fifo_uevent(struct nvkm_fifo
*);
10 void nvkm_fifo_cevent(struct nvkm_fifo
*);
11 void nvkm_fifo_kevent(struct nvkm_fifo
*, int chid
);
12 void nvkm_fifo_recover_chan(struct nvkm_fifo
*, int chid
);
14 struct nvkm_fifo_chan
*
15 nvkm_fifo_chan_inst_locked(struct nvkm_fifo
*, u64 inst
);
17 struct nvkm_fifo_chan_oclass
;
18 struct nvkm_fifo_func
{
19 void *(*dtor
)(struct nvkm_fifo
*);
20 int (*oneinit
)(struct nvkm_fifo
*);
21 void (*init
)(struct nvkm_fifo
*);
22 void (*fini
)(struct nvkm_fifo
*);
23 void (*intr
)(struct nvkm_fifo
*);
24 void (*pause
)(struct nvkm_fifo
*, unsigned long *);
25 void (*start
)(struct nvkm_fifo
*, unsigned long *);
26 void (*uevent_init
)(struct nvkm_fifo
*);
27 void (*uevent_fini
)(struct nvkm_fifo
*);
28 void (*recover_chan
)(struct nvkm_fifo
*, int chid
);
29 int (*class_get
)(struct nvkm_fifo
*, int index
,
30 const struct nvkm_fifo_chan_oclass
**);
31 const struct nvkm_fifo_chan_oclass
*chan
[];
34 void nv04_fifo_intr(struct nvkm_fifo
*);
35 void nv04_fifo_pause(struct nvkm_fifo
*, unsigned long *);
36 void nv04_fifo_start(struct nvkm_fifo
*, unsigned long *);