Home | History | Annotate | Line # | Download | only in nvif
ioctl.h revision 1.4.2.2
      1 /*	$NetBSD: ioctl.h,v 1.4.2.2 2018/09/06 06:56:23 pgoyette 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