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