1 /* SPDX-License-Identifier: MIT */
2 #ifndef __GK104_FIFO_CHAN_H__
3 #define __GK104_FIFO_CHAN_H__
4 #define gk104_fifo_chan(p) container_of((p), struct gk104_fifo_chan, base)
8 struct gk104_fifo_chan
{
9 struct nvkm_fifo_chan base
;
10 struct gk104_fifo
*fifo
;
13 struct nvkm_fifo_cgrp
*cgrp
;
14 struct list_head head
;
17 struct nvkm_memory
*mthd
;
20 struct nvkm_gpuobj
*inst
;
22 } engn
[NVKM_SUBDEV_NR
];
25 extern const struct nvkm_fifo_chan_func gk104_fifo_gpfifo_func
;
27 int gk104_fifo_gpfifo_new(struct gk104_fifo
*, const struct nvkm_oclass
*,
28 void *data
, u32 size
, struct nvkm_object
**);
29 void *gk104_fifo_gpfifo_dtor(struct nvkm_fifo_chan
*);
30 void gk104_fifo_gpfifo_init(struct nvkm_fifo_chan
*);
31 void gk104_fifo_gpfifo_fini(struct nvkm_fifo_chan
*);
32 int gk104_fifo_gpfifo_engine_ctor(struct nvkm_fifo_chan
*, struct nvkm_engine
*,
33 struct nvkm_object
*);
34 void gk104_fifo_gpfifo_engine_dtor(struct nvkm_fifo_chan
*,
35 struct nvkm_engine
*);
36 int gk104_fifo_gpfifo_kick(struct gk104_fifo_chan
*);
37 int gk104_fifo_gpfifo_kick_locked(struct gk104_fifo_chan
*);
39 int gv100_fifo_gpfifo_new(struct gk104_fifo
*, const struct nvkm_oclass
*,
40 void *data
, u32 size
, struct nvkm_object
**);
41 int gv100_fifo_gpfifo_new_(const struct nvkm_fifo_chan_func
*,
42 struct gk104_fifo
*, u64
*, u16
*, u64
, u64
, u64
,
43 u64
*, bool, u32
*, const struct nvkm_oclass
*,
44 struct nvkm_object
**);
45 int gv100_fifo_gpfifo_engine_init(struct nvkm_fifo_chan
*,
46 struct nvkm_engine
*);
47 int gv100_fifo_gpfifo_engine_fini(struct nvkm_fifo_chan
*,
48 struct nvkm_engine
*, bool);
50 int tu102_fifo_gpfifo_new(struct gk104_fifo
*, const struct nvkm_oclass
*,
51 void *data
, u32 size
, struct nvkm_object
**);