drm/nouveau/kms/nv50-: convert core wndw_owner() to new push macros
authorBen Skeggs <bskeggs@redhat.com>
Sat, 20 Jun 2020 07:12:16 +0000 (17:12 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Fri, 24 Jul 2020 08:50:54 +0000 (18:50 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
drivers/gpu/drm/nouveau/dispnv50/core.h
drivers/gpu/drm/nouveau/dispnv50/corec37d.c

index 113368d..7e061b8 100644 (file)
@@ -23,7 +23,7 @@ struct nv50_core_func {
        int (*update)(struct nv50_core *, u32 *interlock, bool ntfy);
 
        struct {
-               void (*owner)(struct nv50_core *);
+               int (*owner)(struct nv50_core *);
        } wndw;
 
        const struct nv50_head_func *head;
@@ -64,7 +64,7 @@ int corec37d_new(struct nouveau_drm *, s32, struct nv50_core **);
 int corec37d_caps_init(struct nouveau_drm *, struct nv50_disp *);
 int corec37d_ntfy_wait_done(struct nouveau_bo *, u32, struct nvif_device *);
 int corec37d_update(struct nv50_core *, u32 *, bool);
-void corec37d_wndw_owner(struct nv50_core *);
+int corec37d_wndw_owner(struct nv50_core *);
 extern const struct nv50_outp_func sorc37d;
 
 int corec57d_new(struct nouveau_drm *, s32, struct nv50_core **);
index 38604f5..1b3d589 100644 (file)
 
 #include <nouveau_bo.h>
 
-void
+int
 corec37d_wndw_owner(struct nv50_core *core)
 {
+       struct nvif_push *push = core->chan.push;
        const u32 windows = 8; /*XXX*/
-       u32 *push, i;
-       if ((push = evo_wait(&core->chan, 2 * windows))) {
-               for (i = 0; i < windows; i++) {
-                       evo_mthd(push, 0x1000 + (i * 0x080), 1);
-                       evo_data(push, i >> 1);
-               }
-               evo_kick(push, &core->chan);
-       }
+       int ret, i;
+
+       if ((ret = PUSH_WAIT(push, windows * 2)))
+               return ret;
+
+       for (i = 0; i < windows; i++)
+               PUSH_NVSQ(push, NVC37D, 0x1000 + (i * 0x080), i >> 1);
+
+       return 0;
 }
 
 int