16b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* mach64_drm.h -- Public header for the mach64 driver -*- linux-c -*- 26b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Created: Thu Nov 30 20:04:32 2000 by gareth@valinux.com 36b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 46b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* 56b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Copyright 2000 Gareth Hughes 66b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Copyright 2002 Frank C. Earl 76b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Copyright 2002-2003 Leif Delgass 86b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * All Rights Reserved. 96b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * 106b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Permission is hereby granted, free of charge, to any person obtaining a 116b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * copy of this software and associated documentation files (the "Software"), 126b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * to deal in the Software without restriction, including without limitation 136b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * the rights to use, copy, modify, merge, publish, distribute, sublicense, 146b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * and/or sell copies of the Software, and to permit persons to whom the 156b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Software is furnished to do so, subject to the following conditions: 166b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * 176b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * The above copyright notice and this permission notice (including the next 186b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * paragraph) shall be included in all copies or substantial portions of the 196b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Software. 206b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * 216b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 226b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 236b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 246b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * THE COPYRIGHT OWNER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 256b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 266b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 276b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * 286b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Authors: 296b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Gareth Hughes <gareth@valinux.com> 306b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Frank C. Earl <fearl@airmail.net> 316b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * Leif Delgass <ldelgass@retinalburn.net> 326b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 336b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 346b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#ifndef __MACH64_DRM_H__ 356b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define __MACH64_DRM_H__ 366b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 376b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* WARNING: If you change any of these defines, make sure to change the 386b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * defines in the Xserver file (mach64_sarea.h) 396b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 406b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#ifndef __MACH64_SAREA_DEFINES__ 416b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define __MACH64_SAREA_DEFINES__ 426b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 436b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* What needs to be changed for the current vertex buffer? 446b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * GH: We're going to be pedantic about this. We want the card to do as 456b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * little as possible, so let's avoid having it fetch a whole bunch of 466b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * register values that don't change all that often, if at all. 476b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 486b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_DST_OFF_PITCH 0x0001 496b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_Z_OFF_PITCH 0x0002 506b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_Z_ALPHA_CNTL 0x0004 516b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_SCALE_3D_CNTL 0x0008 526b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_DP_FOG_CLR 0x0010 536b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_DP_WRITE_MASK 0x0020 546b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_DP_PIX_WIDTH 0x0040 556b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_SETUP_CNTL 0x0080 566b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_MISC 0x0100 576b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_TEXTURE 0x0200 586b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_TEX0IMAGE 0x0400 596b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_TEX1IMAGE 0x0800 606b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_CLIPRECTS 0x1000 /* handled client-side */ 616b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_CONTEXT 0x00ff 626b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_UPLOAD_ALL 0x1fff 636b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 646b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* DMA buffer size 656b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 666b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_BUFFER_SIZE 16384 676b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 686b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* Max number of swaps allowed on the ring 696b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * before the client must wait 706b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 716b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_MAX_QUEUED_FRAMES 3U 726b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 736b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* Byte offsets for host blit buffer data 746b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 756b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_HOSTDATA_BLIT_OFFSET 104 766b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 776b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* Keep these small for testing. 786b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 796b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_NR_SAREA_CLIPRECTS 8 806b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 816b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_CARD_HEAP 0 826b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_AGP_HEAP 1 836b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_NR_TEX_HEAPS 2 846b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_NR_TEX_REGIONS 64 856b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_LOG_TEX_GRANULARITY 16 866b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 876b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_TEX_MAXLEVELS 1 886b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 896b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_NR_CONTEXT_REGS 15 906b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_NR_TEXTURE_REGS 4 916b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 926b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#endif /* __MACH64_SAREA_DEFINES__ */ 936b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 946b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsbergtypedef struct { 956b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int dst_off_pitch; 966b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 976b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int z_off_pitch; 986b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int z_cntl; 996b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int alpha_tst_cntl; 1006b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1016b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int scale_3d_cntl; 1026b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1036b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int sc_left_right; 1046b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int sc_top_bottom; 1056b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1066b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int dp_fog_clr; 1076b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int dp_write_mask; 1086b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int dp_pix_width; 1096b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int dp_mix; 1106b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int dp_src; 1116b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1126b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int clr_cmp_cntl; 1136b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int gui_traj_cntl; 1146b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1156b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int setup_cntl; 1166b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1176b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int tex_size_pitch; 1186b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int tex_cntl; 1196b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int secondary_tex_off; 1206b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int tex_offset; 1216b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg} drm_mach64_context_regs_t; 1226b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1236b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsbergtypedef struct drm_mach64_sarea { 1246b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg /* The channel for communication of state information to the kernel 1256b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * on firing a vertex dma buffer. 1266b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 1276b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg drm_mach64_context_regs_t context_state; 1286b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int dirty; 1296b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int vertsize; 1306b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1316b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg /* The current cliprects, or a subset thereof. 1326b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 1336b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg struct drm_clip_rect boxes[MACH64_NR_SAREA_CLIPRECTS]; 1346b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int nbox; 1356b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1366b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg /* Counters for client-side throttling of rendering clients. 1376b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 1386b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int frames_queued; 1396b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1406b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg /* Texture memory LRU. 1416b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 1426b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg struct drm_tex_region tex_list[MACH64_NR_TEX_HEAPS][MACH64_NR_TEX_REGIONS + 1436b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1]; 1446b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int tex_age[MACH64_NR_TEX_HEAPS]; 1456b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg int ctx_owner; 1466b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg} drm_mach64_sarea_t; 1476b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1486b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* WARNING: If you change any of these defines, make sure to change the 1496b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * defines in the Xserver file (mach64_common.h) 1506b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 1516b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1526b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* Mach64 specific ioctls 1536b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg * The device specific ioctl range is 0x40 to 0x79. 1546b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 1556b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1566b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_MACH64_INIT 0x00 1576b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_MACH64_IDLE 0x01 1586b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_MACH64_RESET 0x02 1596b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_MACH64_SWAP 0x03 1606b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_MACH64_CLEAR 0x04 1616b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_MACH64_VERTEX 0x05 1626b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_MACH64_BLIT 0x06 1636b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_MACH64_FLUSH 0x07 1646b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_MACH64_GETPARAM 0x08 1656b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1666b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_IOCTL_MACH64_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_MACH64_INIT, drm_mach64_init_t) 1676b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_IOCTL_MACH64_IDLE DRM_IO( DRM_COMMAND_BASE + DRM_MACH64_IDLE ) 1686b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_IOCTL_MACH64_RESET DRM_IO( DRM_COMMAND_BASE + DRM_MACH64_RESET ) 1696b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_IOCTL_MACH64_SWAP DRM_IO( DRM_COMMAND_BASE + DRM_MACH64_SWAP ) 1706b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_IOCTL_MACH64_CLEAR DRM_IOW( DRM_COMMAND_BASE + DRM_MACH64_CLEAR, drm_mach64_clear_t) 1716b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_IOCTL_MACH64_VERTEX DRM_IOW( DRM_COMMAND_BASE + DRM_MACH64_VERTEX, drm_mach64_vertex_t) 1726b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_IOCTL_MACH64_BLIT DRM_IOW( DRM_COMMAND_BASE + DRM_MACH64_BLIT, drm_mach64_blit_t) 1736b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_IOCTL_MACH64_FLUSH DRM_IO( DRM_COMMAND_BASE + DRM_MACH64_FLUSH ) 1746b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define DRM_IOCTL_MACH64_GETPARAM DRM_IOWR( DRM_COMMAND_BASE + DRM_MACH64_GETPARAM, drm_mach64_getparam_t) 1756b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1766b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* Buffer flags for clears 1776b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 1786b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_FRONT 0x1 1796b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_BACK 0x2 1806b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_DEPTH 0x4 1816b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1826b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg/* Primitive types for vertex buffers 1836b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg */ 1846b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_POINTS 0x00000000 1856b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_LINES 0x00000001 1866b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_LINE_LOOP 0x00000002 1876b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_LINE_STRIP 0x00000003 1886b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_TRIANGLES 0x00000004 1896b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_TRIANGLE_STRIP 0x00000005 1906b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_TRIANGLE_FAN 0x00000006 1916b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_QUADS 0x00000007 1926b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_QUAD_STRIP 0x00000008 1936b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#define MACH64_PRIM_POLYGON 0x00000009 1946b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 1956b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsbergtypedef enum _drm_mach64_dma_mode_t { 1966b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg MACH64_MODE_DMA_ASYNC, 1976b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg MACH64_MODE_DMA_SYNC, 1986b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg MACH64_MODE_MMIO 1996b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg} drm_mach64_dma_mode_t; 2006b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2016b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsbergtypedef struct drm_mach64_init { 2026b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg enum { 2036b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg DRM_MACH64_INIT_DMA = 0x01, 2046b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg DRM_MACH64_CLEANUP_DMA = 0x02 2056b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg } func; 2066b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2076b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned long sarea_priv_offset; 2086b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg int is_pci; 2096b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg drm_mach64_dma_mode_t dma_mode; 2106b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2116b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int fb_bpp; 2126b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int front_offset, front_pitch; 2136b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int back_offset, back_pitch; 2146b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2156b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int depth_bpp; 2166b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int depth_offset, depth_pitch; 2176b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2186b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned long fb_offset; 2196b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned long mmio_offset; 2206b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned long ring_offset; 2216b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned long buffers_offset; 2226b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned long agp_textures_offset; 2236b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg} drm_mach64_init_t; 2246b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2256b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsbergtypedef struct drm_mach64_clear { 2266b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int flags; 2276b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg int x, y, w, h; 2286b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int clear_color; 2296b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned int clear_depth; 2306b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg} drm_mach64_clear_t; 2316b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2326b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsbergtypedef struct drm_mach64_vertex { 2336b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg int prim; 2346b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg void *buf; /* Address of vertex buffer */ 2356b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned long used; /* Number of bytes in buffer */ 2366b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg int discard; /* Client finished with buffer? */ 2376b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg} drm_mach64_vertex_t; 2386b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2396b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsbergtypedef struct drm_mach64_blit { 2406b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg void *buf; 2416b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg int pitch; 2426b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg int offset; 2436b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg int format; 2446b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned short x, y; 2456b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg unsigned short width, height; 2466b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg} drm_mach64_blit_t; 2476b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2486b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsbergtypedef struct drm_mach64_getparam { 2496b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg enum { 2506b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg MACH64_PARAM_FRAMES_QUEUED = 0x01, 2516b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg MACH64_PARAM_IRQ_NR = 0x02 2526b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg } param; 2536b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg void *value; 2546b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg} drm_mach64_getparam_t; 2556b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg 2566b3cbe7655ee7746c4418e1fb8af136774420dbdKristian Høgsberg#endif 257