via_driver.h revision d89f4815
17e6fb56fSmrg/* 27e6fb56fSmrg * Copyright 2004-2005 The Unichrome Project [unichrome.sf.net] 37e6fb56fSmrg * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. 47e6fb56fSmrg * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. 57e6fb56fSmrg * 67e6fb56fSmrg * Permission is hereby granted, free of charge, to any person obtaining a 77e6fb56fSmrg * copy of this software and associated documentation files (the "Software"), 87e6fb56fSmrg * to deal in the Software without restriction, including without limitation 97e6fb56fSmrg * the rights to use, copy, modify, merge, publish, distribute, sub license, 107e6fb56fSmrg * and/or sell copies of the Software, and to permit persons to whom the 117e6fb56fSmrg * Software is furnished to do so, subject to the following conditions: 127e6fb56fSmrg * 137e6fb56fSmrg * The above copyright notice and this permission notice (including the 147e6fb56fSmrg * next paragraph) shall be included in all copies or substantial portions 157e6fb56fSmrg * of the Software. 167e6fb56fSmrg * 177e6fb56fSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 187e6fb56fSmrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 197e6fb56fSmrg * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 207e6fb56fSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 217e6fb56fSmrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 227e6fb56fSmrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 237e6fb56fSmrg * DEALINGS IN THE SOFTWARE. 247e6fb56fSmrg */ 257e6fb56fSmrg 267e6fb56fSmrg#ifndef _VIA_DRIVER_H_ 277e6fb56fSmrg#define _VIA_DRIVER_H_ 1 287e6fb56fSmrg 297e6fb56fSmrg#define HAVE_DEBUG 1 307e6fb56fSmrg 317e6fb56fSmrg#ifdef HAVE_DEBUG 327e6fb56fSmrg#define DEBUG(x) x 337e6fb56fSmrg#else 347e6fb56fSmrg#define DEBUG(x) 357e6fb56fSmrg#endif 367e6fb56fSmrg 377e6fb56fSmrg#include "vgaHW.h" 387e6fb56fSmrg#include "xf86.h" 397e6fb56fSmrg 407e6fb56fSmrg#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 417e6fb56fSmrg#include "xf86Resources.h" 427e6fb56fSmrg#endif 437e6fb56fSmrg 447e6fb56fSmrg#include "xf86Pci.h" 457e6fb56fSmrg#include "xf86PciInfo.h" 467e6fb56fSmrg#include "xf86_OSproc.h" 477e6fb56fSmrg#include "compiler.h" 487e6fb56fSmrg#include "xf86Cursor.h" 497e6fb56fSmrg#include "mipointer.h" 507e6fb56fSmrg#include "micmap.h" 517e6fb56fSmrg#include "fourcc.h" 527e6fb56fSmrg 537e6fb56fSmrg#define USE_FB 547e6fb56fSmrg#ifdef USE_FB 557e6fb56fSmrg#include "fb.h" 567e6fb56fSmrg#else 577e6fb56fSmrg#include "cfb.h" 587e6fb56fSmrg#include "cfb16.h" 597e6fb56fSmrg#include "cfb32.h" 607e6fb56fSmrg#endif 617e6fb56fSmrg 627e6fb56fSmrg#include "xf86cmap.h" 637e6fb56fSmrg#include "vbe.h" 647e6fb56fSmrg#include "xaa.h" 657e6fb56fSmrg 667e6fb56fSmrg#include "via_regs.h" 677e6fb56fSmrg#include "via_bios.h" 687e6fb56fSmrg#include "via_priv.h" 697e6fb56fSmrg#include "via_swov.h" 707e6fb56fSmrg#include "via_dmabuffer.h" 717e6fb56fSmrg#include "via_3d.h" 727e6fb56fSmrg#include "via_video.h" 737e6fb56fSmrg 747e6fb56fSmrg#ifdef XSERVER_LIBPCIACCESS 757e6fb56fSmrg#include <pciaccess.h> 767e6fb56fSmrg#endif 777e6fb56fSmrg 787e6fb56fSmrg#ifdef XF86DRI 797e6fb56fSmrg#define _XF86DRI_SERVER_ 807e6fb56fSmrg#include "sarea.h" 817e6fb56fSmrg#include "dri.h" 827e6fb56fSmrg#include "GL/glxint.h" 837e6fb56fSmrg#include "via_dri.h" 847e6fb56fSmrg#endif 857e6fb56fSmrg 867e6fb56fSmrg#include "exa.h" 877e6fb56fSmrg#define VIA_AGP_UPL_SIZE (1024*128) 887e6fb56fSmrg#define VIA_DMA_DL_SIZE (1024*128) 897e6fb56fSmrg#define VIA_SCRATCH_SIZE (4*1024*1024) 907e6fb56fSmrg 917e6fb56fSmrg/* 927e6fb56fSmrg * Pixmap sizes below which we don't try to do hw accel. 937e6fb56fSmrg */ 947e6fb56fSmrg 957e6fb56fSmrg#define VIA_MIN_COMPOSITE 400 967e6fb56fSmrg#define VIA_MIN_UPLOAD 4000 977e6fb56fSmrg#define VIA_MIN_TEX_UPLOAD 200 987e6fb56fSmrg#define VIA_MIN_DOWNLOAD 200 997e6fb56fSmrg 1007e6fb56fSmrg#define AGP_PAGE_SIZE 4096 1017e6fb56fSmrg#define AGP_PAGES 8192 1027e6fb56fSmrg#define AGP_SIZE (AGP_PAGE_SIZE * AGP_PAGES) 1037e6fb56fSmrg 1047e6fb56fSmrg#define DRIVER_NAME "openchrome" 1057e6fb56fSmrg#define VERSION_MAJOR 0 1067e6fb56fSmrg#define VERSION_MINOR 2 1077e6fb56fSmrg#define PATCHLEVEL 904 1087e6fb56fSmrg#define VIA_VERSION ((VERSION_MAJOR<<24) | (VERSION_MINOR<<16) | PATCHLEVEL) 1097e6fb56fSmrg 1107e6fb56fSmrg#define VIA_VQ_SIZE (256 * 1024) 1117e6fb56fSmrg 1127e6fb56fSmrg#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 1137e6fb56fSmrg#define VIA_RES_SHARED RES_SHARED_VGA 1147e6fb56fSmrg#define VIA_RES_UNDEF RES_UNDEFINED 1157e6fb56fSmrg#else 1167e6fb56fSmrg#define VIA_RES_SHARED NULL 1177e6fb56fSmrg#define VIA_RES_UNDEF NULL 1187e6fb56fSmrg#endif 1197e6fb56fSmrg 1207e6fb56fSmrgtypedef struct { 1217e6fb56fSmrg CARD8 SR08, SR0A, SR0F; 1227e6fb56fSmrg 1237e6fb56fSmrg /* extended Sequencer registers */ 1247e6fb56fSmrg CARD8 SR10, SR11, SR12, SR13,SR14,SR15,SR16; 1257e6fb56fSmrg CARD8 SR17, SR18, SR19, SR1A,SR1B,SR1C,SR1D,SR1E; 1267e6fb56fSmrg CARD8 SR1F, SR20, SR21, SR22,SR23,SR24,SR25,SR26; 1277e6fb56fSmrg CARD8 SR27, SR28, SR29, SR2A,SR2B,SR2C,SR2D,SR2E; 1287e6fb56fSmrg CARD8 SR2F, SR30, SR31, SR32,SR33,SR34,SR40,SR41; 1297e6fb56fSmrg CARD8 SR42, SR43, SR44, SR45,SR46,SR47,SR48,SR49; 1307e6fb56fSmrg CARD8 SR4A, SR4B, SR4C; 1317e6fb56fSmrg 1327e6fb56fSmrg /* extended CRTC registers */ 1337e6fb56fSmrg CARD8 CR13, CR30, CR31, CR32, CR33, CR34, CR35, CR36; 1347e6fb56fSmrg CARD8 CR37, CR38, CR39, CR3A, CR40, CR41, CR42, CR43; 1357e6fb56fSmrg CARD8 CR44, CR45, CR46, CR47, CR48, CR49, CR4A; 1367e6fb56fSmrg CARD8 CR97, CR99, CR9B, CR9F, CRA0, CRA1, CRA2; 1377e6fb56fSmrg CARD8 CRTCRegs[68]; 1387e6fb56fSmrg/* CARD8 LCDRegs[0x40];*/ 1397e6fb56fSmrg 1407e6fb56fSmrg /* TMDS/LVDS Control */ 1417e6fb56fSmrg CARD8 CRD2; 1427e6fb56fSmrg} VIARegRec, *VIARegPtr; 1437e6fb56fSmrg 1447e6fb56fSmrg/* 1457e6fb56fSmrg * varables that need to be shared among different screens. 1467e6fb56fSmrg */ 1477e6fb56fSmrgtypedef struct { 1487e6fb56fSmrg Bool b3DRegsInitialized; 1497e6fb56fSmrg} ViaSharedRec, *ViaSharedPtr; 1507e6fb56fSmrg 1517e6fb56fSmrg#ifdef XF86DRI 1527e6fb56fSmrg 1537e6fb56fSmrg#define VIA_XVMC_MAX_BUFFERS 2 1547e6fb56fSmrg#define VIA_XVMC_MAX_CONTEXTS 4 1557e6fb56fSmrg#define VIA_XVMC_MAX_SURFACES 20 1567e6fb56fSmrg 1577e6fb56fSmrg 1587e6fb56fSmrgtypedef struct { 1597e6fb56fSmrg VIAMem memory_ref; 1607e6fb56fSmrg unsigned long offsets[VIA_XVMC_MAX_BUFFERS]; 1617e6fb56fSmrg} ViaXvMCSurfacePriv; 1627e6fb56fSmrg 1637e6fb56fSmrgtypedef struct { 1647e6fb56fSmrg drm_context_t drmCtx; 1657e6fb56fSmrg} ViaXvMCContextPriv; 1667e6fb56fSmrg 1677e6fb56fSmrgtypedef struct { 1687e6fb56fSmrg XID contexts[VIA_XVMC_MAX_CONTEXTS]; 1697e6fb56fSmrg XID surfaces[VIA_XVMC_MAX_SURFACES]; 1707e6fb56fSmrg ViaXvMCSurfacePriv *sPrivs[VIA_XVMC_MAX_SURFACES]; 1717e6fb56fSmrg ViaXvMCContextPriv *cPrivs[VIA_XVMC_MAX_CONTEXTS]; 1727e6fb56fSmrg int nContexts,nSurfaces; 1737e6fb56fSmrg drm_handle_t mmioBase,fbBase,sAreaBase; 1747e6fb56fSmrg unsigned sAreaSize; 1757e6fb56fSmrg drmAddress sAreaAddr; 1767e6fb56fSmrg unsigned activePorts; 1777e6fb56fSmrg}ViaXvMC, *ViaXvMCPtr; 1787e6fb56fSmrg 1797e6fb56fSmrg#endif 1807e6fb56fSmrg 1817e6fb56fSmrgtypedef struct _twodContext { 1827e6fb56fSmrg CARD32 mode; 1837e6fb56fSmrg CARD32 cmd; 1847e6fb56fSmrg CARD32 fgColor; 1857e6fb56fSmrg CARD32 bgColor; 1867e6fb56fSmrg CARD32 pattern0; 1877e6fb56fSmrg CARD32 pattern1; 1887e6fb56fSmrg CARD32 patternAddr; 1897e6fb56fSmrg CARD32 keyControl; 1907e6fb56fSmrg unsigned srcOffset; 1917e6fb56fSmrg unsigned srcPitch; 1927e6fb56fSmrg unsigned Bpp; 1937e6fb56fSmrg unsigned bytesPPShift; 1947e6fb56fSmrg Bool clipping; 1957e6fb56fSmrg Bool dashed; 1967e6fb56fSmrg int clipX1; 1977e6fb56fSmrg int clipX2; 1987e6fb56fSmrg int clipY1; 1997e6fb56fSmrg int clipY2; 2007e6fb56fSmrg} ViaTwodContext; 2017e6fb56fSmrg 2027e6fb56fSmrgtypedef struct{ 2037e6fb56fSmrg /* textMode */ 2047e6fb56fSmrg CARD8 *state, *pstate; /* SVGA state */ 2057e6fb56fSmrg int statePage, stateSize, stateMode; 2067e6fb56fSmrg 2077e6fb56fSmrg /* vbe version */ 2087e6fb56fSmrg int major, minor; 2097e6fb56fSmrg} ViaVbeModeInfo; 2107e6fb56fSmrg 2117e6fb56fSmrgtypedef struct _VIA { 2127e6fb56fSmrg VIARegRec SavedReg; 2137e6fb56fSmrg xf86CursorInfoPtr CursorInfoRec; 2147e6fb56fSmrg int Bpp, Bpl; 2157e6fb56fSmrg 2167e6fb56fSmrg Bool FirstInit; 2177e6fb56fSmrg unsigned long videoRambytes; 2187e6fb56fSmrg int videoRamKbytes; 2197e6fb56fSmrg int FBFreeStart; 2207e6fb56fSmrg int FBFreeEnd; 2217e6fb56fSmrg int driSize; 2227e6fb56fSmrg int maxDriSize; 2237e6fb56fSmrg int VQStart; 2247e6fb56fSmrg int VQEnd; 2257e6fb56fSmrg 2267e6fb56fSmrg /* These are physical addresses. */ 2277e6fb56fSmrg unsigned long FrameBufferBase; 2287e6fb56fSmrg unsigned long MmioBase; 2297e6fb56fSmrg 2307e6fb56fSmrg /* These are linear addresses. */ 2317e6fb56fSmrg unsigned char* MapBase; 2327e6fb56fSmrg unsigned char* VidMapBase; 2337e6fb56fSmrg unsigned char* MpegMapBase; 2347e6fb56fSmrg unsigned char* BltBase; 2357e6fb56fSmrg unsigned char* MapBaseDense; 2367e6fb56fSmrg unsigned char* FBBase; 2377e6fb56fSmrg CARD8 MemClk; 2387e6fb56fSmrg 2397e6fb56fSmrg /* Here are all the Options */ 2407e6fb56fSmrg Bool VQEnable; 2417e6fb56fSmrg Bool hwcursor; 2427e6fb56fSmrg Bool NoAccel; 2437e6fb56fSmrg Bool shadowFB; 2447e6fb56fSmrg Rotation rotate; 2457e6fb56fSmrg Bool vbeSR; 2467e6fb56fSmrg int agpMem; 2477e6fb56fSmrg 2487e6fb56fSmrg CloseScreenProcPtr CloseScreen; 2497e6fb56fSmrg#ifdef XSERVER_LIBPCIACCESS 2507e6fb56fSmrg struct pci_device *PciInfo; 2517e6fb56fSmrg int mmio_bar; 2527e6fb56fSmrg int fb_bar; 2537e6fb56fSmrg PCITAG PciTag; 2547e6fb56fSmrg#else 2557e6fb56fSmrg pciVideoPtr PciInfo; 2567e6fb56fSmrg PCITAG PciTag; 2577e6fb56fSmrg#endif 2587e6fb56fSmrg int Chipset; 2597e6fb56fSmrg int ChipId; 2607e6fb56fSmrg int ChipRev; 2617e6fb56fSmrg int EntityIndex; 2627e6fb56fSmrg 2637e6fb56fSmrg /* vbe */ 2647e6fb56fSmrg vbeInfoPtr pVbe; 2657e6fb56fSmrg ViaVbeModeInfo vbeMode; 2667e6fb56fSmrg Bool useVBEModes; 2677e6fb56fSmrg Bool useLegacyVBE; 2687e6fb56fSmrg 2697e6fb56fSmrg /* Support for shadowFB and rotation */ 2707e6fb56fSmrg unsigned char* ShadowPtr; 2717e6fb56fSmrg int ShadowPitch; 2727e6fb56fSmrg void (*PointerMoved)(int index, int x, int y); 2737e6fb56fSmrg 2747e6fb56fSmrg /* Support for XAA acceleration */ 2757e6fb56fSmrg XAAInfoRecPtr AccelInfoRec; 2767e6fb56fSmrg ViaTwodContext td; 2777e6fb56fSmrg Via3DState v3d; 2787e6fb56fSmrg Via3DState *lastToUpload; 2797e6fb56fSmrg ViaCommandBuffer cb; 2807e6fb56fSmrg int accelMarker; 2817e6fb56fSmrg CARD32 markerOffset; 2827e6fb56fSmrg CARD32 *markerBuf; 2837e6fb56fSmrg CARD32 curMarker; 2847e6fb56fSmrg CARD32 lastMarkerRead; 2857e6fb56fSmrg Bool agpDMA; 2867e6fb56fSmrg Bool nPOT[VIA_NUM_TEXUNITS]; 2877e6fb56fSmrg const unsigned *TwodRegs; 2887e6fb56fSmrg ExaDriverPtr exaDriverPtr; 2897e6fb56fSmrg ExaOffscreenArea *exa_scratch; 2907e6fb56fSmrg unsigned int exa_scratch_next; 2917e6fb56fSmrg Bool useEXA; 2927e6fb56fSmrg void *maskP; 2937e6fb56fSmrg CARD32 maskFormat; 2947e6fb56fSmrg Bool componentAlpha; 2957e6fb56fSmrg void *srcP; 2967e6fb56fSmrg CARD32 srcFormat; 2977e6fb56fSmrg ExaOffscreenArea *scratchFBBuffer; 2987e6fb56fSmrg unsigned scratchOffset; 2997e6fb56fSmrg int exaScratchSize; 3007e6fb56fSmrg char * scratchAddr; 3017e6fb56fSmrg Bool noComposite; 3027e6fb56fSmrg#ifdef XF86DRI 3037e6fb56fSmrg drm_via_mem_t scratchAGPBuffer; 3047e6fb56fSmrg drm_via_mem_t texAGPBuffer; 3057e6fb56fSmrg unsigned texOffset; 3067e6fb56fSmrg char * texAddr; 3077e6fb56fSmrg char * dBounce; 3087e6fb56fSmrg#endif 3097e6fb56fSmrg 3107e6fb56fSmrg /* Rotation */ 3117e6fb56fSmrg Bool RandRRotation; 3127e6fb56fSmrg 3137e6fb56fSmrg /* BIOS Info Ptr */ 3147e6fb56fSmrg VIABIOSInfoPtr pBIOSInfo; 3157e6fb56fSmrg struct ViaCardIdStruct* Id; 3167e6fb56fSmrg 3177e6fb56fSmrg /* Support for DGA */ 3187e6fb56fSmrg int numDGAModes; 3197e6fb56fSmrg DGAModePtr DGAModes; 3207e6fb56fSmrg Bool DGAactive; 3217e6fb56fSmrg int DGAViewportStatus; 3227e6fb56fSmrg int DGAOldDisplayWidth; 3237e6fb56fSmrg int DGAOldBitsPerPixel; 3247e6fb56fSmrg int DGAOldDepth; 3257e6fb56fSmrg 3267e6fb56fSmrg /* I2C & DDC */ 3277e6fb56fSmrg I2CBusPtr pI2CBus1; 3287e6fb56fSmrg I2CBusPtr pI2CBus2; 3297e6fb56fSmrg I2CBusPtr pI2CBus3; 3307e6fb56fSmrg xf86MonPtr DDC1; 3317e6fb56fSmrg xf86MonPtr DDC2; 3327e6fb56fSmrg 3337e6fb56fSmrg /* MHS */ 3347e6fb56fSmrg Bool IsSecondary; 3357e6fb56fSmrg Bool HasSecondary; 3367e6fb56fSmrg Bool SAMM; 3377e6fb56fSmrg 3387e6fb56fSmrg#ifdef XF86DRI 3397e6fb56fSmrg Bool directRenderingEnabled; 3407e6fb56fSmrg Bool XvMCEnabled; 3417e6fb56fSmrg DRIInfoPtr pDRIInfo; 3427e6fb56fSmrg int drmFD; 3437e6fb56fSmrg int numVisualConfigs; 3447e6fb56fSmrg __GLXvisualConfig* pVisualConfigs; 3457e6fb56fSmrg VIAConfigPrivPtr pVisualConfigsPriv; 3467e6fb56fSmrg drm_handle_t agpHandle; 3477e6fb56fSmrg drm_handle_t registerHandle; 3487e6fb56fSmrg drm_handle_t frameBufferHandle; 3497e6fb56fSmrg unsigned long agpAddr; 3507e6fb56fSmrg drmAddress agpMappedAddr; 3517e6fb56fSmrg unsigned char *agpBase; 3527e6fb56fSmrg unsigned int agpSize; 3537e6fb56fSmrg Bool IsPCI; 3547e6fb56fSmrg ViaXvMC xvmc; 3557e6fb56fSmrg int drmVerMajor; 3567e6fb56fSmrg int drmVerMinor; 3577e6fb56fSmrg int drmVerPL; 3587e6fb56fSmrg VIAMem driOffScreenMem; 3597e6fb56fSmrg void * driOffScreenSave; 3607e6fb56fSmrg#endif 3617e6fb56fSmrg Bool DRIIrqEnable; 3627e6fb56fSmrg Bool agpEnable; 3637e6fb56fSmrg Bool dma2d; 3647e6fb56fSmrg Bool dmaXV; 3657e6fb56fSmrg 3667e6fb56fSmrg CARD8 ActiveDevice; /* Option */ 3677e6fb56fSmrg 3687e6fb56fSmrg unsigned char *CursorImage; 3697e6fb56fSmrg CARD32 CursorFG; 3707e6fb56fSmrg CARD32 CursorBG; 3717e6fb56fSmrg Bool CursorARGB; 3727e6fb56fSmrg Bool CursorARGBSupported; 3737e6fb56fSmrg CARD8 CursorPipe; 3747e6fb56fSmrg int CursorStart; 3757e6fb56fSmrg int CursorMaxWidth; 3767e6fb56fSmrg int CursorMaxHeight; 3777e6fb56fSmrg int CursorSize; 3787e6fb56fSmrg 3797e6fb56fSmrg CARD32 CursorRegControl; 3807e6fb56fSmrg CARD32 CursorRegBase; 3817e6fb56fSmrg CARD32 CursorRegPos; 3827e6fb56fSmrg CARD32 CursorRegOffset; 3837e6fb56fSmrg CARD32 CursorRegFifo; 3847e6fb56fSmrg CARD32 CursorRegTransKey; 3857e6fb56fSmrg 3867e6fb56fSmrg CARD32 CursorControl0; 3877e6fb56fSmrg CARD32 CursorControl1; 3887e6fb56fSmrg CARD32 CursorFifo; 3897e6fb56fSmrg CARD32 CursorTransparentKey; 3907e6fb56fSmrg CARD32 CursorPrimHiInvtColor; 3917e6fb56fSmrg CARD32 CursorV327HiInvtColor; 3927e6fb56fSmrg 3937e6fb56fSmrg /* Video */ 3947e6fb56fSmrg int VideoEngine; 3957e6fb56fSmrg swovRec swov; 3967e6fb56fSmrg CARD32 VideoStatus; 3977e6fb56fSmrg VIAHWDiff HWDiff; 3987e6fb56fSmrg unsigned long dwV1, dwV3; 3997e6fb56fSmrg unsigned long OverlaySupported; 4007e6fb56fSmrg unsigned long dwFrameNum; 4017e6fb56fSmrg 4027e6fb56fSmrg CARD32* VidRegBuffer; /* Temporary buffer for video overlay registers. */ 4037e6fb56fSmrg unsigned long VidRegCursor; /* Write cursor for VidRegBuffer. */ 4047e6fb56fSmrg 4057e6fb56fSmrg unsigned long old_dwUseExtendedFIFO; 4067e6fb56fSmrg 4077e6fb56fSmrg ViaSharedPtr sharedData; 4087e6fb56fSmrg Bool useDmaBlit; 4097e6fb56fSmrg 4107e6fb56fSmrg void *displayMap; 4117e6fb56fSmrg CARD32 displayOffset; 4127e6fb56fSmrg void *cursorMap; 4137e6fb56fSmrg CARD32 cursorOffset; 4147e6fb56fSmrg 4157e6fb56fSmrg#ifdef HAVE_DEBUG 4167e6fb56fSmrg Bool disableXvBWCheck; 4177e6fb56fSmrg Bool DumpVGAROM; 4187e6fb56fSmrg Bool PrintVGARegs; 4197e6fb56fSmrg Bool PrintTVRegs; 4207e6fb56fSmrg Bool I2CScan; 4217e6fb56fSmrg 4227e6fb56fSmrg Bool UseLegacyModeSwitch ; 4237e6fb56fSmrg video_via_regs* VideoRegs ; 4247e6fb56fSmrg#endif /* HAVE_DEBUG */ 4257e6fb56fSmrg} VIARec, *VIAPtr; 4267e6fb56fSmrg 4277e6fb56fSmrg#define VIAPTR(p) ((VIAPtr)((p)->driverPrivate)) 4287e6fb56fSmrg 4297e6fb56fSmrgtypedef struct 4307e6fb56fSmrg{ 4317e6fb56fSmrg Bool IsDRIEnabled; 4327e6fb56fSmrg 4337e6fb56fSmrg Bool HasSecondary; 4347e6fb56fSmrg Bool BypassSecondary; 4357e6fb56fSmrg /*These two registers are used to make sure the CRTC2 is 4367e6fb56fSmrg retored before CRTC_EXT, otherwise it could lead to blank screen.*/ 4377e6fb56fSmrg Bool IsSecondaryRestored; 4387e6fb56fSmrg Bool RestorePrimary; 4397e6fb56fSmrg 4407e6fb56fSmrg ScrnInfoPtr pSecondaryScrn; 4417e6fb56fSmrg ScrnInfoPtr pPrimaryScrn; 4427e6fb56fSmrg} VIAEntRec, *VIAEntPtr; 4437e6fb56fSmrg 4447e6fb56fSmrg/* Prototypes. */ 4457e6fb56fSmrgvoid VIAInitialize3DEngine(ScrnInfoPtr pScrn); 4467e6fb56fSmrg 4477e6fb56fSmrg/* In via_cursor.c. */ 4487e6fb56fSmrgBool viaCursorHWInit(ScreenPtr pScreen); 4497e6fb56fSmrgvoid viaCursorShow(ScrnInfoPtr); 4507e6fb56fSmrgvoid viaCursorHide(ScrnInfoPtr); 4517e6fb56fSmrgvoid viaCursorStore(ScrnInfoPtr pScrn); 4527e6fb56fSmrgvoid viaCursorRestore(ScrnInfoPtr pScrn); 4537e6fb56fSmrgBool viaCursorRecInit(ScrnInfoPtr pScrn); 4547e6fb56fSmrgvoid viaCursorRecDestroy(ScrnInfoPtr pScrn); 4557e6fb56fSmrgvoid viaCursorSetFB(ScrnInfoPtr pScrn); 4567e6fb56fSmrg 4577e6fb56fSmrg/* In via_accel.c. */ 4587e6fb56fSmrgBool viaInitAccel(ScreenPtr); 4597e6fb56fSmrgvoid viaInitialize2DEngine(ScrnInfoPtr); 4607e6fb56fSmrgvoid viaAccelSync(ScrnInfoPtr); 4617e6fb56fSmrgvoid viaDisableVQ(ScrnInfoPtr); 4627e6fb56fSmrgvoid viaExitAccel(ScreenPtr); 4637e6fb56fSmrgvoid viaAccelBlitRect(ScrnInfoPtr, int, int, int, int, int, int); 4647e6fb56fSmrgvoid viaAccelFillRect(ScrnInfoPtr, int, int, int, int, unsigned long); 4657e6fb56fSmrgvoid viaAccelSyncMarker(ScrnInfoPtr); 4667e6fb56fSmrgvoid viaFinishInitAccel(ScreenPtr); 4677e6fb56fSmrgvoid viaAccelWaitMarker(ScreenPtr, int); 4687e6fb56fSmrgint viaAccelMarkSync(ScreenPtr); 4697e6fb56fSmrgvoid viaAccelFillPixmap(ScrnInfoPtr, unsigned long, unsigned long, 4707e6fb56fSmrg int, int, int, int, int, unsigned long); 4717e6fb56fSmrgvoid viaAccelTextureBlit(ScrnInfoPtr, unsigned long, unsigned, unsigned, 4727e6fb56fSmrg unsigned, unsigned, unsigned, unsigned, 4737e6fb56fSmrg unsigned long, unsigned, unsigned, 4747e6fb56fSmrg unsigned, unsigned, int); 4757e6fb56fSmrg 4767e6fb56fSmrg 4777e6fb56fSmrg 4787e6fb56fSmrg/* In via_shadow.c */ 4797e6fb56fSmrgvoid ViaShadowFBInit(ScrnInfoPtr pScrn, ScreenPtr pScreen); 4807e6fb56fSmrg 4817e6fb56fSmrg/* In via_dga.c */ 4827e6fb56fSmrgBool VIADGAInit(ScreenPtr); 4837e6fb56fSmrg 4847e6fb56fSmrg/*In via_video.c*/ 4857e6fb56fSmrgvoid viaInitVideo(ScreenPtr pScreen); 4867e6fb56fSmrgvoid viaExitVideo(ScrnInfoPtr pScrn); 4877e6fb56fSmrgvoid viaSaveVideo(ScrnInfoPtr pScrn); 4887e6fb56fSmrgvoid viaRestoreVideo(ScrnInfoPtr pScrn); 4897e6fb56fSmrgvoid viaSetColorSpace(VIAPtr pVia, int hue, int saturation, int brightness, int contrast, 4907e6fb56fSmrg Bool reset); 4917e6fb56fSmrgvoid VIAVidAdjustFrame(ScrnInfoPtr pScrn, int x, int y); 4927e6fb56fSmrg 4937e6fb56fSmrg/* In via_memory.c */ 4947e6fb56fSmrgvoid VIAFreeLinear(VIAMemPtr); 4957e6fb56fSmrgint VIAAllocLinear(VIAMemPtr, ScrnInfoPtr, unsigned long); 4967e6fb56fSmrgint viaOffscreenLinear(VIAMemPtr, ScrnInfoPtr, unsigned long); 4977e6fb56fSmrgvoid VIAInitLinear(ScreenPtr pScreen); 4987e6fb56fSmrg 4997e6fb56fSmrg/* In via_xwmc.c */ 5007e6fb56fSmrg 5017e6fb56fSmrg#ifdef XF86DRI 5027e6fb56fSmrg/* Basic init and exit functions */ 5037e6fb56fSmrgvoid ViaInitXVMC(ScreenPtr pScreen); 5047e6fb56fSmrgvoid ViaCleanupXVMC(ScrnInfoPtr pScrn, XF86VideoAdaptorPtr *XvAdaptors, int XvAdaptorCount); 5057e6fb56fSmrgint viaXvMCInitXv(ScrnInfoPtr pScrn, XF86VideoAdaptorPtr XvAdapt); 5067e6fb56fSmrg 5077e6fb56fSmrg/* Returns the size of the fake Xv Image used as XvMC command buffer to the X server*/ 5087e6fb56fSmrgunsigned long viaXvMCPutImageSize(ScrnInfoPtr pScrn); 5097e6fb56fSmrg 5107e6fb56fSmrg 5117e6fb56fSmrg 5127e6fb56fSmrg#endif 5137e6fb56fSmrg 5147e6fb56fSmrg/* via_i2c.c */ 5157e6fb56fSmrgvoid ViaI2CInit(ScrnInfoPtr pScrn); 5167e6fb56fSmrg 5177e6fb56fSmrg#ifdef XF86DRI 5187e6fb56fSmrgBool VIADRIScreenInit(ScreenPtr pScreen); 5197e6fb56fSmrgvoid VIADRICloseScreen(ScreenPtr pScreen); 5207e6fb56fSmrgBool VIADRIFinishScreenInit(ScreenPtr pScreen); 5217e6fb56fSmrgvoid VIADRIRingBufferCleanup(ScrnInfoPtr pScrn); 5227e6fb56fSmrgBool VIADRIRingBufferInit(ScrnInfoPtr pScrn); 5237e6fb56fSmrgvoid viaDRIOffscreenRestore(ScrnInfoPtr pScrn); 5247e6fb56fSmrgvoid viaDRIOffscreenSave(ScrnInfoPtr pScrn); 5257e6fb56fSmrg 5267e6fb56fSmrg#endif /* XF86DRI */ 5277e6fb56fSmrg 528d89f4815Schristosint viaOffScreenLinear(VIAMemPtr mem, ScrnInfoPtr pScrn, unsigned long size); 529d89f4815Schristosvoid viaShowCursor(ScrnInfoPtr pScrn); 530d89f4815Schristosvoid viaHideCursor(ScrnInfoPtr pScrn); 531d89f4815SchristosBool viaHWCursorInit(ScreenPtr pScreen); 532d89f4815Schristosvoid ViaDisplaySetStreamOnCRT(ScrnInfoPtr pScrn, Bool primary); 533d89f4815Schristosvoid ViaDisplaySetStreamOnDFP(ScrnInfoPtr pScrn, Bool primary); 534d89f4815Schristosvoid ViaDisplaySetStreamOnDVO(ScrnInfoPtr pScrn, int port, Bool primary); 535d89f4815Schristosvoid ViaDisplayEnableSimultaneous(ScrnInfoPtr pScrn); 536d89f4815Schristosvoid ViaDisplayEnableCRT(ScrnInfoPtr pScrn); 537d89f4815Schristosvoid ViaDisplayEnableDVO(ScrnInfoPtr pScrn, int port); 538d89f4815Schristos 5397e6fb56fSmrg#endif /* _VIA_DRIVER_H_ */ 540