- transition from "ioctl" interface

Signed-off-by: Ben Skeggs <bske...@nvidia.com>
---
 drivers/gpu/drm/nouveau/include/nvif/cl0080.h |  7 ----
 .../gpu/drm/nouveau/include/nvif/driverif.h   |  2 +
 drivers/gpu/drm/nouveau/nvif/device.c         |  9 +---
 drivers/gpu/drm/nouveau/nvkm/device/user.c    | 41 ++-----------------
 4 files changed, 8 insertions(+), 51 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/include/nvif/cl0080.h 
b/drivers/gpu/drm/nouveau/include/nvif/cl0080.h
index f1684dbd8e3b..db096a41dc4f 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/cl0080.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/cl0080.h
@@ -3,7 +3,6 @@
 #define __NVIF_CL0080_H__
 
 #define NV_DEVICE_V0_INFO                                                  0x00
-#define NV_DEVICE_V0_TIME                                                  0x01
 
 struct nv_device_info_v0 {
        __u8  version;
@@ -36,10 +35,4 @@ struct nv_device_info_v0 {
        char  chip[16];
        char  name[64];
 };
-
-struct nv_device_time_v0 {
-       __u8  version;
-       __u8  pad01[7];
-       __u64 time;
-};
 #endif
diff --git a/drivers/gpu/drm/nouveau/include/nvif/driverif.h 
b/drivers/gpu/drm/nouveau/include/nvif/driverif.h
index 54446d38cb91..44064b5da897 100644
--- a/drivers/gpu/drm/nouveau/include/nvif/driverif.h
+++ b/drivers/gpu/drm/nouveau/include/nvif/driverif.h
@@ -61,6 +61,8 @@ struct nvif_device_impl {
        u64 ram_size;
        u64 ram_user;
 
+       u64 (*time)(struct nvif_device_priv *);
+
        struct {
                s32 oclass;
        } usermode;
diff --git a/drivers/gpu/drm/nouveau/nvif/device.c 
b/drivers/gpu/drm/nouveau/nvif/device.c
index d4d00a757cd0..7d057691600f 100644
--- a/drivers/gpu/drm/nouveau/nvif/device.c
+++ b/drivers/gpu/drm/nouveau/nvif/device.c
@@ -28,13 +28,8 @@
 u64
 nvif_device_time(struct nvif_device *device)
 {
-       if (!device->user.func) {
-               struct nv_device_time_v0 args = {};
-               int ret = nvif_object_mthd(&device->object, NV_DEVICE_V0_TIME,
-                                          &args, sizeof(args));
-               WARN_ON_ONCE(ret != 0);
-               return args.time;
-       }
+       if (!device->user.func)
+               return device->impl->time(device->priv);
 
        return device->user.func->time(&device->user);
 }
diff --git a/drivers/gpu/drm/nouveau/nvkm/device/user.c 
b/drivers/gpu/drm/nouveau/nvkm/device/user.c
index 26ce50fc2aac..b37c857863b8 100644
--- a/drivers/gpu/drm/nouveau/nvkm/device/user.c
+++ b/drivers/gpu/drm/nouveau/nvkm/device/user.c
@@ -32,12 +32,6 @@
 #include <engine/disp/priv.h>
 #include <engine/fifo/ufifo.h>
 
-#include <nvif/class.h>
-#include <nvif/cl0080.h>
-#include <nvif/unpack.h>
-
-#define nvkm_udevice nvif_device_priv
-
 struct nvif_device_priv {
        struct nvkm_object object;
        struct nvkm_device *device;
@@ -45,23 +39,10 @@ struct nvif_device_priv {
        struct nvif_device_impl impl;
 };
 
-static int
-nvkm_udevice_time(struct nvkm_udevice *udev, void *data, u32 size)
+static u64
+nvkm_udevice_time(struct nvif_device_priv *udev)
 {
-       struct nvkm_object *object = &udev->object;
-       struct nvkm_device *device = udev->device;
-       union {
-               struct nv_device_time_v0 v0;
-       } *args = data;
-       int ret = -ENOSYS;
-
-       nvif_ioctl(object, "device time size %d\n", size);
-       if (!(ret = nvif_unpack(ret, &data, &size, args->v0, 0, 0, false))) {
-               nvif_ioctl(object, "device time vers %d\n", args->v0.version);
-               args->v0.time = nvkm_timer_read(device->timer);
-       }
-
-       return ret;
+       return nvkm_timer_read(udev->device->timer);
 }
 
 static void
@@ -76,22 +57,9 @@ nvkm_udevice_del(struct nvif_device_priv *udev)
 static const struct nvif_device_impl
 nvkm_udevice_impl = {
        .del = nvkm_udevice_del,
+       .time = nvkm_udevice_time,
 };
 
-static int
-nvkm_udevice_mthd(struct nvkm_object *object, u32 mthd, void *data, u32 size)
-{
-       struct nvif_device_priv *udev = container_of(object, typeof(*udev), 
object);
-       nvif_ioctl(object, "device mthd %08x\n", mthd);
-       switch (mthd) {
-       case NV_DEVICE_V0_TIME:
-               return nvkm_udevice_time(udev, data, size);
-       default:
-               break;
-       }
-       return -EINVAL;
-}
-
 static int
 nvkm_udevice_fini(struct nvkm_object *object, bool suspend)
 {
@@ -190,7 +158,6 @@ static const struct nvkm_object_func
 nvkm_udevice = {
        .init = nvkm_udevice_init,
        .fini = nvkm_udevice_fini,
-       .mthd = nvkm_udevice_mthd,
        .sclass = nvkm_udevice_child_get,
 };
 
-- 
2.41.0

Reply via email to