3dfx.h

来自「君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图」· C头文件 代码 · 共 374 行

H
374
字号
/*  *    3dfx.h * *  changed by zsteva Aug/Sep 2001, see vo_3dfx.c * *	Copyright (C) Colin Cross Apr 2000 *	 *  mpeg2dec is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2, or (at your option) *  any later version. *    *  mpeg2dec is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. *    *  You should have received a copy of the GNU General Public License along *  with mpeg2dec; if not, write to the Free Software Foundation, Inc., *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */#define VOODOO_IO_REG_OFFSET     ((unsigned long int)0x0000000)#define VOODOO_YUV_REG_OFFSET    ((unsigned long int)0x0080100)#define VOODOO_AGP_REG_OFFSET    ((unsigned long int)0x0080000)#define VOODOO_2D_REG_OFFSET     ((unsigned long int)0x0100000)#define VOODOO_YUV_PLANE_OFFSET  ((unsigned long int)0x0C00000)#define VOODOO_BLT_FORMAT_YUYV   (8<<16)#define VOODOO_BLT_FORMAT_UYVY	 (9<<16)#define VOODOO_BLT_FORMAT_16     (3<<16)#define VOODOO_BLT_FORMAT_24	 (4<<16)#define VOODOO_BLT_FORMAT_32	 (5<<16)#define VOODOO_YUV_STRIDE        (1024>>2)struct voodoo_yuv_fb_t {  uint32_t Y[0x0040000];  uint32_t U[0x0040000];  uint32_t V[0x0040000];};struct voodoo_yuv_reg_t {  uint32_t yuvBaseAddr;  uint32_t yuvStride;};struct voodoo_2d_reg_t {  uint32_t status;  uint32_t intCtrl;  uint32_t clip0Min;  uint32_t clip0Max;  uint32_t dstBaseAddr;  uint32_t dstFormat;  uint32_t srcColorkeyMin;  uint32_t srcColorkeyMax;  uint32_t dstColorkeyMin;  uint32_t dstColorkeyMax;  signed long bresError0;  signed long bresError1;  uint32_t rop;  uint32_t srcBaseAddr;  uint32_t commandExtra;  uint32_t lineStipple;  uint32_t lineStyle;  uint32_t pattern0Alias;  uint32_t pattern1Alias;;  uint32_t clip1Min;  uint32_t clip1Max;  uint32_t srcFormat;  uint32_t srcSize;  uint32_t srcXY;  uint32_t colorBack;  uint32_t colorFore;  uint32_t dstSize;  uint32_t dstXY;  uint32_t command;  uint32_t RESERVED1;  uint32_t RESERVED2;  uint32_t RESERVED3;  uint8_t  launchArea[128];};struct voodoo_io_reg_t {  uint32_t status;  uint32_t pciInit0;  uint32_t sipMonitor;  uint32_t lfbMemoryConfig;  uint32_t miscInit0;  uint32_t miscInit1;  uint32_t dramInit0;  uint32_t dramInit1;  uint32_t agpInit;  uint32_t tmuGbeInit;  uint32_t vgaInit0;  uint32_t vgaInit1;  uint32_t dramCommand;  uint32_t dramData;  uint32_t RESERVED1;  uint32_t RESERVED2;  uint32_t pllCtrl0;  uint32_t pllCtrl1;  uint32_t pllCtrl2;  uint32_t dacMode;  uint32_t dacAddr;  uint32_t dacData;  uint32_t rgbMaxDelta;  uint32_t vidProcCfg;  uint32_t hwCurPatAddr;  uint32_t hwCurLoc;  uint32_t hwCurC0;  uint32_t hwCurC1;  uint32_t vidInFormat;  uint32_t vidInStatus;  uint32_t vidSerialParallelPort;  uint32_t vidInXDecimDeltas;  uint32_t vidInDecimInitErrs;  uint32_t vidInYDecimDeltas;  uint32_t vidPixelBufThold;  uint32_t vidChromaMin;  uint32_t vidChromaMax;  uint32_t vidCurrentLine;  uint32_t vidScreenSize;  uint32_t vidOverlayStartCoords;  uint32_t vidOverlayEndScreenCoord;  uint32_t vidOverlayDudx;  uint32_t vidOverlayDudxOffsetSrcWidth;  uint32_t vidOverlayDvdy;  uint32_t vga_registers_not_mem_mapped[12];  uint32_t vidOverlayDvdyOffset;  uint32_t vidDesktopStartAddr;  uint32_t vidDesktopOverlayStride;  uint32_t vidInAddr0;  uint32_t vidInAddr1;  uint32_t vidInAddr2;  uint32_t vidInStride;  uint32_t vidCurrOverlayStartAddr;};struct pioData_t {  short port;  short size;  int device;  void *value;};typedef struct pioData_t pioData;typedef struct voodoo_2d_reg_t voodoo_2d_reg;typedef struct voodoo_io_reg_t voodoo_io_reg;typedef struct voodoo_yuv_reg_t voodoo_yuv_reg;typedef struct voodoo_yuv_fb_t voodoo_yuv_fb;/* from linux/driver/video/tdfxfb.c, definition for 3dfx registers. * * author: Hannu Mallat <hmallat@cc.hut.fi> */#ifndef PCI_DEVICE_ID_3DFX_VOODOO5#define PCI_DEVICE_ID_3DFX_VOODOO5	0x0009#endif/* membase0 register offsets */#define STATUS				0x00#define PCIINIT0			0x04#define SIPMONITOR			0x08#define LFBMEMORYCONFIG		0x0c#define MISCINIT0			0x10#define MISCINIT1			0x14#define DRAMINIT0			0x18#define DRAMINIT1			0x1c#define AGPINIT				0x20#define TMUGBEINIT			0x24#define VGAINIT0			0x28#define VGAINIT1			0x2c#define DRAMCOMMAND			0x30#define DRAMDATA			0x34/* reserved             	0x38 *//* reserved             	0x3c */#define PLLCTRL0			0x40#define PLLCTRL1			0x44#define PLLCTRL2			0x48#define DACMODE				0x4c#define DACADDR				0x50#define DACDATA				0x54#define RGBMAXDELTA			0x58#define VIDPROCCFG			0x5c#define HWCURPATADDR		0x60#define HWCURLOC			0x64#define HWCURC0				0x68#define HWCURC1				0x6c#define VIDINFORMAT			0x70#define VIDINSTATUS			0x74#define VIDSERPARPORT		0x78#define VIDINXDELTA			0x7c#define VIDININITERR		0x80#define VIDINYDELTA			0x84#define VIDPIXBUFTHOLD		0x88#define VIDCHRMIN			0x8c#define VIDCHRMAX			0x90#define VIDCURLIN			0x94#define VIDSCREENSIZE		0x98#define VIDOVRSTARTCRD		0x9c#define VIDOVRENDCRD		0xa0#define VIDOVRDUDX			0xa4#define VIDOVRDUDXOFF		0xa8#define VIDOVRDVDY			0xac/*  ... */#define VIDOVRDVDYOFF		0xe0#define VIDDESKSTART		0xe4#define VIDDESKSTRIDE		0xe8#define VIDINADDR0			0xec#define VIDINADDR1			0xf0#define VIDINADDR2			0xf4#define VIDINSTRIDE			0xf8#define VIDCUROVRSTART		0xfc#define INTCTRL			(0x00100000 + 0x04)#define CLIP0MIN		(0x00100000 + 0x08)#define CLIP0MAX		(0x00100000 + 0x0c)#define DSTBASE			(0x00100000 + 0x10)#define DSTFORMAT		(0x00100000 + 0x14)#define SRCCOLORKEYMIN		(0x00100000 + 0x18)#define SRCCOLORKEYMAX		(0x00100000 + 0x1c)#define DSTCOLORKEYMIN		(0x00100000 + 0x20)#define DSTCOLORKEYMAX		(0x00100000 + 0x24)#define ROP123			(0x00100000 + 0x30)#define SRCBASE			(0x00100000 + 0x34)#define COMMANDEXTRA_2D	(0x00100000 + 0x38)#define CLIP1MIN		(0x00100000 + 0x4c)#define CLIP1MAX		(0x00100000 + 0x50)#define SRCFORMAT		(0x00100000 + 0x54)#define SRCSIZE			(0x00100000 + 0x58)#define SRCXY			(0x00100000 + 0x5c)#define COLORBACK		(0x00100000 + 0x60)#define COLORFORE		(0x00100000 + 0x64)#define DSTSIZE			(0x00100000 + 0x68)#define DSTXY			(0x00100000 + 0x6c)#define COMMAND_2D		(0x00100000 + 0x70)#define LAUNCH_2D		(0x00100000 + 0x80)#define COMMAND_3D		(0x00200000 + 0x120)#define SWAPBUFCMD		(0x00200000 + 0x128)#define SWAPPENDING		(0x00200000 + 0x24C)#define LEFTOVBUF		(0x00200000 + 0x250)#define RIGHTOVBUF		(0x00200000 + 0x254)#define FBISWAPBUFHIST		(0x00200000 + 0x258)/* register bitfields (not all, only as needed) */#define BIT(x) (1UL << (x))/* COMMAND_2D reg. values */#define ROP_COPY		0xcc     // src#define ROP_INVERT      0x55     // NOT dst#define ROP_XOR         0x66     // src XOR dst#define ROP_OR			(0xee)	/* src | dst */#define AUTOINC_DSTX                    BIT(10)#define AUTOINC_DSTY                    BIT(11)#define COMMAND_2D_S2S_BITBLT			0x01      // screen to screen#define COMMAND_2D_S2S_STRECH_BLT		0x02 // BLT + Strech#define COMMAND_2D_H2S_BITBLT                   0x03       // host to screen#define COMMAND_2D_FILLRECT			0x05#define COMMAND_2D_DO_IMMED		        BIT(8) // Do it immediatly#define COMMAND_3D_NOP				0x00#define STATUS_RETRACE				BIT(6)#define STATUS_BUSY					BIT(9)#define MISCINIT1_CLUT_INV			BIT(0)#define MISCINIT1_2DBLOCK_DIS		BIT(15)#define DRAMINIT0_SGRAM_NUM			BIT(26)#define DRAMINIT0_SGRAM_TYPE		BIT(27)#define DRAMINIT1_MEM_SDRAM			BIT(30)#define VGAINIT0_VGA_DISABLE		BIT(0)#define VGAINIT0_EXT_TIMING			BIT(1)#define VGAINIT0_8BIT_DAC			BIT(2)#define VGAINIT0_EXT_ENABLE			BIT(6)#define VGAINIT0_WAKEUP_3C3			BIT(8)#define VGAINIT0_LEGACY_DISABLE		BIT(9)#define VGAINIT0_ALT_READBACK		BIT(10)#define VGAINIT0_FAST_BLINK			BIT(11)#define VGAINIT0_EXTSHIFTOUT		BIT(12)#define VGAINIT0_DECODE_3C6			BIT(13)#define VGAINIT0_SGRAM_HBLANK_DISABLE	BIT(22)#define VGAINIT1_MASK				0x1fffff#define VIDCFG_VIDPROC_ENABLE		BIT(0)#define VIDCFG_CURS_X11				BIT(1)#define VIDCFG_HALF_MODE			BIT(4)#define VIDCFG_DESK_ENABLE			BIT(7)#define VIDCFG_CLUT_BYPASS			BIT(10)#define VIDCFG_2X					BIT(26)#define VIDCFG_HWCURSOR_ENABLE		BIT(27)#define VIDCFG_PIXFMT_SHIFT				18#define DACMODE_2X					BIT(0)/* AGP registers */#define AGPREQSIZE          (0x0080000 + 0x00)#define AGPHOSTADDRESSLOW   (0x0080000 + 0x04)#define AGPHOSTADDRESSHIGH  (0x0080000 + 0x08)#define AGPGRAPHICSADDRESS  (0x0080000 + 0x0C)#define AGPGRAPHICSSTRIDE   (0x0080000 + 0x10)#define AGPMOVECMD          (0x0080000 + 0x14)/* FIFO registers */#define CMDBASEADDR0        (0x0080000 + 0x20)#define CMDBASESIZE0        (0x0080000 + 0x24)#define CMDBUMP0            (0x0080000 + 0x28)#define CMDRDPTRL0          (0x0080000 + 0x2C)#define CMDRDPTRH0          (0x0080000 + 0x30)#define CMDAMIN0            (0x0080000 + 0x34)#define CMDAMAX0            (0x0080000 + 0x38)#define CMDFIFODEPTH0       (0x0080000 + 0x44)#define CMDHOLECNT0         (0x0080000 + 0x48)/* YUV reisters */#define YUVBASEADDRESS (0x0080000 + 0x100)#define YUVSTRIDE      (0x0080000 + 0x104)/* VGA rubbish, need to change this for multihead support */#define MISC_W 	0x3c2#define MISC_R 	0x3cc#define SEQ_I 	0x3c4#define SEQ_D	0x3c5#define CRT_I	0x3d4#define CRT_D	0x3d5#define ATT_IW	0x3c0#define RAMDAC_R 0x3c7#define RAMDAC_W 0x3c8#define RAMDAC_D 0x3c9#define IS1_R	0x3da#define GRA_I	0x3ce#define GRA_D	0x3cf#ifndef FB_ACCEL_3DFX_BANSHEE #define FB_ACCEL_3DFX_BANSHEE 31#endif#define TDFXF_HSYNC_ACT_HIGH	0x01#define TDFXF_HSYNC_ACT_LOW		0x02#define TDFXF_VSYNC_ACT_HIGH	0x04#define TDFXF_VSYNC_ACT_LOW		0x08#define TDFXF_LINE_DOUBLE		0x10#define TDFXF_VIDEO_ENABLE		0x20#define TDFXF_HSYNC_MASK		0x03#define TDFXF_VSYNC_MASK		0x0c#define XYREG(x,y)		(((((unsigned long)y) & 0x1FFF) << 16) | (((unsigned long)x) & 0x1FFF))//#define TDFXFB_DEBUG #ifdef TDFXFB_DEBUG#define DPRINTK(a,b...) printk(KERN_DEBUG "fb: %s: " a, __FUNCTION__ , ## b)#else#define DPRINTK(a,b...)#endif /* ------------------------------------------------------------------------- */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?