summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/nouveau/nvkm/engine/fifo
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2015-08-20 04:54:18 (GMT)
committerBen Skeggs <bskeggs@redhat.com>2015-08-28 02:40:40 (GMT)
commit0710cc31482ae3711367c42e61580126c50c8ec0 (patch)
tree4a5214526e421b354047366348e6ab33b4eafdf6 /drivers/gpu/drm/nouveau/nvkm/engine/fifo
parent19fef52d93518cc01fd284b55ee93c0a9967634f (diff)
downloadlinux-0710cc31482ae3711367c42e61580126c50c8ec0.tar.xz
drm/nouveau/dma: convert user classes to new-style nvkm_object
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/engine/fifo')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c
index a3b6638..958f290 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/base.c
@@ -99,14 +99,13 @@ nvkm_fifo_channel_create_(struct nvkm_object *parent,
u64 engmask, int len, void **ptr)
{
struct nvkm_client *client = nvkm_client(parent);
- struct nvkm_handle *handle;
struct nvkm_dmaobj *dmaobj;
struct nvkm_fifo *fifo = (void *)engine;
struct nvkm_fifo_base *base = (void *)parent;
struct nvkm_fifo_chan *chan;
- struct nvkm_dma *dma;
struct nvkm_subdev *subdev = &fifo->engine.subdev;
struct nvkm_device *device = subdev->device;
+ struct nvkm_dma *dma = device->dma;
unsigned long flags;
int ret;
@@ -119,21 +118,12 @@ nvkm_fifo_channel_create_(struct nvkm_object *parent,
/* validate dma object representing push buffer */
if (pushbuf) {
- handle = nvkm_client_search(client, pushbuf);
- if (!handle)
+ dmaobj = nvkm_dma_search(dma, client, pushbuf);
+ if (!dmaobj)
return -ENOENT;
- dmaobj = (void *)handle->object;
- dma = (void *)dmaobj->base.engine;
- switch (dmaobj->base.oclass->handle) {
- case NV_DMA_FROM_MEMORY:
- case NV_DMA_IN_MEMORY:
- break;
- default:
- return -EINVAL;
- }
-
- ret = dma->bind(dmaobj, &base->gpuobj, &chan->pushgpu);
+ ret = dmaobj->func->bind(dmaobj, &base->gpuobj, 16,
+ &chan->pushgpu);
if (ret)
return ret;
}