Lines Matching refs:engine
67 struct gk104_fifo_engn engine[FIFO_ENGINE_NR]; member
83 u32 engine; member
96 gk104_fifo_runlist_update(struct gk104_fifo_priv *priv, u32 engine) in gk104_fifo_runlist_update() argument
99 struct gk104_fifo_engn *engn = &priv->engine[engine]; in gk104_fifo_runlist_update()
109 if (chan && chan->state == RUNNING && chan->engine == engine) { in gk104_fifo_runlist_update()
118 nv_wr32(priv, 0x002274, (engine << 20) | (p >> 3)); in gk104_fifo_runlist_update()
121 (engine * 0x08)) & 0x00100000), in gk104_fifo_runlist_update()
123 nv_error(priv, "runlist %d update timeout\n", engine); in gk104_fifo_runlist_update()
137 switch (nv_engidx(object->engine)) { in gk104_fifo_context_attach()
173 struct gk104_fifo_priv *priv = (void *)parent->engine; in gk104_fifo_context_detach()
178 switch (nv_engidx(object->engine)) { in gk104_fifo_context_detach()
209 gk104_fifo_chan_ctor(struct nvkm_object *parent, struct nvkm_object *engine, in gk104_fifo_chan_ctor() argument
217 struct gk104_fifo_priv *priv = (void *)engine; in gk104_fifo_chan_ctor()
228 args->v0.ilength, args->v0.engine); in gk104_fifo_chan_ctor()
233 if (args->v0.engine & (1 << i)) { in gk104_fifo_chan_ctor()
235 args->v0.engine = (1 << i); in gk104_fifo_chan_ctor()
242 nv_error(priv, "unsupported engines 0x%08x\n", args->v0.engine); in gk104_fifo_chan_ctor()
246 ret = nvkm_fifo_channel_create(parent, engine, oclass, 1, in gk104_fifo_chan_ctor()
258 chan->engine = i; in gk104_fifo_chan_ctor()
289 struct gk104_fifo_priv *priv = (void *)object->engine; in gk104_fifo_chan_init()
298 nv_mask(priv, 0x800004 + (chid * 8), 0x000f0000, chan->engine << 16); in gk104_fifo_chan_init()
303 gk104_fifo_runlist_update(priv, chan->engine); in gk104_fifo_chan_init()
313 struct gk104_fifo_priv *priv = (void *)object->engine; in gk104_fifo_chan_fini()
319 gk104_fifo_runlist_update(priv, chan->engine); in gk104_fifo_chan_fini()
349 gk104_fifo_context_ctor(struct nvkm_object *parent, struct nvkm_object *engine, in gk104_fifo_context_ctor() argument
356 ret = nvkm_fifo_context_create(parent, engine, oclass, NULL, 0x1000, in gk104_fifo_context_ctor()
436 struct nvkm_object *engine; in gk104_fifo_recover_work() local
451 if ((engine = (void *)nvkm_engine(priv, engn))) { in gk104_fifo_recover_work()
452 nv_ofuncs(engine)->fini(engine, false); in gk104_fifo_recover_work()
453 WARN_ON(nv_ofuncs(engine)->init(engine)); in gk104_fifo_recover_work()
463 gk104_fifo_recover(struct gk104_fifo_priv *priv, struct nvkm_engine *engine, in gk104_fifo_recover() argument
470 nv_subdev(engine)->name, chid); in gk104_fifo_recover()
476 priv->mask |= 1ULL << nv_engidx(engine); in gk104_fifo_recover()
542 struct nvkm_engine *engine; in gk104_fifo_intr_sched_ctxsw() local
560 if (!(engine = gk104_fifo_engine(priv, engn))) in gk104_fifo_intr_sched_ctxsw()
562 gk104_fifo_recover(priv, engine, chan); in gk104_fifo_intr_sched_ctxsw()
723 struct nvkm_engine *engine = NULL; in gk104_fifo_intr_fault() local
747 engine = nvkm_engine(priv, eu->data2); in gk104_fifo_intr_fault()
748 if (engine) in gk104_fifo_intr_fault()
749 engctx = nvkm_engctx_get(engine, inst); in gk104_fifo_intr_fault()
778 gk104_fifo_recover(priv, engine, (void *)object); in gk104_fifo_intr_fault()
887 wake_up(&priv->engine[engn].wait); in gk104_fifo_intr_runlist()
1070 nvkm_gpuobj_ref(NULL, &priv->engine[i].runlist[1]); in gk104_fifo_dtor()
1071 nvkm_gpuobj_ref(NULL, &priv->engine[i].runlist[0]); in gk104_fifo_dtor()
1078 gk104_fifo_ctor(struct nvkm_object *parent, struct nvkm_object *engine, in gk104_fifo_ctor() argument
1086 ret = nvkm_fifo_create(parent, engine, oclass, 0, in gk104_fifo_ctor()
1096 0, &priv->engine[i].runlist[0]); in gk104_fifo_ctor()
1101 0, &priv->engine[i].runlist[1]); in gk104_fifo_ctor()
1105 init_waitqueue_head(&priv->engine[i].wait); in gk104_fifo_ctor()