]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/nouveau: add nouveau_cli to nouveau_abi16
authorBen Skeggs <bskeggs@nvidia.com>
Fri, 26 Jul 2024 04:37:58 +0000 (14:37 +1000)
committerDanilo Krummrich <dakr@kernel.org>
Sat, 27 Jul 2024 01:05:22 +0000 (03:05 +0200)
Store a pointer to struct nouveau_cli in struct nouveau_abi16 to
avoid some dubious void casts.

Signed-off-by: Ben Skeggs <bskeggs@nvidia.com>
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240726043828.58966-8-bskeggs@nvidia.com
drivers/gpu/drm/nouveau/nouveau_abi16.c
drivers/gpu/drm/nouveau/nouveau_abi16.h

index d56909071de660db47e6a50a69c5ab370aba380c..ac50c300d2eba0c4a485eeb4aabde7bcfc91f61d 100644 (file)
@@ -50,6 +50,7 @@ nouveau_abi16(struct drm_file *file_priv)
                                .device = ~0ULL,
                        };
 
+                       abi16->cli = cli;
                        INIT_LIST_HEAD(&abi16->channels);
 
                        /* allocate device object targeting client's default
@@ -82,7 +83,7 @@ nouveau_abi16_get(struct drm_file *file_priv)
 int
 nouveau_abi16_put(struct nouveau_abi16 *abi16, int ret)
 {
-       struct nouveau_cli *cli = (void *)abi16->device.object.client;
+       struct nouveau_cli *cli = abi16->cli;
        mutex_unlock(&cli->mutex);
        return ret;
 }
@@ -164,7 +165,7 @@ nouveau_abi16_chan_fini(struct nouveau_abi16 *abi16,
 void
 nouveau_abi16_fini(struct nouveau_abi16 *abi16)
 {
-       struct nouveau_cli *cli = (void *)abi16->device.object.client;
+       struct nouveau_cli *cli = abi16->cli;
        struct nouveau_abi16_chan *chan, *temp;
 
        /* cleanup channels */
@@ -529,7 +530,7 @@ nouveau_abi16_ioctl_grobj_alloc(ABI16_IOCTL_ARGS)
 
        if (init->handle == ~0)
                return nouveau_abi16_put(abi16, -EINVAL);
-       client = abi16->device.object.client;
+       client = &abi16->cli->base;
 
        chan = nouveau_abi16_chan(abi16, init->channel);
        if (!chan)
@@ -623,7 +624,7 @@ nouveau_abi16_ioctl_notifierobj_alloc(ABI16_IOCTL_ARGS)
        /* completely unnecessary for these chipsets... */
        if (unlikely(device->info.family >= NV_DEVICE_INFO_V0_FERMI))
                return nouveau_abi16_put(abi16, -EINVAL);
-       client = abi16->device.object.client;
+       client = &abi16->cli->base;
 
        chan = nouveau_abi16_chan(abi16, info->channel);
        if (!chan)
index 661b901d8ecc92954e6f5206022a1e5b3c88fc38..0a9121e63143c5a0c31ce61935344db000302690 100644 (file)
@@ -30,6 +30,7 @@ struct nouveau_abi16_chan {
 };
 
 struct nouveau_abi16 {
+       struct nouveau_cli *cli;
        struct nvif_device device;
        struct list_head channels;
        u64 handles;