1*4882a593Smuzhiyun /* SPDX-License-Identifier: MIT */ 2*4882a593Smuzhiyun #ifndef __NVIF_IOCTL_H__ 3*4882a593Smuzhiyun #define __NVIF_IOCTL_H__ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #define NVIF_VERSION_LATEST 0x0000000000000100ULL 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun struct nvif_ioctl_v0 { 8*4882a593Smuzhiyun __u8 version; 9*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NOP 0x00 10*4882a593Smuzhiyun #define NVIF_IOCTL_V0_SCLASS 0x01 11*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NEW 0x02 12*4882a593Smuzhiyun #define NVIF_IOCTL_V0_DEL 0x03 13*4882a593Smuzhiyun #define NVIF_IOCTL_V0_MTHD 0x04 14*4882a593Smuzhiyun #define NVIF_IOCTL_V0_RD 0x05 15*4882a593Smuzhiyun #define NVIF_IOCTL_V0_WR 0x06 16*4882a593Smuzhiyun #define NVIF_IOCTL_V0_MAP 0x07 17*4882a593Smuzhiyun #define NVIF_IOCTL_V0_UNMAP 0x08 18*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NTFY_NEW 0x09 19*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NTFY_DEL 0x0a 20*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NTFY_GET 0x0b 21*4882a593Smuzhiyun #define NVIF_IOCTL_V0_NTFY_PUT 0x0c 22*4882a593Smuzhiyun __u8 type; 23*4882a593Smuzhiyun __u8 pad02[4]; 24*4882a593Smuzhiyun #define NVIF_IOCTL_V0_OWNER_NVIF 0x00 25*4882a593Smuzhiyun #define NVIF_IOCTL_V0_OWNER_ANY 0xff 26*4882a593Smuzhiyun __u8 owner; 27*4882a593Smuzhiyun #define NVIF_IOCTL_V0_ROUTE_NVIF 0x00 28*4882a593Smuzhiyun #define NVIF_IOCTL_V0_ROUTE_HIDDEN 0xff 29*4882a593Smuzhiyun __u8 route; 30*4882a593Smuzhiyun __u64 token; 31*4882a593Smuzhiyun __u64 object; 32*4882a593Smuzhiyun __u8 data[]; /* ioctl data (below) */ 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun struct nvif_ioctl_nop_v0 { 36*4882a593Smuzhiyun __u64 version; 37*4882a593Smuzhiyun }; 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun struct nvif_ioctl_sclass_v0 { 40*4882a593Smuzhiyun /* nvif_ioctl ... */ 41*4882a593Smuzhiyun __u8 version; 42*4882a593Smuzhiyun __u8 count; 43*4882a593Smuzhiyun __u8 pad02[6]; 44*4882a593Smuzhiyun struct nvif_ioctl_sclass_oclass_v0 { 45*4882a593Smuzhiyun __s32 oclass; 46*4882a593Smuzhiyun __s16 minver; 47*4882a593Smuzhiyun __s16 maxver; 48*4882a593Smuzhiyun } oclass[]; 49*4882a593Smuzhiyun }; 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun struct nvif_ioctl_new_v0 { 52*4882a593Smuzhiyun /* nvif_ioctl ... */ 53*4882a593Smuzhiyun __u8 version; 54*4882a593Smuzhiyun __u8 pad01[6]; 55*4882a593Smuzhiyun __u8 route; 56*4882a593Smuzhiyun __u64 token; 57*4882a593Smuzhiyun __u64 object; 58*4882a593Smuzhiyun __u32 handle; 59*4882a593Smuzhiyun __s32 oclass; 60*4882a593Smuzhiyun __u8 data[]; /* class data (class.h) */ 61*4882a593Smuzhiyun }; 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun struct nvif_ioctl_del { 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun struct nvif_ioctl_rd_v0 { 67*4882a593Smuzhiyun /* nvif_ioctl ... */ 68*4882a593Smuzhiyun __u8 version; 69*4882a593Smuzhiyun __u8 size; 70*4882a593Smuzhiyun __u8 pad02[2]; 71*4882a593Smuzhiyun __u32 data; 72*4882a593Smuzhiyun __u64 addr; 73*4882a593Smuzhiyun }; 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun struct nvif_ioctl_wr_v0 { 76*4882a593Smuzhiyun /* nvif_ioctl ... */ 77*4882a593Smuzhiyun __u8 version; 78*4882a593Smuzhiyun __u8 size; 79*4882a593Smuzhiyun __u8 pad02[2]; 80*4882a593Smuzhiyun __u32 data; 81*4882a593Smuzhiyun __u64 addr; 82*4882a593Smuzhiyun }; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun struct nvif_ioctl_map_v0 { 85*4882a593Smuzhiyun /* nvif_ioctl ... */ 86*4882a593Smuzhiyun __u8 version; 87*4882a593Smuzhiyun #define NVIF_IOCTL_MAP_V0_IO 0x00 88*4882a593Smuzhiyun #define NVIF_IOCTL_MAP_V0_VA 0x01 89*4882a593Smuzhiyun __u8 type; 90*4882a593Smuzhiyun __u8 pad02[6]; 91*4882a593Smuzhiyun __u64 handle; 92*4882a593Smuzhiyun __u64 length; 93*4882a593Smuzhiyun __u8 data[]; 94*4882a593Smuzhiyun }; 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun struct nvif_ioctl_unmap { 97*4882a593Smuzhiyun }; 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun struct nvif_ioctl_ntfy_new_v0 { 100*4882a593Smuzhiyun /* nvif_ioctl ... */ 101*4882a593Smuzhiyun __u8 version; 102*4882a593Smuzhiyun __u8 event; 103*4882a593Smuzhiyun __u8 index; 104*4882a593Smuzhiyun __u8 pad03[5]; 105*4882a593Smuzhiyun __u8 data[]; /* event request data (event.h) */ 106*4882a593Smuzhiyun }; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun struct nvif_ioctl_ntfy_del_v0 { 109*4882a593Smuzhiyun /* nvif_ioctl ... */ 110*4882a593Smuzhiyun __u8 version; 111*4882a593Smuzhiyun __u8 index; 112*4882a593Smuzhiyun __u8 pad02[6]; 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun struct nvif_ioctl_ntfy_get_v0 { 116*4882a593Smuzhiyun /* nvif_ioctl ... */ 117*4882a593Smuzhiyun __u8 version; 118*4882a593Smuzhiyun __u8 index; 119*4882a593Smuzhiyun __u8 pad02[6]; 120*4882a593Smuzhiyun }; 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun struct nvif_ioctl_ntfy_put_v0 { 123*4882a593Smuzhiyun /* nvif_ioctl ... */ 124*4882a593Smuzhiyun __u8 version; 125*4882a593Smuzhiyun __u8 index; 126*4882a593Smuzhiyun __u8 pad02[6]; 127*4882a593Smuzhiyun }; 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun struct nvif_ioctl_mthd_v0 { 130*4882a593Smuzhiyun /* nvif_ioctl ... */ 131*4882a593Smuzhiyun __u8 version; 132*4882a593Smuzhiyun __u8 method; 133*4882a593Smuzhiyun __u8 pad02[6]; 134*4882a593Smuzhiyun __u8 data[]; /* method data (class.h) */ 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun #endif 138