1 #ifndef __GK104_FIFO_H__
2 #define __GK104_FIFO_H__
3 #define gk104_fifo(p) container_of((p), struct gk104_fifo, base)
7 #include <subdev/mmu.h>
9 struct gk104_fifo_chan
;
11 const struct gk104_fifo_func
*func
;
12 struct nvkm_fifo base
;
15 struct work_struct work
;
23 struct nvkm_engine
*engine
;
30 struct nvkm_memory
*mem
[2];
32 wait_queue_head_t wait
;
33 struct list_head chan
;
39 struct nvkm_memory
*mem
;
44 struct gk104_fifo_func
{
46 const struct nvkm_enum
*engine
;
47 const struct nvkm_enum
*reason
;
48 const struct nvkm_enum
*hubclient
;
49 const struct nvkm_enum
*gpcclient
;
52 const struct nvkm_fifo_chan_oclass
*chan
[];
55 int gk104_fifo_new_(const struct gk104_fifo_func
*, struct nvkm_device
*,
56 int index
, int nr
, struct nvkm_fifo
**);
57 void gk104_fifo_runlist_insert(struct gk104_fifo
*, struct gk104_fifo_chan
*);
58 void gk104_fifo_runlist_remove(struct gk104_fifo
*, struct gk104_fifo_chan
*);
59 void gk104_fifo_runlist_commit(struct gk104_fifo
*, int runl
);
62 gk104_fifo_engine_subdev(int engine
)
65 case 0: return (1ULL << NVKM_ENGINE_GR
) |
66 (1ULL << NVKM_ENGINE_SW
) |
67 (1ULL << NVKM_ENGINE_CE2
);
68 case 1: return (1ULL << NVKM_ENGINE_MSPDEC
);
69 case 2: return (1ULL << NVKM_ENGINE_MSPPP
);
70 case 3: return (1ULL << NVKM_ENGINE_MSVLD
);
71 case 4: return (1ULL << NVKM_ENGINE_CE0
);
72 case 5: return (1ULL << NVKM_ENGINE_CE1
);
73 case 6: return (1ULL << NVKM_ENGINE_MSENC
);
80 extern const struct nvkm_enum gk104_fifo_fault_engine
[];
81 extern const struct nvkm_enum gk104_fifo_fault_reason
[];
82 extern const struct nvkm_enum gk104_fifo_fault_hubclient
[];
83 extern const struct nvkm_enum gk104_fifo_fault_gpcclient
[];
85 extern const struct nvkm_enum gm107_fifo_fault_engine
[];