1 /* $NetBSD: ioctl.h,v 1.4 2018/08/27 14:54:32 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 #ifdef __NetBSD__ 24 /* XXX Kludge for NetBSD kernel-only use. */ 25 #define NVIF_IOCTL_V0_MAP_NETBSD 0x0d 26 #endif 27 __u8 type; 28 __u8 pad02[4]; 29 #define NVIF_IOCTL_V0_OWNER_NVIF 0x00 30 #define NVIF_IOCTL_V0_OWNER_ANY 0xff 31 __u8 owner; 32 #define NVIF_IOCTL_V0_ROUTE_NVIF 0x00 33 #define NVIF_IOCTL_V0_ROUTE_HIDDEN 0xff 34 __u8 route; 35 __u64 token; 36 __u64 object; 37 __u8 data[]; /* ioctl data (below) */ 38 }; 39 40 struct nvif_ioctl_nop_v0 { 41 __u64 version; 42 }; 43 44 struct nvif_ioctl_sclass_v0 { 45 /* nvif_ioctl ... */ 46 __u8 version; 47 __u8 count; 48 __u8 pad02[6]; 49 struct nvif_ioctl_sclass_oclass_v0 { 50 __s32 oclass; 51 __s16 minver; 52 __s16 maxver; 53 } oclass[]; 54 }; 55 56 struct nvif_ioctl_new_v0 { 57 /* nvif_ioctl ... */ 58 __u8 version; 59 __u8 pad01[6]; 60 __u8 route; 61 __u64 token; 62 __u64 object; 63 __u32 handle; 64 /* these class numbers are made up by us, and not nvidia-assigned */ 65 #define NVIF_IOCTL_NEW_V0_CONTROL -1 66 #define NVIF_IOCTL_NEW_V0_PERFMON -2 67 #define NVIF_IOCTL_NEW_V0_PERFDOM -3 68 #define NVIF_IOCTL_NEW_V0_SW_NV04 -4 69 #define NVIF_IOCTL_NEW_V0_SW_NV10 -5 70 #define NVIF_IOCTL_NEW_V0_SW_NV50 -6 71 #define NVIF_IOCTL_NEW_V0_SW_GF100 -7 72 __s32 oclass; 73 __u8 data[]; /* class data (class.h) */ 74 }; 75 76 struct nvif_ioctl_del { 77 }; 78 79 struct nvif_ioctl_rd_v0 { 80 /* nvif_ioctl ... */ 81 __u8 version; 82 __u8 size; 83 __u8 pad02[2]; 84 __u32 data; 85 __u64 addr; 86 }; 87 88 struct nvif_ioctl_wr_v0 { 89 /* nvif_ioctl ... */ 90 __u8 version; 91 __u8 size; 92 __u8 pad02[2]; 93 __u32 data; 94 __u64 addr; 95 }; 96 97 struct nvif_ioctl_map_v0 { 98 /* nvif_ioctl ... */ 99 __u8 version; 100 __u8 pad01[3]; 101 __u32 length; 102 __u64 handle; 103 }; 104 105 #ifdef __NetBSD__ 106 /* XXX Kludge for NetBSD kernel-only use. */ 107 #include <sys/bus.h> 108 struct nvif_ioctl_map_netbsd_v0 { 109 /* nvif_ioctl ... */ 110 __u8 version; 111 __u8 pad01[3]; 112 bus_space_tag_t tag; 113 __u32 length; 114 __u64 handle; 115 }; 116 #endif 117 118 struct nvif_ioctl_unmap { 119 }; 120 121 struct nvif_ioctl_ntfy_new_v0 { 122 /* nvif_ioctl ... */ 123 __u8 version; 124 __u8 event; 125 __u8 index; 126 __u8 pad03[5]; 127 __u8 data[]; /* event request data (event.h) */ 128 }; 129 130 struct nvif_ioctl_ntfy_del_v0 { 131 /* nvif_ioctl ... */ 132 __u8 version; 133 __u8 index; 134 __u8 pad02[6]; 135 }; 136 137 struct nvif_ioctl_ntfy_get_v0 { 138 /* nvif_ioctl ... */ 139 __u8 version; 140 __u8 index; 141 __u8 pad02[6]; 142 }; 143 144 struct nvif_ioctl_ntfy_put_v0 { 145 /* nvif_ioctl ... */ 146 __u8 version; 147 __u8 index; 148 __u8 pad02[6]; 149 }; 150 151 struct nvif_ioctl_mthd_v0 { 152 /* nvif_ioctl ... */ 153 __u8 version; 154 __u8 method; 155 __u8 pad02[6]; 156 __u8 data[]; /* method data (class.h) */ 157 }; 158 159 #endif 160