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