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