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