Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2)  * Copyright 2005 Stephane Marchesin.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * All Rights Reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * Permission is hereby granted, free of charge, to any person obtaining a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * copy of this software and associated documentation files (the "Software"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * to deal in the Software without restriction, including without limitation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  * and/or sell copies of the Software, and to permit persons to whom the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  * Software is furnished to do so, subject to the following conditions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * The above copyright notice and this permission notice (including the next
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  * paragraph) shall be included in all copies or substantial portions of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)  * Software.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)  * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)  * OTHER DEALINGS IN THE SOFTWARE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #ifndef __NOUVEAU_DRM_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define __NOUVEAU_DRM_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define DRM_NOUVEAU_EVENT_NVIF                                       0x80000000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) #include "drm.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #if defined(__cplusplus)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) extern "C" {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) #define NOUVEAU_GEM_DOMAIN_CPU       (1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) #define NOUVEAU_GEM_DOMAIN_VRAM      (1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #define NOUVEAU_GEM_DOMAIN_GART      (1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #define NOUVEAU_GEM_DOMAIN_MAPPABLE  (1 << 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) #define NOUVEAU_GEM_DOMAIN_COHERENT  (1 << 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) #define NOUVEAU_GEM_TILE_COMP        0x00030000 /* nv50-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) #define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) #define NOUVEAU_GEM_TILE_16BPP       0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) #define NOUVEAU_GEM_TILE_32BPP       0x00000002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) #define NOUVEAU_GEM_TILE_ZETA        0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) #define NOUVEAU_GEM_TILE_NONCONTIG   0x00000008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) struct drm_nouveau_gem_info {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	__u32 handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	__u32 domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	__u64 size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	__u64 offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	__u64 map_handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	__u32 tile_mode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	__u32 tile_flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) struct drm_nouveau_gem_new {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	struct drm_nouveau_gem_info info;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	__u32 channel_hint;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	__u32 align;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) #define NOUVEAU_GEM_MAX_BUFFERS 1024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) struct drm_nouveau_gem_pushbuf_bo_presumed {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	__u32 valid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	__u32 domain;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	__u64 offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) struct drm_nouveau_gem_pushbuf_bo {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	__u64 user_priv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	__u32 handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	__u32 read_domains;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	__u32 write_domains;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	__u32 valid_domains;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	struct drm_nouveau_gem_pushbuf_bo_presumed presumed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) #define NOUVEAU_GEM_RELOC_LOW  (1 << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) #define NOUVEAU_GEM_RELOC_HIGH (1 << 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) #define NOUVEAU_GEM_RELOC_OR   (1 << 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) #define NOUVEAU_GEM_MAX_RELOCS 1024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) struct drm_nouveau_gem_pushbuf_reloc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	__u32 reloc_bo_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	__u32 reloc_bo_offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	__u32 bo_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	__u32 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	__u32 data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	__u32 vor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	__u32 tor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) #define NOUVEAU_GEM_MAX_PUSH 512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) struct drm_nouveau_gem_pushbuf_push {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	__u32 bo_index;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	__u32 pad;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	__u64 offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	__u64 length;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) struct drm_nouveau_gem_pushbuf {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	__u32 channel;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	__u32 nr_buffers;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	__u64 buffers;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	__u32 nr_relocs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	__u32 nr_push;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	__u64 relocs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	__u64 push;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	__u32 suffix0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	__u32 suffix1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) #define NOUVEAU_GEM_PUSHBUF_SYNC                                    (1ULL << 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	__u64 vram_available;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	__u64 gart_available;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) #define NOUVEAU_GEM_CPU_PREP_NOWAIT                                  0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) #define NOUVEAU_GEM_CPU_PREP_WRITE                                   0x00000004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) struct drm_nouveau_gem_cpu_prep {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	__u32 handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	__u32 flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) struct drm_nouveau_gem_cpu_fini {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	__u32 handle;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) #define DRM_NOUVEAU_GETPARAM           0x00 /* deprecated */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) #define DRM_NOUVEAU_SETPARAM           0x01 /* deprecated */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) #define DRM_NOUVEAU_CHANNEL_ALLOC      0x02 /* deprecated */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) #define DRM_NOUVEAU_CHANNEL_FREE       0x03 /* deprecated */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) #define DRM_NOUVEAU_GROBJ_ALLOC        0x04 /* deprecated */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC  0x05 /* deprecated */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) #define DRM_NOUVEAU_GPUOBJ_FREE        0x06 /* deprecated */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) #define DRM_NOUVEAU_NVIF               0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) #define DRM_NOUVEAU_SVM_INIT           0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #define DRM_NOUVEAU_SVM_BIND           0x09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) #define DRM_NOUVEAU_GEM_NEW            0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) #define DRM_NOUVEAU_GEM_PUSHBUF        0x41
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) #define DRM_NOUVEAU_GEM_CPU_PREP       0x42
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) #define DRM_NOUVEAU_GEM_CPU_FINI       0x43
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) #define DRM_NOUVEAU_GEM_INFO           0x44
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) struct drm_nouveau_svm_init {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	__u64 unmanaged_addr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	__u64 unmanaged_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) struct drm_nouveau_svm_bind {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	__u64 header;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	__u64 va_start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	__u64 va_end;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	__u64 npages;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	__u64 stride;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	__u64 result;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	__u64 reserved0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	__u64 reserved1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) #define NOUVEAU_SVM_BIND_COMMAND_SHIFT          0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) #define NOUVEAU_SVM_BIND_COMMAND_BITS           8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) #define NOUVEAU_SVM_BIND_COMMAND_MASK           ((1 << 8) - 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) #define NOUVEAU_SVM_BIND_PRIORITY_SHIFT         8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) #define NOUVEAU_SVM_BIND_PRIORITY_BITS          8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) #define NOUVEAU_SVM_BIND_PRIORITY_MASK          ((1 << 8) - 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) #define NOUVEAU_SVM_BIND_TARGET_SHIFT           16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) #define NOUVEAU_SVM_BIND_TARGET_BITS            32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) #define NOUVEAU_SVM_BIND_TARGET_MASK            0xffffffff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)  * Below is use to validate ioctl argument, userspace can also use it to make
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)  * sure that no bit are set beyond known fields for a given kernel version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) #define NOUVEAU_SVM_BIND_VALID_BITS     48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) #define NOUVEAU_SVM_BIND_VALID_MASK     ((1ULL << NOUVEAU_SVM_BIND_VALID_BITS) - 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180)  * NOUVEAU_BIND_COMMAND__MIGRATE: synchronous migrate to target memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)  * result: number of page successfuly migrate to the target memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) #define NOUVEAU_SVM_BIND_COMMAND__MIGRATE               0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186)  * NOUVEAU_SVM_BIND_HEADER_TARGET__GPU_VRAM: target the GPU VRAM memory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) #define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM               (1UL << 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) #define DRM_IOCTL_NOUVEAU_SVM_INIT           DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) #define DRM_IOCTL_NOUVEAU_SVM_BIND           DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) #define DRM_IOCTL_NOUVEAU_GEM_NEW            DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) #define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF        DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) #define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP       DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) #define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI       DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) #define DRM_IOCTL_NOUVEAU_GEM_INFO           DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) #if defined(__cplusplus)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) #endif /* __NOUVEAU_DRM_H__ */