FILE
fifo.h
File preview with syntax highlighting.
linux-6.19.14/drivers/gpu/drm/nouveau/include/nvkm/engine/fifo.h
1/* SPDX-License-Identifier: MIT */ 2#ifndef __NVKM_FIFO_H__ 3#define __NVKM_FIFO_H__ 4#include <core/engine.h> 5#include <core/object.h> 6#include <core/event.h> 7#include <subdev/gsp.h> 8struct nvkm_fault_data; 9 10#define NVKM_FIFO_ENGN_NR 16 11 12struct nvkm_chan { 13 const struct nvkm_chan_func *func; 14 char name[64]; 15 struct nvkm_cgrp *cgrp; 16 int runq; 17 18 struct nvkm_gpuobj *inst; 19 struct nvkm_vmm *vmm; 20 struct nvkm_gpuobj *push; 21 int id; 22 23 struct { 24 struct nvkm_memory *mem; 25 u32 base; 26 } userd; 27 28 u32 ramfc_offset; 29 struct nvkm_gpuobj *ramfc; 30 struct nvkm_gpuobj *cache; 31 struct nvkm_gpuobj *eng; 32 struct nvkm_gpuobj *pgd; 33 struct nvkm_ramht *ramht; 34 35 spinlock_t lock; 36 atomic_t blocked; 37 atomic_t errored; 38 39 struct { 40 struct nvkm_gsp_object object; 41 struct { 42 dma_addr_t addr; 43 void *ptr; 44 } mthdbuf; 45 struct nvkm_vctx *grctx; 46 } rm; 47 48 struct list_head cctxs; 49 struct list_head head; 50}; 51 52struct nvkm_chan *nvkm_chan_get_chid(struct nvkm_engine *, int id, unsigned long *irqflags); 53struct nvkm_chan *nvkm_chan_get_inst(struct nvkm_engine *, u64 inst, unsigned long *irqflags); 54void nvkm_chan_put(struct nvkm_chan **, unsigned long irqflags); 55 56struct nvkm_chan *nvkm_uchan_chan(struct nvkm_object *); 57 58struct nvkm_fifo { 59 const struct nvkm_fifo_func *func; 60 struct nvkm_engine engine; 61 62 struct nvkm_chid *chid; 63 struct nvkm_chid *cgid; 64 65 struct list_head runqs; 66 struct list_head runls; 67 68 struct { 69#define NVKM_FIFO_NONSTALL_EVENT BIT(0) 70 struct nvkm_event event; 71 struct nvkm_inth intr; 72 } nonstall; 73 74 struct { 75 u32 chan_msec; 76 } timeout; 77 78 struct { 79 struct nvkm_memory *mem; 80 struct nvkm_vma *bar1; 81 } userd; 82 83 struct { 84 u32 mthdbuf_size; 85 } rm; 86 87 spinlock_t lock; 88 struct mutex mutex; 89}; 90 91void nvkm_fifo_fault(struct nvkm_fifo *, struct nvkm_fault_data *); 92void nvkm_fifo_pause(struct nvkm_fifo *, unsigned long *); 93void nvkm_fifo_start(struct nvkm_fifo *, unsigned long *); 94bool nvkm_fifo_ctxsw_in_progress(struct nvkm_engine *); 95 96int nv04_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 97int nv10_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 98int nv17_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 99int nv40_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 100int nv50_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 101int g84_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 102int g98_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 103int gf100_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 104int gk104_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 105int gk110_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 106int gk208_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 107int gk20a_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 108int gm107_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 109int gm200_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 110int gp100_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 111int gv100_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 112int tu102_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 113int ga100_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 114int ga102_fifo_new(struct nvkm_device *, enum nvkm_subdev_type, int inst, struct nvkm_fifo **); 115#endif
~/
Read-only file preview.