drm/nouveau/cipher: remove dependence on namedb/engctx lookup
authorBen Skeggs <bskeggs@redhat.com>
Thu, 20 Aug 2015 04:54:18 +0000 (14:54 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 28 Aug 2015 02:40:38 +0000 (12:40 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/nvkm/engine/cipher/g84.c

index 67892295e51ca8005b5c64e67ce94261fc54c736..62cdd1e50a95d259ebdd7d3688ee05867856bb09 100644 (file)
@@ -106,33 +106,29 @@ g84_cipher_intr_mask[] = {
 static void
 g84_cipher_intr(struct nvkm_subdev *subdev)
 {
-       struct nvkm_fifo *fifo = nvkm_fifo(subdev);
-       struct nvkm_engine *engine = nv_engine(subdev);
-       struct nvkm_object *engctx;
        struct nvkm_engine *cipher = (void *)subdev;
        struct nvkm_device *device = cipher->subdev.device;
+       struct nvkm_fifo *fifo = device->fifo;
+       struct nvkm_fifo_chan *chan;
        u32 stat = nvkm_rd32(device, 0x102130);
        u32 mthd = nvkm_rd32(device, 0x102190);
        u32 data = nvkm_rd32(device, 0x102194);
        u32 inst = nvkm_rd32(device, 0x102188) & 0x7fffffff;
+       unsigned long flags;
        char msg[128];
-       int chid;
-
-       engctx = nvkm_engctx_get(engine, inst);
-       chid   = fifo->chid(fifo, engctx);
 
+       chan = nvkm_fifo_chan_inst(fifo, (u64)inst << 12, &flags);
        if (stat) {
                nvkm_snprintbf(msg, sizeof(msg), g84_cipher_intr_mask, stat);
                nvkm_error(subdev,  "%08x [%s] ch %d [%010llx %s] "
                                    "mthd %04x data %08x\n",
-                          stat, msg, chid, (u64)inst << 12,
-                          nvkm_client_name(engctx), mthd, data);
+                          stat, msg, chan ? chan->chid : -1, (u64)inst << 12,
+                          nvkm_client_name(chan), mthd, data);
        }
+       nvkm_fifo_chan_put(fifo, flags, &chan);
 
        nvkm_wr32(device, 0x102130, stat);
        nvkm_wr32(device, 0x10200c, 0x10);
-
-       nvkm_engctx_put(engctx);
 }
 
 static int