- transition from "ioctl" interface

Signed-off-by: Ben Skeggs <bske...@nvidia.com>
---
 .../gpu/drm/nouveau/include/nvif/driverif.h   |  3 +++
 drivers/gpu/drm/nouveau/include/nvif/if0013.h |  9 ---------
 drivers/gpu/drm/nouveau/nouveau_display.c     |  1 -
 drivers/gpu/drm/nouveau/nvif/head.c           | 15 +++++++++------
 .../gpu/drm/nouveau/nvkm/engine/disp/uhead.c  | 19 ++++++-------------
 5 files changed, 18 insertions(+), 29 deletions(-)
 delete mode 100644 drivers/gpu/drm/nouveau/include/nvif/if0013.h

diff --git a/drivers/gpu/drm/nouveau/include/nvif/driverif.h 
b/drivers/gpu/drm/nouveau/include/nvif/driverif.h
index 927d0d75dd29..7aa44e4fe729 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/driverif.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/driverif.h
@@ -355,6 +355,9 @@ struct nvif_head_impl {
        int (*scanoutpos)(struct nvif_head_priv *, s64 time[2],
                          u16 *vblanks, u16 *vblanke, u16 *vtotal, u16 *vline,
                          u16 *hblanks, u16 *hblanke, u16 *htotal, u16 *hline);
+
+       int (*vblank)(struct nvif_head_priv *, u64 handle,
+                     const struct nvif_event_impl **, struct nvif_event_priv 
**);
 };
 
 struct nvif_disp_impl {
diff --git a/drivers/gpu/drm/nouveau/include/nvif/if0013.h 
b/drivers/gpu/drm/nouveau/include/nvif/if0013.h
deleted file mode 100644
index f2b39f86a9cc..000000000000
--- a/drivers/gpu/drm/nouveau/include/nvif/if0013.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* SPDX-License-Identifier: MIT */
-#ifndef __NVIF_IF0013_H__
-#define __NVIF_IF0013_H__
-
-union nvif_head_event_args {
-       struct nvif_head_event_vn {
-       } vn;
-};
-#endif
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c 
b/drivers/gpu/drm/nouveau/nouveau_display.c
index 0d2dae7a94d0..3f75c7f33429 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -42,7 +42,6 @@
 
 #include <nvif/class.h>
 #include <nvif/if0011.h>
-#include <nvif/if0013.h>
 #include <dispnv50/crc.h>
 
 int
diff --git a/drivers/gpu/drm/nouveau/nvif/head.c 
b/drivers/gpu/drm/nouveau/nvif/head.c
index 777f12f3236f..05f56169e6c3 100644
--- a/drivers/gpu/drm/nouveau/nvif/head.c
+++ b/drivers/gpu/drm/nouveau/nvif/head.c
@@ -24,17 +24,20 @@
 #include <nvif/driverif.h>
 #include <nvif/printf.h>
 
-#include <nvif/class.h>
-#include <nvif/if0013.h>
-
 int
 nvif_head_vblank_event_ctor(struct nvif_head *head, const char *name, 
nvif_event_func func,
                            bool wait, struct nvif_event *event)
 {
-       int ret = nvif_event_ctor(&head->object, name ?: "nvifHeadVBlank", 
nvif_head_id(head),
-                                 func, wait, NULL, 0, event);
+       int ret;
+
+       ret = head->impl->vblank(head->priv, nvif_handle(&event->object),
+                                &event->impl, &event->priv);
        NVIF_ERRON(ret, &head->object, "[NEW EVENT:VBLANK]");
-       return ret;
+       if (ret)
+               return ret;
+
+       nvif_event_ctor(&head->object, name ?: "nvifHeadVblank", 
nvif_head_id(head), func, event);
+       return 0;
 }
 
 void
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uhead.c 
b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uhead.c
index ebf72333ae99..0ad97094a8c7 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/uhead.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/uhead.c
@@ -22,8 +22,6 @@
 #include "uhead.h"
 #include <core/event.h>
 
-#include <nvif/if0013.h>
-
 #include <nvif/event.h>
 
 struct nvif_head_priv {
@@ -32,18 +30,13 @@ struct nvif_head_priv {
 };
 
 static int
-nvkm_uhead_uevent(struct nvkm_object *object, void *argv, u32 argc, struct 
nvkm_uevent *uevent)
+nvkm_uhead_vblank(struct nvif_head_priv *uhead, u64 handle,
+                 const struct nvif_event_impl **pimpl, struct nvif_event_priv 
**ppriv)
 {
-       struct nvkm_head *head = container_of(object, struct nvif_head_priv, 
object)->head;
-       union nvif_head_event_args *args = argv;
-
-       if (!uevent)
-               return 0;
-       if (argc != sizeof(args->vn))
-               return -ENOSYS;
+       struct nvkm_head *head = uhead->head;
 
-       return nvkm_uevent_add(uevent, &head->disp->vblank, head->id,
-                              NVKM_DISP_HEAD_EVENT_VBLANK, NULL);
+       return nvkm_uevent_new_(&uhead->object, handle, &head->disp->vblank, 
false, head->id,
+                               NVKM_DISP_HEAD_EVENT_VBLANK, NULL, pimpl, 
ppriv);
 }
 
 static int
@@ -86,6 +79,7 @@ static const struct nvif_head_impl
 nvkm_uhead_impl = {
        .del = nvkm_uhead_del,
        .scanoutpos = nvkm_uhead_scanoutpos,
+       .vblank = nvkm_uhead_vblank,
 };
 
 static void *
@@ -103,7 +97,6 @@ nvkm_uhead_dtor(struct nvkm_object *object)
 static const struct nvkm_object_func
 nvkm_uhead = {
        .dtor = nvkm_uhead_dtor,
-       .uevent = nvkm_uhead_uevent,
 };
 
 int
-- 
2.41.0

Reply via email to