Lines Matching refs:chan

36 gk104_fifo_gpfifo_kick(struct gk104_fifo_chan *chan)  in gk104_fifo_gpfifo_kick()  argument
38 struct gk104_fifo *fifo = chan->fifo; in gk104_fifo_gpfifo_kick()
41 struct nvkm_client *client = chan->base.object.client; in gk104_fifo_gpfifo_kick()
43 nvkm_wr32(device, 0x002634, chan->base.chid); in gk104_fifo_gpfifo_kick()
49 chan->base.chid, client->name); in gk104_fifo_gpfifo_kick()
79 struct gk104_fifo_chan *chan = gk104_fifo_chan(base); in gk104_fifo_gpfifo_engine_fini() local
80 struct nvkm_gpuobj *inst = chan->base.inst; in gk104_fifo_gpfifo_engine_fini()
83 ret = gk104_fifo_gpfifo_kick(chan); in gk104_fifo_gpfifo_engine_fini()
102 struct gk104_fifo_chan *chan = gk104_fifo_chan(base); in gk104_fifo_gpfifo_engine_init() local
103 struct nvkm_gpuobj *inst = chan->base.inst; in gk104_fifo_gpfifo_engine_init()
106 u64 addr = chan->engn[engine->subdev.index].vma.offset; in gk104_fifo_gpfifo_engine_init()
120 struct gk104_fifo_chan *chan = gk104_fifo_chan(base); in gk104_fifo_gpfifo_engine_dtor() local
121 nvkm_gpuobj_unmap(&chan->engn[engine->subdev.index].vma); in gk104_fifo_gpfifo_engine_dtor()
122 nvkm_gpuobj_del(&chan->engn[engine->subdev.index].inst); in gk104_fifo_gpfifo_engine_dtor()
130 struct gk104_fifo_chan *chan = gk104_fifo_chan(base); in gk104_fifo_gpfifo_engine_ctor() local
137 ret = nvkm_object_bind(object, NULL, 0, &chan->engn[engn].inst); in gk104_fifo_gpfifo_engine_ctor()
141 return nvkm_gpuobj_map(chan->engn[engn].inst, chan->vm, in gk104_fifo_gpfifo_engine_ctor()
142 NV_MEM_ACCESS_RW, &chan->engn[engn].vma); in gk104_fifo_gpfifo_engine_ctor()
148 struct gk104_fifo_chan *chan = gk104_fifo_chan(base); in gk104_fifo_gpfifo_fini() local
149 struct gk104_fifo *fifo = chan->fifo; in gk104_fifo_gpfifo_fini()
151 u32 coff = chan->base.chid * 8; in gk104_fifo_gpfifo_fini()
153 if (!list_empty(&chan->head)) { in gk104_fifo_gpfifo_fini()
154 list_del_init(&chan->head); in gk104_fifo_gpfifo_fini()
156 gk104_fifo_runlist_update(fifo, chan->engine); in gk104_fifo_gpfifo_fini()
165 struct gk104_fifo_chan *chan = gk104_fifo_chan(base); in gk104_fifo_gpfifo_init() local
166 struct gk104_fifo *fifo = chan->fifo; in gk104_fifo_gpfifo_init()
168 u32 addr = chan->base.inst->addr >> 12; in gk104_fifo_gpfifo_init()
169 u32 coff = chan->base.chid * 8; in gk104_fifo_gpfifo_init()
171 nvkm_mask(device, 0x800004 + coff, 0x000f0000, chan->engine << 16); in gk104_fifo_gpfifo_init()
174 if (list_empty(&chan->head) && !chan->killed) { in gk104_fifo_gpfifo_init()
175 list_add_tail(&chan->head, &fifo->engine[chan->engine].chan); in gk104_fifo_gpfifo_init()
177 gk104_fifo_runlist_update(fifo, chan->engine); in gk104_fifo_gpfifo_init()
185 struct gk104_fifo_chan *chan = gk104_fifo_chan(base); in gk104_fifo_gpfifo_dtor() local
186 nvkm_vm_ref(NULL, &chan->vm, chan->pgd); in gk104_fifo_gpfifo_dtor()
187 nvkm_gpuobj_del(&chan->pgd); in gk104_fifo_gpfifo_dtor()
188 return chan; in gk104_fifo_gpfifo_dtor()
213 struct gk104_fifo_chan *chan; in gk104_fifo_gpfifo_new() local
252 if (!(chan = kzalloc(sizeof(*chan), GFP_KERNEL))) in gk104_fifo_gpfifo_new()
254 *pobject = &chan->base.object; in gk104_fifo_gpfifo_new()
255 chan->fifo = fifo; in gk104_fifo_gpfifo_new()
256 chan->engine = __ffs(args->v0.engine); in gk104_fifo_gpfifo_new()
257 INIT_LIST_HEAD(&chan->head); in gk104_fifo_gpfifo_new()
261 gk104_fifo_engine_subdev(chan->engine), in gk104_fifo_gpfifo_new()
263 oclass, &chan->base); in gk104_fifo_gpfifo_new()
267 args->v0.chid = chan->base.chid; in gk104_fifo_gpfifo_new()
270 ret = nvkm_gpuobj_new(device, 0x10000, 0x1000, false, NULL, &chan->pgd); in gk104_fifo_gpfifo_new()
274 nvkm_kmap(chan->base.inst); in gk104_fifo_gpfifo_new()
275 nvkm_wo32(chan->base.inst, 0x0200, lower_32_bits(chan->pgd->addr)); in gk104_fifo_gpfifo_new()
276 nvkm_wo32(chan->base.inst, 0x0204, upper_32_bits(chan->pgd->addr)); in gk104_fifo_gpfifo_new()
277 nvkm_wo32(chan->base.inst, 0x0208, 0xffffffff); in gk104_fifo_gpfifo_new()
278 nvkm_wo32(chan->base.inst, 0x020c, 0x000000ff); in gk104_fifo_gpfifo_new()
279 nvkm_done(chan->base.inst); in gk104_fifo_gpfifo_new()
281 ret = nvkm_vm_ref(chan->base.vm, &chan->vm, chan->pgd); in gk104_fifo_gpfifo_new()
286 usermem = chan->base.chid * 0x200; in gk104_fifo_gpfifo_new()
297 nvkm_kmap(chan->base.inst); in gk104_fifo_gpfifo_new()
298 nvkm_wo32(chan->base.inst, 0x08, lower_32_bits(usermem)); in gk104_fifo_gpfifo_new()
299 nvkm_wo32(chan->base.inst, 0x0c, upper_32_bits(usermem)); in gk104_fifo_gpfifo_new()
300 nvkm_wo32(chan->base.inst, 0x10, 0x0000face); in gk104_fifo_gpfifo_new()
301 nvkm_wo32(chan->base.inst, 0x30, 0xfffff902); in gk104_fifo_gpfifo_new()
302 nvkm_wo32(chan->base.inst, 0x48, lower_32_bits(ioffset)); in gk104_fifo_gpfifo_new()
303 nvkm_wo32(chan->base.inst, 0x4c, upper_32_bits(ioffset) | in gk104_fifo_gpfifo_new()
305 nvkm_wo32(chan->base.inst, 0x84, 0x20400000); in gk104_fifo_gpfifo_new()
306 nvkm_wo32(chan->base.inst, 0x94, 0x30000001); in gk104_fifo_gpfifo_new()
307 nvkm_wo32(chan->base.inst, 0x9c, 0x00000100); in gk104_fifo_gpfifo_new()
308 nvkm_wo32(chan->base.inst, 0xac, 0x0000001f); in gk104_fifo_gpfifo_new()
309 nvkm_wo32(chan->base.inst, 0xe8, chan->base.chid); in gk104_fifo_gpfifo_new()
310 nvkm_wo32(chan->base.inst, 0xb8, 0xf8000000); in gk104_fifo_gpfifo_new()
311 nvkm_wo32(chan->base.inst, 0xf8, 0x10003080); /* 0x002310 */ in gk104_fifo_gpfifo_new()
312 nvkm_wo32(chan->base.inst, 0xfc, 0x10000010); /* 0x002350 */ in gk104_fifo_gpfifo_new()
313 nvkm_done(chan->base.inst); in gk104_fifo_gpfifo_new()