Lines Matching refs:chan
56 struct gf100_fifo_chan *chan = gf100_fifo_chan(base); in gf100_fifo_gpfifo_engine_fini() local
57 struct nvkm_subdev *subdev = &chan->fifo->base.engine.subdev; in gf100_fifo_gpfifo_engine_fini()
59 struct nvkm_gpuobj *inst = chan->base.inst; in gf100_fifo_gpfifo_engine_fini()
62 nvkm_wr32(device, 0x002634, chan->base.chid); in gf100_fifo_gpfifo_engine_fini()
64 if (nvkm_rd32(device, 0x002634) == chan->base.chid) in gf100_fifo_gpfifo_engine_fini()
68 chan->base.chid, chan->base.object.client->name); in gf100_fifo_gpfifo_engine_fini()
89 struct gf100_fifo_chan *chan = gf100_fifo_chan(base); in gf100_fifo_gpfifo_engine_init() local
90 struct nvkm_gpuobj *inst = chan->base.inst; in gf100_fifo_gpfifo_engine_init()
93 u64 addr = chan->engn[engine->subdev.index].vma.offset; in gf100_fifo_gpfifo_engine_init()
107 struct gf100_fifo_chan *chan = gf100_fifo_chan(base); in gf100_fifo_gpfifo_engine_dtor() local
108 nvkm_gpuobj_unmap(&chan->engn[engine->subdev.index].vma); in gf100_fifo_gpfifo_engine_dtor()
109 nvkm_gpuobj_del(&chan->engn[engine->subdev.index].inst); in gf100_fifo_gpfifo_engine_dtor()
117 struct gf100_fifo_chan *chan = gf100_fifo_chan(base); in gf100_fifo_gpfifo_engine_ctor() local
124 ret = nvkm_object_bind(object, NULL, 0, &chan->engn[engn].inst); in gf100_fifo_gpfifo_engine_ctor()
128 return nvkm_gpuobj_map(chan->engn[engn].inst, chan->vm, in gf100_fifo_gpfifo_engine_ctor()
129 NV_MEM_ACCESS_RW, &chan->engn[engn].vma); in gf100_fifo_gpfifo_engine_ctor()
135 struct gf100_fifo_chan *chan = gf100_fifo_chan(base); in gf100_fifo_gpfifo_fini() local
136 struct gf100_fifo *fifo = chan->fifo; in gf100_fifo_gpfifo_fini()
138 u32 coff = chan->base.chid * 8; in gf100_fifo_gpfifo_fini()
140 if (!list_empty(&chan->head) && !chan->killed) { in gf100_fifo_gpfifo_fini()
141 list_del_init(&chan->head); in gf100_fifo_gpfifo_fini()
154 struct gf100_fifo_chan *chan = gf100_fifo_chan(base); in gf100_fifo_gpfifo_init() local
155 struct gf100_fifo *fifo = chan->fifo; in gf100_fifo_gpfifo_init()
157 u32 addr = chan->base.inst->addr >> 12; in gf100_fifo_gpfifo_init()
158 u32 coff = chan->base.chid * 8; in gf100_fifo_gpfifo_init()
162 if (list_empty(&chan->head) && !chan->killed) { in gf100_fifo_gpfifo_init()
163 list_add_tail(&chan->head, &fifo->chan); in gf100_fifo_gpfifo_init()
172 struct gf100_fifo_chan *chan = gf100_fifo_chan(base); in gf100_fifo_gpfifo_dtor() local
173 nvkm_vm_ref(NULL, &chan->vm, chan->pgd); in gf100_fifo_gpfifo_dtor()
174 nvkm_gpuobj_del(&chan->pgd); in gf100_fifo_gpfifo_dtor()
175 return chan; in gf100_fifo_gpfifo_dtor()
200 struct gf100_fifo_chan *chan; in gf100_fifo_gpfifo_new() local
214 if (!(chan = kzalloc(sizeof(*chan), GFP_KERNEL))) in gf100_fifo_gpfifo_new()
216 *pobject = &chan->base.object; in gf100_fifo_gpfifo_new()
217 chan->fifo = fifo; in gf100_fifo_gpfifo_new()
218 INIT_LIST_HEAD(&chan->head); in gf100_fifo_gpfifo_new()
230 oclass, &chan->base); in gf100_fifo_gpfifo_new()
234 args->v0.chid = chan->base.chid; in gf100_fifo_gpfifo_new()
237 ret = nvkm_gpuobj_new(device, 0x10000, 0x1000, false, NULL, &chan->pgd); in gf100_fifo_gpfifo_new()
241 nvkm_kmap(chan->base.inst); in gf100_fifo_gpfifo_new()
242 nvkm_wo32(chan->base.inst, 0x0200, lower_32_bits(chan->pgd->addr)); in gf100_fifo_gpfifo_new()
243 nvkm_wo32(chan->base.inst, 0x0204, upper_32_bits(chan->pgd->addr)); in gf100_fifo_gpfifo_new()
244 nvkm_wo32(chan->base.inst, 0x0208, 0xffffffff); in gf100_fifo_gpfifo_new()
245 nvkm_wo32(chan->base.inst, 0x020c, 0x000000ff); in gf100_fifo_gpfifo_new()
246 nvkm_done(chan->base.inst); in gf100_fifo_gpfifo_new()
248 ret = nvkm_vm_ref(chan->base.vm, &chan->vm, chan->pgd); in gf100_fifo_gpfifo_new()
254 usermem = chan->base.chid * 0x1000; in gf100_fifo_gpfifo_new()
265 nvkm_kmap(chan->base.inst); in gf100_fifo_gpfifo_new()
266 nvkm_wo32(chan->base.inst, 0x08, lower_32_bits(usermem)); in gf100_fifo_gpfifo_new()
267 nvkm_wo32(chan->base.inst, 0x0c, upper_32_bits(usermem)); in gf100_fifo_gpfifo_new()
268 nvkm_wo32(chan->base.inst, 0x10, 0x0000face); in gf100_fifo_gpfifo_new()
269 nvkm_wo32(chan->base.inst, 0x30, 0xfffff902); in gf100_fifo_gpfifo_new()
270 nvkm_wo32(chan->base.inst, 0x48, lower_32_bits(ioffset)); in gf100_fifo_gpfifo_new()
271 nvkm_wo32(chan->base.inst, 0x4c, upper_32_bits(ioffset) | in gf100_fifo_gpfifo_new()
273 nvkm_wo32(chan->base.inst, 0x54, 0x00000002); in gf100_fifo_gpfifo_new()
274 nvkm_wo32(chan->base.inst, 0x84, 0x20400000); in gf100_fifo_gpfifo_new()
275 nvkm_wo32(chan->base.inst, 0x94, 0x30000001); in gf100_fifo_gpfifo_new()
276 nvkm_wo32(chan->base.inst, 0x9c, 0x00000100); in gf100_fifo_gpfifo_new()
277 nvkm_wo32(chan->base.inst, 0xa4, 0x1f1f1f1f); in gf100_fifo_gpfifo_new()
278 nvkm_wo32(chan->base.inst, 0xa8, 0x1f1f1f1f); in gf100_fifo_gpfifo_new()
279 nvkm_wo32(chan->base.inst, 0xac, 0x0000001f); in gf100_fifo_gpfifo_new()
280 nvkm_wo32(chan->base.inst, 0xb8, 0xf8000000); in gf100_fifo_gpfifo_new()
281 nvkm_wo32(chan->base.inst, 0xf8, 0x10003080); /* 0x002310 */ in gf100_fifo_gpfifo_new()
282 nvkm_wo32(chan->base.inst, 0xfc, 0x10000010); /* 0x002350 */ in gf100_fifo_gpfifo_new()
283 nvkm_done(chan->base.inst); in gf100_fifo_gpfifo_new()