1*d83cc019SAndroid Build Coastguard Worker /* 2*d83cc019SAndroid Build Coastguard Worker * Copyright 2005 Stephane Marchesin. 3*d83cc019SAndroid Build Coastguard Worker * All Rights Reserved. 4*d83cc019SAndroid Build Coastguard Worker * 5*d83cc019SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 6*d83cc019SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 7*d83cc019SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 8*d83cc019SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9*d83cc019SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 10*d83cc019SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 11*d83cc019SAndroid Build Coastguard Worker * 12*d83cc019SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 13*d83cc019SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 14*d83cc019SAndroid Build Coastguard Worker * Software. 15*d83cc019SAndroid Build Coastguard Worker * 16*d83cc019SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17*d83cc019SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18*d83cc019SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19*d83cc019SAndroid Build Coastguard Worker * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20*d83cc019SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21*d83cc019SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22*d83cc019SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE. 23*d83cc019SAndroid Build Coastguard Worker */ 24*d83cc019SAndroid Build Coastguard Worker 25*d83cc019SAndroid Build Coastguard Worker #ifndef __NOUVEAU_DRM_H__ 26*d83cc019SAndroid Build Coastguard Worker #define __NOUVEAU_DRM_H__ 27*d83cc019SAndroid Build Coastguard Worker 28*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_EVENT_NVIF 0x80000000 29*d83cc019SAndroid Build Coastguard Worker 30*d83cc019SAndroid Build Coastguard Worker #include "drm.h" 31*d83cc019SAndroid Build Coastguard Worker 32*d83cc019SAndroid Build Coastguard Worker #if defined(__cplusplus) 33*d83cc019SAndroid Build Coastguard Worker extern "C" { 34*d83cc019SAndroid Build Coastguard Worker #endif 35*d83cc019SAndroid Build Coastguard Worker 36*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_DOMAIN_CPU (1 << 0) 37*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1) 38*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_DOMAIN_GART (1 << 2) 39*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_DOMAIN_MAPPABLE (1 << 3) 40*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_DOMAIN_COHERENT (1 << 4) 41*d83cc019SAndroid Build Coastguard Worker 42*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_TILE_COMP 0x00030000 /* nv50-only */ 43*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00 44*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_TILE_16BPP 0x00000001 45*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_TILE_32BPP 0x00000002 46*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_TILE_ZETA 0x00000004 47*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_TILE_NONCONTIG 0x00000008 48*d83cc019SAndroid Build Coastguard Worker 49*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_info { 50*d83cc019SAndroid Build Coastguard Worker __u32 handle; 51*d83cc019SAndroid Build Coastguard Worker __u32 domain; 52*d83cc019SAndroid Build Coastguard Worker __u64 size; 53*d83cc019SAndroid Build Coastguard Worker __u64 offset; 54*d83cc019SAndroid Build Coastguard Worker __u64 map_handle; 55*d83cc019SAndroid Build Coastguard Worker __u32 tile_mode; 56*d83cc019SAndroid Build Coastguard Worker __u32 tile_flags; 57*d83cc019SAndroid Build Coastguard Worker }; 58*d83cc019SAndroid Build Coastguard Worker 59*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_new { 60*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_info info; 61*d83cc019SAndroid Build Coastguard Worker __u32 channel_hint; 62*d83cc019SAndroid Build Coastguard Worker __u32 align; 63*d83cc019SAndroid Build Coastguard Worker }; 64*d83cc019SAndroid Build Coastguard Worker 65*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_MAX_BUFFERS 1024 66*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_pushbuf_bo_presumed { 67*d83cc019SAndroid Build Coastguard Worker __u32 valid; 68*d83cc019SAndroid Build Coastguard Worker __u32 domain; 69*d83cc019SAndroid Build Coastguard Worker __u64 offset; 70*d83cc019SAndroid Build Coastguard Worker }; 71*d83cc019SAndroid Build Coastguard Worker 72*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_pushbuf_bo { 73*d83cc019SAndroid Build Coastguard Worker __u64 user_priv; 74*d83cc019SAndroid Build Coastguard Worker __u32 handle; 75*d83cc019SAndroid Build Coastguard Worker __u32 read_domains; 76*d83cc019SAndroid Build Coastguard Worker __u32 write_domains; 77*d83cc019SAndroid Build Coastguard Worker __u32 valid_domains; 78*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_pushbuf_bo_presumed presumed; 79*d83cc019SAndroid Build Coastguard Worker }; 80*d83cc019SAndroid Build Coastguard Worker 81*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_RELOC_LOW (1 << 0) 82*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_RELOC_HIGH (1 << 1) 83*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_RELOC_OR (1 << 2) 84*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_MAX_RELOCS 1024 85*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_pushbuf_reloc { 86*d83cc019SAndroid Build Coastguard Worker __u32 reloc_bo_index; 87*d83cc019SAndroid Build Coastguard Worker __u32 reloc_bo_offset; 88*d83cc019SAndroid Build Coastguard Worker __u32 bo_index; 89*d83cc019SAndroid Build Coastguard Worker __u32 flags; 90*d83cc019SAndroid Build Coastguard Worker __u32 data; 91*d83cc019SAndroid Build Coastguard Worker __u32 vor; 92*d83cc019SAndroid Build Coastguard Worker __u32 tor; 93*d83cc019SAndroid Build Coastguard Worker }; 94*d83cc019SAndroid Build Coastguard Worker 95*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_MAX_PUSH 512 96*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_pushbuf_push { 97*d83cc019SAndroid Build Coastguard Worker __u32 bo_index; 98*d83cc019SAndroid Build Coastguard Worker __u32 pad; 99*d83cc019SAndroid Build Coastguard Worker __u64 offset; 100*d83cc019SAndroid Build Coastguard Worker __u64 length; 101*d83cc019SAndroid Build Coastguard Worker }; 102*d83cc019SAndroid Build Coastguard Worker 103*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_pushbuf { 104*d83cc019SAndroid Build Coastguard Worker __u32 channel; 105*d83cc019SAndroid Build Coastguard Worker __u32 nr_buffers; 106*d83cc019SAndroid Build Coastguard Worker __u64 buffers; 107*d83cc019SAndroid Build Coastguard Worker __u32 nr_relocs; 108*d83cc019SAndroid Build Coastguard Worker __u32 nr_push; 109*d83cc019SAndroid Build Coastguard Worker __u64 relocs; 110*d83cc019SAndroid Build Coastguard Worker __u64 push; 111*d83cc019SAndroid Build Coastguard Worker __u32 suffix0; 112*d83cc019SAndroid Build Coastguard Worker __u32 suffix1; 113*d83cc019SAndroid Build Coastguard Worker __u64 vram_available; 114*d83cc019SAndroid Build Coastguard Worker __u64 gart_available; 115*d83cc019SAndroid Build Coastguard Worker }; 116*d83cc019SAndroid Build Coastguard Worker 117*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_CPU_PREP_NOWAIT 0x00000001 118*d83cc019SAndroid Build Coastguard Worker #define NOUVEAU_GEM_CPU_PREP_WRITE 0x00000004 119*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_cpu_prep { 120*d83cc019SAndroid Build Coastguard Worker __u32 handle; 121*d83cc019SAndroid Build Coastguard Worker __u32 flags; 122*d83cc019SAndroid Build Coastguard Worker }; 123*d83cc019SAndroid Build Coastguard Worker 124*d83cc019SAndroid Build Coastguard Worker struct drm_nouveau_gem_cpu_fini { 125*d83cc019SAndroid Build Coastguard Worker __u32 handle; 126*d83cc019SAndroid Build Coastguard Worker }; 127*d83cc019SAndroid Build Coastguard Worker 128*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_GETPARAM 0x00 /* deprecated */ 129*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_SETPARAM 0x01 /* deprecated */ 130*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 /* deprecated */ 131*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_CHANNEL_FREE 0x03 /* deprecated */ 132*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_GROBJ_ALLOC 0x04 /* deprecated */ 133*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05 /* deprecated */ 134*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_GPUOBJ_FREE 0x06 /* deprecated */ 135*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_NVIF 0x07 136*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_GEM_NEW 0x40 137*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_GEM_PUSHBUF 0x41 138*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_GEM_CPU_PREP 0x42 139*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_GEM_CPU_FINI 0x43 140*d83cc019SAndroid Build Coastguard Worker #define DRM_NOUVEAU_GEM_INFO 0x44 141*d83cc019SAndroid Build Coastguard Worker 142*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_NOUVEAU_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new) 143*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf) 144*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep) 145*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini) 146*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info) 147*d83cc019SAndroid Build Coastguard Worker 148*d83cc019SAndroid Build Coastguard Worker #if defined(__cplusplus) 149*d83cc019SAndroid Build Coastguard Worker } 150*d83cc019SAndroid Build Coastguard Worker #endif 151*d83cc019SAndroid Build Coastguard Worker 152*d83cc019SAndroid Build Coastguard Worker #endif /* __NOUVEAU_DRM_H__ */ 153