1/* SPDX-License-Identifier: MIT */ 2#ifndef __NVIF_IOCTL_H__ 3#define __NVIF_IOCTL_H__ 4 5#define NVIF_VERSION_LATEST 0x0000000000000100ULL 6 7struct nvif_ioctl_v0 { 8 __u8 version; 9#define NVIF_IOCTL_V0_NOP 0x00 10#define NVIF_IOCTL_V0_SCLASS 0x01 11#define NVIF_IOCTL_V0_NEW 0x02 12#define NVIF_IOCTL_V0_DEL 0x03 13#define NVIF_IOCTL_V0_MTHD 0x04 14#define NVIF_IOCTL_V0_RD 0x05 15#define NVIF_IOCTL_V0_WR 0x06 16#define NVIF_IOCTL_V0_MAP 0x07 17#define NVIF_IOCTL_V0_UNMAP 0x08 18 __u8 type; 19 __u8 pad02[4]; 20#define NVIF_IOCTL_V0_OWNER_NVIF 0x00 21#define NVIF_IOCTL_V0_OWNER_ANY 0xff 22 __u8 owner; 23#define NVIF_IOCTL_V0_ROUTE_NVIF 0x00 24#define NVIF_IOCTL_V0_ROUTE_HIDDEN 0xff 25 __u8 route; 26 __u64 token; 27 __u64 object; 28 __u8 data[]; /* ioctl data (below) */ 29}; 30 31struct nvif_ioctl_nop_v0 { 32 __u64 version; 33}; 34 35struct nvif_ioctl_sclass_v0 { 36 /* nvif_ioctl ... */ 37 __u8 version; 38 __u8 count; 39 __u8 pad02[6]; 40 struct nvif_ioctl_sclass_oclass_v0 { 41 __s32 oclass; 42 __s16 minver; 43 __s16 maxver; 44 } oclass[]; 45}; 46 47struct nvif_ioctl_new_v0 { 48 /* nvif_ioctl ... */ 49 __u8 version; 50 __u8 pad01[6]; 51 __u8 route; 52 __u64 token; 53 __u64 object; 54 __u32 handle; 55 __s32 oclass; 56 __u8 data[]; /* class data (class.h) */ 57}; 58 59struct nvif_ioctl_del { 60}; 61 62struct nvif_ioctl_mthd_v0 { 63 /* nvif_ioctl ... */ 64 __u8 version; 65 __u8 method; 66 __u8 pad02[6]; 67 __u8 data[]; /* method data (class.h) */ 68}; 69 70struct nvif_ioctl_rd_v0 { 71 /* nvif_ioctl ... */ 72 __u8 version; 73 __u8 size; 74 __u8 pad02[2]; 75 __u32 data; 76 __u64 addr; 77}; 78 79struct nvif_ioctl_wr_v0 { 80 /* nvif_ioctl ... */ 81 __u8 version; 82 __u8 size; 83 __u8 pad02[2]; 84 __u32 data; 85 __u64 addr; 86}; 87 88struct nvif_ioctl_map_v0 { 89 /* nvif_ioctl ... */ 90 __u8 version; 91#define NVIF_IOCTL_MAP_V0_IO 0x00 92#define NVIF_IOCTL_MAP_V0_VA 0x01 93 __u8 type; 94 __u8 pad02[6]; 95 __u64 handle; 96 __u64 length; 97 __u8 data[]; 98}; 99 100struct nvif_ioctl_unmap { 101}; 102#endif 103