|
@@ -29,7 +29,8 @@
|
|
|
#include <nvif/ioctl.h>
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_nop(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_nop(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_nop_v0 v0;
|
|
@@ -46,7 +47,8 @@ nvkm_ioctl_nop(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_sclass(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_sclass(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_sclass_v0 v0;
|
|
@@ -78,12 +80,12 @@ nvkm_ioctl_sclass(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_new(struct nvkm_object *parent, void *data, u32 size)
|
|
|
+nvkm_ioctl_new(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *parent, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_new_v0 v0;
|
|
|
} *args = data;
|
|
|
- struct nvkm_client *client = parent->client;
|
|
|
struct nvkm_object *object = NULL;
|
|
|
struct nvkm_oclass oclass;
|
|
|
int ret = -ENOSYS, i = 0;
|
|
@@ -142,7 +144,8 @@ nvkm_ioctl_new(struct nvkm_object *parent, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_del(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_del(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_del none;
|
|
@@ -160,7 +163,8 @@ nvkm_ioctl_del(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_mthd(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_mthd(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_mthd_v0 v0;
|
|
@@ -179,7 +183,8 @@ nvkm_ioctl_mthd(struct nvkm_object *object, void *data, u32 size)
|
|
|
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_rd(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_rd(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_rd_v0 v0;
|
|
@@ -218,7 +223,8 @@ nvkm_ioctl_rd(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_wr(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_wr(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_wr_v0 v0;
|
|
@@ -246,7 +252,8 @@ nvkm_ioctl_wr(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_map(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_map(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_map_v0 v0;
|
|
@@ -264,7 +271,8 @@ nvkm_ioctl_map(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_unmap(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_unmap(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_unmap none;
|
|
@@ -280,7 +288,8 @@ nvkm_ioctl_unmap(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_ntfy_new(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_ntfy_new(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
union {
|
|
|
struct nvif_ioctl_ntfy_new_v0 v0;
|
|
@@ -306,9 +315,9 @@ nvkm_ioctl_ntfy_new(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_ntfy_del(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_ntfy_del(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
- struct nvkm_client *client = object->client;
|
|
|
union {
|
|
|
struct nvif_ioctl_ntfy_del_v0 v0;
|
|
|
} *args = data;
|
|
@@ -325,9 +334,9 @@ nvkm_ioctl_ntfy_del(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_ntfy_get(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_ntfy_get(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
- struct nvkm_client *client = object->client;
|
|
|
union {
|
|
|
struct nvif_ioctl_ntfy_get_v0 v0;
|
|
|
} *args = data;
|
|
@@ -344,9 +353,9 @@ nvkm_ioctl_ntfy_get(struct nvkm_object *object, void *data, u32 size)
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-nvkm_ioctl_ntfy_put(struct nvkm_object *object, void *data, u32 size)
|
|
|
+nvkm_ioctl_ntfy_put(struct nvkm_client *client,
|
|
|
+ struct nvkm_object *object, void *data, u32 size)
|
|
|
{
|
|
|
- struct nvkm_client *client = object->client;
|
|
|
union {
|
|
|
struct nvif_ioctl_ntfy_put_v0 v0;
|
|
|
} *args = data;
|
|
@@ -364,7 +373,7 @@ nvkm_ioctl_ntfy_put(struct nvkm_object *object, void *data, u32 size)
|
|
|
|
|
|
static struct {
|
|
|
int version;
|
|
|
- int (*func)(struct nvkm_object *, void *, u32);
|
|
|
+ int (*func)(struct nvkm_client *, struct nvkm_object *, void *, u32);
|
|
|
}
|
|
|
nvkm_ioctl_v0[] = {
|
|
|
{ 0x00, nvkm_ioctl_nop },
|
|
@@ -404,7 +413,7 @@ nvkm_ioctl_path(struct nvkm_client *client, u64 handle, u32 type,
|
|
|
|
|
|
if (ret = -EINVAL, type < ARRAY_SIZE(nvkm_ioctl_v0)) {
|
|
|
if (nvkm_ioctl_v0[type].version == 0)
|
|
|
- ret = nvkm_ioctl_v0[type].func(object, data, size);
|
|
|
+ ret = nvkm_ioctl_v0[type].func(client, object, data, size);
|
|
|
}
|
|
|
|
|
|
return ret;
|