Both of these are stored in nouveau_cli already, and also allows the
removal of some void casts.

Signed-off-by: Ben Skeggs <bske...@nvidia.com>
---
 drivers/gpu/drm/nouveau/dispnv04/crtc.c |  2 +-
 drivers/gpu/drm/nouveau/nouveau_abi16.c |  2 +-
 drivers/gpu/drm/nouveau/nouveau_bo.c    |  2 +-
 drivers/gpu/drm/nouveau/nouveau_chan.c  | 21 +++++++++++----------
 drivers/gpu/drm/nouveau/nouveau_chan.h  |  3 ++-
 drivers/gpu/drm/nouveau/nouveau_drm.c   |  4 ++--
 6 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/dispnv04/crtc.c 
b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
index 98736f6eab16..2ac5b6b904db 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/crtc.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
@@ -1172,7 +1172,7 @@ nv04_crtc_page_flip(struct drm_crtc *crtc, struct 
drm_framebuffer *fb,
        chan = drm->channel;
        if (!chan)
                return -ENODEV;
-       cli = (void *)chan->user.client;
+       cli = chan->cli;
        push = chan->chan.push;
 
        s = kzalloc(sizeof(*s), GFP_KERNEL);
diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c 
b/drivers/gpu/drm/nouveau/nouveau_abi16.c
index 768912cc5d8a..2a0617e5fe2a 100644
--- a/drivers/gpu/drm/nouveau/nouveau_abi16.c
+++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c
@@ -405,7 +405,7 @@ nouveau_abi16_ioctl_channel_alloc(ABI16_IOCTL_ARGS)
        list_add(&chan->head, &abi16->channels);
 
        /* create channel object and initialise dma and fence management */
-       ret = nouveau_channel_new(drm, device, false, runm, 
init->fb_ctxdma_handle,
+       ret = nouveau_channel_new(cli, false, runm, init->fb_ctxdma_handle,
                                  init->tt_ctxdma_handle, &chan->chan);
        if (ret)
                goto done;
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c 
b/drivers/gpu/drm/nouveau/nouveau_bo.c
index 6631d85ea749..745b7d7503f7 100644
--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
+++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
@@ -859,7 +859,7 @@ nouveau_bo_move_m2mf(struct ttm_buffer_object *bo, int 
evict,
 {
        struct nouveau_drm *drm = nouveau_bdev(bo->bdev);
        struct nouveau_channel *chan = drm->ttm.chan;
-       struct nouveau_cli *cli = (void *)chan->user.client;
+       struct nouveau_cli *cli = chan->cli;
        struct nouveau_fence *fence;
        int ret;
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_chan.c 
b/drivers/gpu/drm/nouveau/nouveau_chan.c
index 16e0a87e030a..e18a80fda2ca 100644
--- a/drivers/gpu/drm/nouveau/nouveau_chan.c
+++ b/drivers/gpu/drm/nouveau/nouveau_chan.c
@@ -52,7 +52,7 @@ static int
 nouveau_channel_killed(struct nvif_event *event, void *repv, u32 repc)
 {
        struct nouveau_channel *chan = container_of(event, typeof(*chan), kill);
-       struct nouveau_cli *cli = (void *)chan->user.client;
+       struct nouveau_cli *cli = chan->cli;
 
        NV_PRINTK(warn, cli, "channel %d killed!\n", chan->chid);
 
@@ -66,7 +66,7 @@ int
 nouveau_channel_idle(struct nouveau_channel *chan)
 {
        if (likely(chan && chan->fence && !atomic_read(&chan->killed))) {
-               struct nouveau_cli *cli = (void *)chan->user.client;
+               struct nouveau_cli *cli = chan->cli;
                struct nouveau_fence *fence = NULL;
                int ret;
 
@@ -142,10 +142,11 @@ nouveau_channel_wait(struct nvif_push *push, u32 size)
 }
 
 static int
-nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device,
+nouveau_channel_prep(struct nouveau_cli *cli,
                     u32 size, struct nouveau_channel **pchan)
 {
-       struct nouveau_cli *cli = (void *)device->object.client;
+       struct nouveau_drm *drm = cli->drm;
+       struct nvif_device *device = &cli->device;
        struct nv_dma_v0 args = {};
        struct nouveau_channel *chan;
        u32 target;
@@ -155,6 +156,7 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct 
nvif_device *device,
        if (!chan)
                return -ENOMEM;
 
+       chan->cli = cli;
        chan->device = device;
        chan->drm = drm;
        chan->vmm = nouveau_cli_vmm(cli);
@@ -253,7 +255,7 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct 
nvif_device *device,
 }
 
 static int
-nouveau_channel_ctor(struct nouveau_drm *drm, struct nvif_device *device, bool 
priv, u64 runm,
+nouveau_channel_ctor(struct nouveau_cli *cli, bool priv, u64 runm,
                     struct nouveau_channel **pchan)
 {
        const struct nvif_mclass hosts[] = {
@@ -278,7 +280,7 @@ nouveau_channel_ctor(struct nouveau_drm *drm, struct 
nvif_device *device, bool p
                struct nvif_chan_v0 chan;
                char name[TASK_COMM_LEN+16];
        } args;
-       struct nouveau_cli *cli = (void *)device->object.client;
+       struct nvif_device *device = &cli->device;
        struct nouveau_channel *chan;
        const u64 plength = 0x10000;
        const u64 ioffset = plength;
@@ -297,7 +299,7 @@ nouveau_channel_ctor(struct nouveau_drm *drm, struct 
nvif_device *device, bool p
                size = ioffset + ilength;
 
        /* allocate dma push buffer */
-       ret = nouveau_channel_prep(drm, device, size, &chan);
+       ret = nouveau_channel_prep(cli, size, &chan);
        *pchan = chan;
        if (ret)
                return ret;
@@ -492,13 +494,12 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 
vram, u32 gart)
 }
 
 int
-nouveau_channel_new(struct nouveau_drm *drm, struct nvif_device *device,
+nouveau_channel_new(struct nouveau_cli *cli,
                    bool priv, u64 runm, u32 vram, u32 gart, struct 
nouveau_channel **pchan)
 {
-       struct nouveau_cli *cli = (void *)device->object.client;
        int ret;
 
-       ret = nouveau_channel_ctor(drm, device, priv, runm, pchan);
+       ret = nouveau_channel_ctor(cli, priv, runm, pchan);
        if (ret) {
                NV_PRINTK(dbg, cli, "channel create, %d\n", ret);
                return ret;
diff --git a/drivers/gpu/drm/nouveau/nouveau_chan.h 
b/drivers/gpu/drm/nouveau/nouveau_chan.h
index 5de2ef4e98c2..260febd634ee 100644
--- a/drivers/gpu/drm/nouveau/nouveau_chan.h
+++ b/drivers/gpu/drm/nouveau/nouveau_chan.h
@@ -12,6 +12,7 @@ struct nouveau_channel {
                struct nvif_push *push;
        } chan;
 
+       struct nouveau_cli *cli;
        struct nvif_device *device;
        struct nouveau_drm *drm;
        struct nouveau_vmm *vmm;
@@ -62,7 +63,7 @@ struct nouveau_channel {
 int nouveau_channels_init(struct nouveau_drm *);
 void nouveau_channels_fini(struct nouveau_drm *);
 
-int  nouveau_channel_new(struct nouveau_drm *, struct nvif_device *, bool 
priv, u64 runm,
+int  nouveau_channel_new(struct nouveau_cli *, bool priv, u64 runm,
                         u32 vram, u32 gart, struct nouveau_channel **);
 void nouveau_channel_del(struct nouveau_channel **);
 int  nouveau_channel_idle(struct nouveau_channel *);
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c 
b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 6b33d1d0a4eb..8b9c463d21ac 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -335,7 +335,7 @@ nouveau_accel_ce_init(struct nouveau_drm *drm)
                return;
        }
 
-       ret = nouveau_channel_new(drm, device, false, runm, NvDmaFB, NvDmaTT, 
&drm->cechan);
+       ret = nouveau_channel_new(&drm->client, false, runm, NvDmaFB, NvDmaTT, 
&drm->cechan);
        if (ret)
                NV_ERROR(drm, "failed to create ce channel, %d\n", ret);
 }
@@ -363,7 +363,7 @@ nouveau_accel_gr_init(struct nouveau_drm *drm)
                return;
        }
 
-       ret = nouveau_channel_new(drm, device, false, runm, NvDmaFB, NvDmaTT, 
&drm->channel);
+       ret = nouveau_channel_new(&drm->client, false, runm, NvDmaFB, NvDmaTT, 
&drm->channel);
        if (ret) {
                NV_ERROR(drm, "failed to create kernel channel, %d\n", ret);
                nouveau_accel_gr_fini(drm);
-- 
2.45.1

Reply via email to