- transition from "ioctl" interface Signed-off-by: Ben Skeggs <bskeggs@xxxxxxxxxx> --- .../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