Lines Matching full:push
39 MODULE_PARM_DESC(vram_pushbuf, "Create DMA push buffers in VRAM");
106 nvif_object_dtor(&chan->push.ctxdma); in nouveau_channel_del()
107 nouveau_vma_del(&chan->push.vma); in nouveau_channel_del()
108 nouveau_bo_unmap(chan->push.buffer); in nouveau_channel_del()
109 if (chan->push.buffer && chan->push.buffer->bo.pin_count) in nouveau_channel_del()
110 nouveau_bo_unpin(chan->push.buffer); in nouveau_channel_del()
111 nouveau_bo_fini(chan->push.buffer); in nouveau_channel_del()
118 nouveau_channel_kick(struct nvif_push *push) in nouveau_channel_kick() argument
120 struct nouveau_channel *chan = container_of(push, typeof(*chan), chan.push); in nouveau_channel_kick()
121 chan->dma.cur = chan->dma.cur + (chan->chan.push.cur - chan->chan.push.bgn); in nouveau_channel_kick()
123 chan->chan.push.bgn = chan->chan.push.cur; in nouveau_channel_kick()
127 nouveau_channel_wait(struct nvif_push *push, u32 size) in nouveau_channel_wait() argument
129 struct nouveau_channel *chan = container_of(push, typeof(*chan), chan.push); in nouveau_channel_wait()
131 chan->dma.cur = chan->dma.cur + (chan->chan.push.cur - chan->chan.push.bgn); in nouveau_channel_wait()
134 chan->chan.push.bgn = chan->chan.push.mem.object.map.ptr; in nouveau_channel_wait()
135 chan->chan.push.bgn = chan->chan.push.bgn + chan->dma.cur; in nouveau_channel_wait()
136 chan->chan.push.cur = chan->chan.push.bgn; in nouveau_channel_wait()
137 chan->chan.push.end = chan->chan.push.bgn + size; in nouveau_channel_wait()
161 /* allocate memory for dma push buffer */ in nouveau_channel_prep()
167 &chan->push.buffer); in nouveau_channel_prep()
169 ret = nouveau_bo_pin(chan->push.buffer, target, false); in nouveau_channel_prep()
171 ret = nouveau_bo_map(chan->push.buffer); in nouveau_channel_prep()
179 chan->chan.push.mem.object.parent = cli->base.object.parent; in nouveau_channel_prep()
180 chan->chan.push.mem.object.client = &cli->base; in nouveau_channel_prep()
181 chan->chan.push.mem.object.name = "chanPush"; in nouveau_channel_prep()
182 chan->chan.push.mem.object.map.ptr = chan->push.buffer->kmap.virtual; in nouveau_channel_prep()
183 chan->chan.push.wait = nouveau_channel_wait; in nouveau_channel_prep()
184 chan->chan.push.kick = nouveau_channel_kick; in nouveau_channel_prep()
188 * we be able to call out to other (indirect) push buffers in nouveau_channel_prep()
190 chan->push.addr = chan->push.buffer->offset; in nouveau_channel_prep()
193 ret = nouveau_vma_new(chan->push.buffer, chan->vmm, in nouveau_channel_prep()
194 &chan->push.vma); in nouveau_channel_prep()
200 chan->push.addr = chan->push.vma->addr; in nouveau_channel_prep()
210 if (chan->push.buffer->bo.resource->mem_type == TTM_PL_VRAM) { in nouveau_channel_prep()
242 &chan->push.ctxdma); in nouveau_channel_prep()
294 /* allocate dma push buffer */ in nouveau_channel_ctor()
309 args.chan.ctxdma = nvif_handle(&chan->push.ctxdma); in nouveau_channel_ctor()
310 args.chan.offset = chan->push.addr; in nouveau_channel_ctor()
315 args.chan.ctxdma = nvif_handle(&chan->push.ctxdma); in nouveau_channel_ctor()
318 args.chan.offset = ioffset + chan->push.addr; in nouveau_channel_ctor()
461 ret = PUSH_WAIT(&chan->chan.push, NOUVEAU_DMA_SKIPS); in nouveau_channel_init()
466 PUSH_DATA(&chan->chan.push, 0x00000000); in nouveau_channel_init()
476 ret = PUSH_WAIT(&chan->chan.push, 2); in nouveau_channel_init()
480 PUSH_NVSQ(&chan->chan.push, NV_SW, 0x0000, chan->nvsw.handle); in nouveau_channel_init()
481 PUSH_KICK(&chan->chan.push); in nouveau_channel_init()