Home | History | Annotate | Line # | Download | only in nvif
      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