1*d83cc019SAndroid Build Coastguard Worker /* 2*d83cc019SAndroid Build Coastguard Worker * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. 3*d83cc019SAndroid Build Coastguard Worker * Copyright 2001-2003 S3 Graphics, Inc. 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, sub license, 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 13*d83cc019SAndroid Build Coastguard Worker * next paragraph) shall be included in all copies or substantial portions 14*d83cc019SAndroid Build Coastguard Worker * of the 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 NON-INFRINGEMENT. IN NO EVENT SHALL 19*d83cc019SAndroid Build Coastguard Worker * VIA, S3 GRAPHICS, 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 OTHER 22*d83cc019SAndroid Build Coastguard Worker * DEALINGS IN THE SOFTWARE. 23*d83cc019SAndroid Build Coastguard Worker */ 24*d83cc019SAndroid Build Coastguard Worker #ifndef _VIA_DRM_H_ 25*d83cc019SAndroid Build Coastguard Worker #define _VIA_DRM_H_ 26*d83cc019SAndroid Build Coastguard Worker 27*d83cc019SAndroid Build Coastguard Worker #include "drm.h" 28*d83cc019SAndroid Build Coastguard Worker 29*d83cc019SAndroid Build Coastguard Worker #if defined(__cplusplus) 30*d83cc019SAndroid Build Coastguard Worker extern "C" { 31*d83cc019SAndroid Build Coastguard Worker #endif 32*d83cc019SAndroid Build Coastguard Worker 33*d83cc019SAndroid Build Coastguard Worker /* WARNING: These defines must be the same as what the Xserver uses. 34*d83cc019SAndroid Build Coastguard Worker * if you change them, you must change the defines in the Xserver. 35*d83cc019SAndroid Build Coastguard Worker */ 36*d83cc019SAndroid Build Coastguard Worker 37*d83cc019SAndroid Build Coastguard Worker #ifndef _VIA_DEFINES_ 38*d83cc019SAndroid Build Coastguard Worker #define _VIA_DEFINES_ 39*d83cc019SAndroid Build Coastguard Worker 40*d83cc019SAndroid Build Coastguard Worker 41*d83cc019SAndroid Build Coastguard Worker #define VIA_NR_SAREA_CLIPRECTS 8 42*d83cc019SAndroid Build Coastguard Worker #define VIA_NR_XVMC_PORTS 10 43*d83cc019SAndroid Build Coastguard Worker #define VIA_NR_XVMC_LOCKS 5 44*d83cc019SAndroid Build Coastguard Worker #define VIA_MAX_CACHELINE_SIZE 64 45*d83cc019SAndroid Build Coastguard Worker #define XVMCLOCKPTR(saPriv,lockNo) \ 46*d83cc019SAndroid Build Coastguard Worker ((__volatile__ struct drm_hw_lock *)(((((unsigned long) (saPriv)->XvMCLockArea) + \ 47*d83cc019SAndroid Build Coastguard Worker (VIA_MAX_CACHELINE_SIZE - 1)) & \ 48*d83cc019SAndroid Build Coastguard Worker ~(VIA_MAX_CACHELINE_SIZE - 1)) + \ 49*d83cc019SAndroid Build Coastguard Worker VIA_MAX_CACHELINE_SIZE*(lockNo))) 50*d83cc019SAndroid Build Coastguard Worker 51*d83cc019SAndroid Build Coastguard Worker /* Each region is a minimum of 64k, and there are at most 64 of them. 52*d83cc019SAndroid Build Coastguard Worker */ 53*d83cc019SAndroid Build Coastguard Worker #define VIA_NR_TEX_REGIONS 64 54*d83cc019SAndroid Build Coastguard Worker #define VIA_LOG_MIN_TEX_REGION_SIZE 16 55*d83cc019SAndroid Build Coastguard Worker #endif 56*d83cc019SAndroid Build Coastguard Worker 57*d83cc019SAndroid Build Coastguard Worker #define VIA_UPLOAD_TEX0IMAGE 0x1 /* handled clientside */ 58*d83cc019SAndroid Build Coastguard Worker #define VIA_UPLOAD_TEX1IMAGE 0x2 /* handled clientside */ 59*d83cc019SAndroid Build Coastguard Worker #define VIA_UPLOAD_CTX 0x4 60*d83cc019SAndroid Build Coastguard Worker #define VIA_UPLOAD_BUFFERS 0x8 61*d83cc019SAndroid Build Coastguard Worker #define VIA_UPLOAD_TEX0 0x10 62*d83cc019SAndroid Build Coastguard Worker #define VIA_UPLOAD_TEX1 0x20 63*d83cc019SAndroid Build Coastguard Worker #define VIA_UPLOAD_CLIPRECTS 0x40 64*d83cc019SAndroid Build Coastguard Worker #define VIA_UPLOAD_ALL 0xff 65*d83cc019SAndroid Build Coastguard Worker 66*d83cc019SAndroid Build Coastguard Worker /* VIA specific ioctls */ 67*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_ALLOCMEM 0x00 68*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_FREEMEM 0x01 69*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_AGP_INIT 0x02 70*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_FB_INIT 0x03 71*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_MAP_INIT 0x04 72*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_DEC_FUTEX 0x05 73*d83cc019SAndroid Build Coastguard Worker #define NOT_USED 74*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_DMA_INIT 0x07 75*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_CMDBUFFER 0x08 76*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_FLUSH 0x09 77*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_PCICMD 0x0a 78*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_CMDBUF_SIZE 0x0b 79*d83cc019SAndroid Build Coastguard Worker #define NOT_USED 80*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_WAIT_IRQ 0x0d 81*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_DMA_BLIT 0x0e 82*d83cc019SAndroid Build Coastguard Worker #define DRM_VIA_BLIT_SYNC 0x0f 83*d83cc019SAndroid Build Coastguard Worker 84*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_ALLOCMEM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_ALLOCMEM, drm_via_mem_t) 85*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_FREEMEM DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_FREEMEM, drm_via_mem_t) 86*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_AGP_INIT, drm_via_agp_t) 87*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_FB_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_FB_INIT, drm_via_fb_t) 88*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_MAP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_MAP_INIT, drm_via_init_t) 89*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_DEC_FUTEX DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_DEC_FUTEX, drm_via_futex_t) 90*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_DMA_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIA_DMA_INIT, drm_via_dma_init_t) 91*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_CMDBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_CMDBUFFER, drm_via_cmdbuffer_t) 92*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_FLUSH DRM_IO( DRM_COMMAND_BASE + DRM_VIA_FLUSH) 93*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_PCICMD DRM_IOW( DRM_COMMAND_BASE + DRM_VIA_PCICMD, drm_via_cmdbuffer_t) 94*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_CMDBUF_SIZE DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_CMDBUF_SIZE, \ 95*d83cc019SAndroid Build Coastguard Worker drm_via_cmdbuf_size_t) 96*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_WAIT_IRQ DRM_IOWR( DRM_COMMAND_BASE + DRM_VIA_WAIT_IRQ, drm_via_irqwait_t) 97*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_DMA_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_DMA_BLIT, drm_via_dmablit_t) 98*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_VIA_BLIT_SYNC DRM_IOW(DRM_COMMAND_BASE + DRM_VIA_BLIT_SYNC, drm_via_blitsync_t) 99*d83cc019SAndroid Build Coastguard Worker 100*d83cc019SAndroid Build Coastguard Worker /* Indices into buf.Setup where various bits of state are mirrored per 101*d83cc019SAndroid Build Coastguard Worker * context and per buffer. These can be fired at the card as a unit, 102*d83cc019SAndroid Build Coastguard Worker * or in a piecewise fashion as required. 103*d83cc019SAndroid Build Coastguard Worker */ 104*d83cc019SAndroid Build Coastguard Worker 105*d83cc019SAndroid Build Coastguard Worker #define VIA_TEX_SETUP_SIZE 8 106*d83cc019SAndroid Build Coastguard Worker 107*d83cc019SAndroid Build Coastguard Worker /* Flags for clear ioctl 108*d83cc019SAndroid Build Coastguard Worker */ 109*d83cc019SAndroid Build Coastguard Worker #define VIA_FRONT 0x1 110*d83cc019SAndroid Build Coastguard Worker #define VIA_BACK 0x2 111*d83cc019SAndroid Build Coastguard Worker #define VIA_DEPTH 0x4 112*d83cc019SAndroid Build Coastguard Worker #define VIA_STENCIL 0x8 113*d83cc019SAndroid Build Coastguard Worker #define VIA_MEM_VIDEO 0 /* matches drm constant */ 114*d83cc019SAndroid Build Coastguard Worker #define VIA_MEM_AGP 1 /* matches drm constant */ 115*d83cc019SAndroid Build Coastguard Worker #define VIA_MEM_SYSTEM 2 116*d83cc019SAndroid Build Coastguard Worker #define VIA_MEM_MIXED 3 117*d83cc019SAndroid Build Coastguard Worker #define VIA_MEM_UNKNOWN 4 118*d83cc019SAndroid Build Coastguard Worker 119*d83cc019SAndroid Build Coastguard Worker typedef struct { 120*d83cc019SAndroid Build Coastguard Worker __u32 offset; 121*d83cc019SAndroid Build Coastguard Worker __u32 size; 122*d83cc019SAndroid Build Coastguard Worker } drm_via_agp_t; 123*d83cc019SAndroid Build Coastguard Worker 124*d83cc019SAndroid Build Coastguard Worker typedef struct { 125*d83cc019SAndroid Build Coastguard Worker __u32 offset; 126*d83cc019SAndroid Build Coastguard Worker __u32 size; 127*d83cc019SAndroid Build Coastguard Worker } drm_via_fb_t; 128*d83cc019SAndroid Build Coastguard Worker 129*d83cc019SAndroid Build Coastguard Worker typedef struct { 130*d83cc019SAndroid Build Coastguard Worker __u32 context; 131*d83cc019SAndroid Build Coastguard Worker __u32 type; 132*d83cc019SAndroid Build Coastguard Worker __u32 size; 133*d83cc019SAndroid Build Coastguard Worker unsigned long index; 134*d83cc019SAndroid Build Coastguard Worker unsigned long offset; 135*d83cc019SAndroid Build Coastguard Worker } drm_via_mem_t; 136*d83cc019SAndroid Build Coastguard Worker 137*d83cc019SAndroid Build Coastguard Worker typedef struct _drm_via_init { 138*d83cc019SAndroid Build Coastguard Worker enum { 139*d83cc019SAndroid Build Coastguard Worker VIA_INIT_MAP = 0x01, 140*d83cc019SAndroid Build Coastguard Worker VIA_CLEANUP_MAP = 0x02 141*d83cc019SAndroid Build Coastguard Worker } func; 142*d83cc019SAndroid Build Coastguard Worker 143*d83cc019SAndroid Build Coastguard Worker unsigned long sarea_priv_offset; 144*d83cc019SAndroid Build Coastguard Worker unsigned long fb_offset; 145*d83cc019SAndroid Build Coastguard Worker unsigned long mmio_offset; 146*d83cc019SAndroid Build Coastguard Worker unsigned long agpAddr; 147*d83cc019SAndroid Build Coastguard Worker } drm_via_init_t; 148*d83cc019SAndroid Build Coastguard Worker 149*d83cc019SAndroid Build Coastguard Worker typedef struct _drm_via_futex { 150*d83cc019SAndroid Build Coastguard Worker enum { 151*d83cc019SAndroid Build Coastguard Worker VIA_FUTEX_WAIT = 0x00, 152*d83cc019SAndroid Build Coastguard Worker VIA_FUTEX_WAKE = 0X01 153*d83cc019SAndroid Build Coastguard Worker } func; 154*d83cc019SAndroid Build Coastguard Worker __u32 ms; 155*d83cc019SAndroid Build Coastguard Worker __u32 lock; 156*d83cc019SAndroid Build Coastguard Worker __u32 val; 157*d83cc019SAndroid Build Coastguard Worker } drm_via_futex_t; 158*d83cc019SAndroid Build Coastguard Worker 159*d83cc019SAndroid Build Coastguard Worker typedef struct _drm_via_dma_init { 160*d83cc019SAndroid Build Coastguard Worker enum { 161*d83cc019SAndroid Build Coastguard Worker VIA_INIT_DMA = 0x01, 162*d83cc019SAndroid Build Coastguard Worker VIA_CLEANUP_DMA = 0x02, 163*d83cc019SAndroid Build Coastguard Worker VIA_DMA_INITIALIZED = 0x03 164*d83cc019SAndroid Build Coastguard Worker } func; 165*d83cc019SAndroid Build Coastguard Worker 166*d83cc019SAndroid Build Coastguard Worker unsigned long offset; 167*d83cc019SAndroid Build Coastguard Worker unsigned long size; 168*d83cc019SAndroid Build Coastguard Worker unsigned long reg_pause_addr; 169*d83cc019SAndroid Build Coastguard Worker } drm_via_dma_init_t; 170*d83cc019SAndroid Build Coastguard Worker 171*d83cc019SAndroid Build Coastguard Worker typedef struct _drm_via_cmdbuffer { 172*d83cc019SAndroid Build Coastguard Worker char *buf; 173*d83cc019SAndroid Build Coastguard Worker unsigned long size; 174*d83cc019SAndroid Build Coastguard Worker } drm_via_cmdbuffer_t; 175*d83cc019SAndroid Build Coastguard Worker 176*d83cc019SAndroid Build Coastguard Worker /* Warning: If you change the SAREA structure you must change the Xserver 177*d83cc019SAndroid Build Coastguard Worker * structure as well */ 178*d83cc019SAndroid Build Coastguard Worker 179*d83cc019SAndroid Build Coastguard Worker typedef struct _drm_via_tex_region { 180*d83cc019SAndroid Build Coastguard Worker unsigned char next, prev; /* indices to form a circular LRU */ 181*d83cc019SAndroid Build Coastguard Worker unsigned char inUse; /* owned by a client, or free? */ 182*d83cc019SAndroid Build Coastguard Worker int age; /* tracked by clients to update local LRU's */ 183*d83cc019SAndroid Build Coastguard Worker } drm_via_tex_region_t; 184*d83cc019SAndroid Build Coastguard Worker 185*d83cc019SAndroid Build Coastguard Worker typedef struct _drm_via_sarea { 186*d83cc019SAndroid Build Coastguard Worker unsigned int dirty; 187*d83cc019SAndroid Build Coastguard Worker unsigned int nbox; 188*d83cc019SAndroid Build Coastguard Worker struct drm_clip_rect boxes[VIA_NR_SAREA_CLIPRECTS]; 189*d83cc019SAndroid Build Coastguard Worker drm_via_tex_region_t texList[VIA_NR_TEX_REGIONS + 1]; 190*d83cc019SAndroid Build Coastguard Worker int texAge; /* last time texture was uploaded */ 191*d83cc019SAndroid Build Coastguard Worker int ctxOwner; /* last context to upload state */ 192*d83cc019SAndroid Build Coastguard Worker int vertexPrim; 193*d83cc019SAndroid Build Coastguard Worker 194*d83cc019SAndroid Build Coastguard Worker /* 195*d83cc019SAndroid Build Coastguard Worker * Below is for XvMC. 196*d83cc019SAndroid Build Coastguard Worker * We want the lock integers alone on, and aligned to, a cache line. 197*d83cc019SAndroid Build Coastguard Worker * Therefore this somewhat strange construct. 198*d83cc019SAndroid Build Coastguard Worker */ 199*d83cc019SAndroid Build Coastguard Worker 200*d83cc019SAndroid Build Coastguard Worker char XvMCLockArea[VIA_MAX_CACHELINE_SIZE * (VIA_NR_XVMC_LOCKS + 1)]; 201*d83cc019SAndroid Build Coastguard Worker 202*d83cc019SAndroid Build Coastguard Worker unsigned int XvMCDisplaying[VIA_NR_XVMC_PORTS]; 203*d83cc019SAndroid Build Coastguard Worker unsigned int XvMCSubPicOn[VIA_NR_XVMC_PORTS]; 204*d83cc019SAndroid Build Coastguard Worker unsigned int XvMCCtxNoGrabbed; /* Last context to hold decoder */ 205*d83cc019SAndroid Build Coastguard Worker 206*d83cc019SAndroid Build Coastguard Worker /* Used by the 3d driver only at this point, for pageflipping: 207*d83cc019SAndroid Build Coastguard Worker */ 208*d83cc019SAndroid Build Coastguard Worker unsigned int pfCurrentOffset; 209*d83cc019SAndroid Build Coastguard Worker } drm_via_sarea_t; 210*d83cc019SAndroid Build Coastguard Worker 211*d83cc019SAndroid Build Coastguard Worker typedef struct _drm_via_cmdbuf_size { 212*d83cc019SAndroid Build Coastguard Worker enum { 213*d83cc019SAndroid Build Coastguard Worker VIA_CMDBUF_SPACE = 0x01, 214*d83cc019SAndroid Build Coastguard Worker VIA_CMDBUF_LAG = 0x02 215*d83cc019SAndroid Build Coastguard Worker } func; 216*d83cc019SAndroid Build Coastguard Worker int wait; 217*d83cc019SAndroid Build Coastguard Worker __u32 size; 218*d83cc019SAndroid Build Coastguard Worker } drm_via_cmdbuf_size_t; 219*d83cc019SAndroid Build Coastguard Worker 220*d83cc019SAndroid Build Coastguard Worker typedef enum { 221*d83cc019SAndroid Build Coastguard Worker VIA_IRQ_ABSOLUTE = 0x0, 222*d83cc019SAndroid Build Coastguard Worker VIA_IRQ_RELATIVE = 0x1, 223*d83cc019SAndroid Build Coastguard Worker VIA_IRQ_SIGNAL = 0x10000000, 224*d83cc019SAndroid Build Coastguard Worker VIA_IRQ_FORCE_SEQUENCE = 0x20000000 225*d83cc019SAndroid Build Coastguard Worker } via_irq_seq_type_t; 226*d83cc019SAndroid Build Coastguard Worker 227*d83cc019SAndroid Build Coastguard Worker #define VIA_IRQ_FLAGS_MASK 0xF0000000 228*d83cc019SAndroid Build Coastguard Worker 229*d83cc019SAndroid Build Coastguard Worker enum drm_via_irqs { 230*d83cc019SAndroid Build Coastguard Worker drm_via_irq_hqv0 = 0, 231*d83cc019SAndroid Build Coastguard Worker drm_via_irq_hqv1, 232*d83cc019SAndroid Build Coastguard Worker drm_via_irq_dma0_dd, 233*d83cc019SAndroid Build Coastguard Worker drm_via_irq_dma0_td, 234*d83cc019SAndroid Build Coastguard Worker drm_via_irq_dma1_dd, 235*d83cc019SAndroid Build Coastguard Worker drm_via_irq_dma1_td, 236*d83cc019SAndroid Build Coastguard Worker drm_via_irq_num 237*d83cc019SAndroid Build Coastguard Worker }; 238*d83cc019SAndroid Build Coastguard Worker 239*d83cc019SAndroid Build Coastguard Worker struct drm_via_wait_irq_request { 240*d83cc019SAndroid Build Coastguard Worker unsigned irq; 241*d83cc019SAndroid Build Coastguard Worker via_irq_seq_type_t type; 242*d83cc019SAndroid Build Coastguard Worker __u32 sequence; 243*d83cc019SAndroid Build Coastguard Worker __u32 signal; 244*d83cc019SAndroid Build Coastguard Worker }; 245*d83cc019SAndroid Build Coastguard Worker 246*d83cc019SAndroid Build Coastguard Worker typedef union drm_via_irqwait { 247*d83cc019SAndroid Build Coastguard Worker struct drm_via_wait_irq_request request; 248*d83cc019SAndroid Build Coastguard Worker struct drm_wait_vblank_reply reply; 249*d83cc019SAndroid Build Coastguard Worker } drm_via_irqwait_t; 250*d83cc019SAndroid Build Coastguard Worker 251*d83cc019SAndroid Build Coastguard Worker typedef struct drm_via_blitsync { 252*d83cc019SAndroid Build Coastguard Worker __u32 sync_handle; 253*d83cc019SAndroid Build Coastguard Worker unsigned engine; 254*d83cc019SAndroid Build Coastguard Worker } drm_via_blitsync_t; 255*d83cc019SAndroid Build Coastguard Worker 256*d83cc019SAndroid Build Coastguard Worker /* - * Below,"flags" is currently unused but will be used for possible future 257*d83cc019SAndroid Build Coastguard Worker * extensions like kernel space bounce buffers for bad alignments and 258*d83cc019SAndroid Build Coastguard Worker * blit engine busy-wait polling for better latency in the absence of 259*d83cc019SAndroid Build Coastguard Worker * interrupts. 260*d83cc019SAndroid Build Coastguard Worker */ 261*d83cc019SAndroid Build Coastguard Worker 262*d83cc019SAndroid Build Coastguard Worker typedef struct drm_via_dmablit { 263*d83cc019SAndroid Build Coastguard Worker __u32 num_lines; 264*d83cc019SAndroid Build Coastguard Worker __u32 line_length; 265*d83cc019SAndroid Build Coastguard Worker 266*d83cc019SAndroid Build Coastguard Worker __u32 fb_addr; 267*d83cc019SAndroid Build Coastguard Worker __u32 fb_stride; 268*d83cc019SAndroid Build Coastguard Worker 269*d83cc019SAndroid Build Coastguard Worker unsigned char *mem_addr; 270*d83cc019SAndroid Build Coastguard Worker __u32 mem_stride; 271*d83cc019SAndroid Build Coastguard Worker 272*d83cc019SAndroid Build Coastguard Worker __u32 flags; 273*d83cc019SAndroid Build Coastguard Worker int to_fb; 274*d83cc019SAndroid Build Coastguard Worker 275*d83cc019SAndroid Build Coastguard Worker drm_via_blitsync_t sync; 276*d83cc019SAndroid Build Coastguard Worker } drm_via_dmablit_t; 277*d83cc019SAndroid Build Coastguard Worker 278*d83cc019SAndroid Build Coastguard Worker #if defined(__cplusplus) 279*d83cc019SAndroid Build Coastguard Worker } 280*d83cc019SAndroid Build Coastguard Worker #endif 281*d83cc019SAndroid Build Coastguard Worker 282*d83cc019SAndroid Build Coastguard Worker #endif /* _VIA_DRM_H_ */ 283