ast.h revision b4d38c65
115fb4814Smrg/* 215fb4814Smrg * Copyright (c) 2005 ASPEED Technology Inc. 315fb4814Smrg * 415fb4814Smrg * Permission to use, copy, modify, distribute, and sell this software and its 515fb4814Smrg * documentation for any purpose is hereby granted without fee, provided that 615fb4814Smrg * the above copyright notice appear in all copies and that both that 715fb4814Smrg * copyright notice and this permission notice appear in supporting 815fb4814Smrg * documentation, and that the name of the authors not be used in 915fb4814Smrg * advertising or publicity pertaining to distribution of the software without 1015fb4814Smrg * specific, written prior permission. The authors makes no representations 1115fb4814Smrg * about the suitability of this software for any purpose. It is provided 1215fb4814Smrg * "as is" without express or implied warranty. 1315fb4814Smrg * 1415fb4814Smrg * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 1515fb4814Smrg * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 1615fb4814Smrg * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR 1715fb4814Smrg * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 1815fb4814Smrg * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 1915fb4814Smrg * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 2015fb4814Smrg * PERFORMANCE OF THIS SOFTWARE. 2115fb4814Smrg */ 2215fb4814Smrg 2315fb4814Smrg#include <string.h> 2415fb4814Smrg#include <stdlib.h> 2515fb4814Smrg 26b4d38c65Smrg#ifdef HAVE_XAA_H 27b4d38c65Smrg#include "xaa.h" 28b4d38c65Smrg#endif 29b4d38c65Smrg 30de78e416Smrg#include "ast_pcirename.h" 31de78e416Smrg 32b4d38c65Smrg#include "compat-api.h" 33b4d38c65Smrg 3415fb4814Smrg/* Compiler Options */ 3515fb4814Smrg#define Accel_2D 3615fb4814Smrg/* #define MMIO_2D */ 3715fb4814Smrg#define HWC 38b534f209Smrg#define AstVideo 39de78e416Smrg/* #define PATCH_ABI_VERSION */ 4015fb4814Smrg 4115fb4814Smrg/* Vendor & Device Info */ 4215fb4814Smrg#ifndef PCI_VENDOR_AST 4315fb4814Smrg#define PCI_VENDOR_AST 0x1A03 4415fb4814Smrg#endif 4515fb4814Smrg 4615fb4814Smrg#ifndef PCI_CHIP_AST2000 4715fb4814Smrg#define PCI_CHIP_AST2000 0x2000 4815fb4814Smrg#endif 4915fb4814Smrg 50de78e416Smrg#ifndef PCI_CHIP_AST2100 51de78e416Smrg#define PCI_CHIP_AST2100 0x2010 52de78e416Smrg#endif 53de78e416Smrg 54b534f209Smrg#ifndef PCI_CHIP_AST1180 55b534f209Smrg#define PCI_CHIP_AST1180 0x1180 56b534f209Smrg#endif 57b534f209Smrg 58de78e416Smrgtypedef enum _CHIP_ID { 59de78e416Smrg VGALegacy, 60de78e416Smrg AST2000, 61de78e416Smrg AST2100, 62de78e416Smrg AST1100, 63de78e416Smrg AST2200, 64b410ddbeSmrg AST2150, 65b534f209Smrg AST2300, 66b534f209Smrg AST1180 67de78e416Smrg} CHIP_ID; 68de78e416Smrg 6915fb4814Smrg/* AST REC Info */ 7015fb4814Smrg#define AST_NAME "AST" 7115fb4814Smrg#define AST_DRIVER_NAME "ast" 72de78e416Smrg#define AST_MAJOR_VERSION PACKAGE_VERSION_MAJOR 73de78e416Smrg#define AST_MINOR_VERSION PACKAGE_VERSION_MINOR 74de78e416Smrg#define AST_PATCH_VERSION PACKAGE_VERSION_PATCHLEVEL 7515fb4814Smrg#define AST_VERSION \ 7615fb4814Smrg ((AST_MAJOR_VERSION << 20) | (AST_MINOR_VERSION << 10) | AST_PATCH_VERSION) 7715fb4814Smrg 7815fb4814Smrg/* Customized Info */ 7915fb4814Smrg#define DEFAULT_VIDEOMEM_SIZE 0x00800000 8015fb4814Smrg#define DEFAULT_MMIO_SIZE 0x00020000 8115fb4814Smrg#define DEFAULT_CMDQ_SIZE 0x00100000 8215fb4814Smrg#define MIN_CMDQ_SIZE 0x00040000 8315fb4814Smrg#define CMD_QUEUE_GUARD_BAND 0x00000020 8415fb4814Smrg#define DEFAULT_HWC_NUM 0x00000002 8515fb4814Smrg 86de78e416Smrg/* Patch Info */ 87de78e416Smrg#define ABI_VIDEODRV_VERSION_PATCH SET_ABI_VERSION(0, 5) 88de78e416Smrg 8915fb4814Smrg/* Data Type Definition */ 9015fb4814Smrgtypedef INT32 LONG; 9115fb4814Smrgtypedef CARD8 UCHAR; 9215fb4814Smrgtypedef CARD16 USHORT; 9315fb4814Smrgtypedef CARD32 ULONG; 9415fb4814Smrg 9515fb4814Smrg/* Data Structure Definition */ 9615fb4814Smrgtypedef struct _ASTRegRec { 97b4d38c65Smrg 9815fb4814Smrg UCHAR ExtCRTC[0x50]; 99b4d38c65Smrg 100b4d38c65Smrg UCHAR MISC; 101b4d38c65Smrg UCHAR SEQ[4]; 102b4d38c65Smrg UCHAR CRTC[25]; 103b4d38c65Smrg UCHAR AR[20]; 104b4d38c65Smrg UCHAR GR[9]; 105b4d38c65Smrg UCHAR DAC[256][3]; 106b4d38c65Smrg 107b534f209Smrg ULONG GFX[12]; 108b4d38c65Smrg 10915fb4814Smrg} ASTRegRec, *ASTRegPtr; 11015fb4814Smrg 11115fb4814Smrgtypedef struct _VIDEOMODE { 11215fb4814Smrg 11315fb4814Smrg int ScreenWidth; 11415fb4814Smrg int ScreenHeight; 11515fb4814Smrg int bitsPerPixel; 11615fb4814Smrg int ScreenPitch; 11715fb4814Smrg 11815fb4814Smrg} VIDEOMODE, *PVIDEOMODE; 11915fb4814Smrg 12015fb4814Smrgtypedef struct { 12115fb4814Smrg 12215fb4814Smrg ULONG ulCMDQSize; 12315fb4814Smrg ULONG ulCMDQType; 12415fb4814Smrg 12515fb4814Smrg ULONG ulCMDQOffsetAddr; 12615fb4814Smrg UCHAR *pjCMDQVirtualAddr; 12715fb4814Smrg 12815fb4814Smrg UCHAR *pjCmdQBasePort; 12915fb4814Smrg UCHAR *pjWritePort; 13015fb4814Smrg UCHAR *pjReadPort; 13115fb4814Smrg UCHAR *pjEngStatePort; 13215fb4814Smrg 13315fb4814Smrg ULONG ulCMDQMask; 13415fb4814Smrg ULONG ulCurCMDQueueLen; 13515fb4814Smrg 13615fb4814Smrg ULONG ulWritePointer; 13715fb4814Smrg ULONG ulReadPointer; 13815fb4814Smrg 13915fb4814Smrg ULONG ulReadPointer_OK; /* for Eng_DBGChk */ 14015fb4814Smrg 14115fb4814Smrg} CMDQINFO, *PCMDQINFO; 14215fb4814Smrg 14315fb4814Smrgtypedef struct { 14415fb4814Smrg 14515fb4814Smrg int HWC_NUM; 14615fb4814Smrg int HWC_NUM_Next; 14715fb4814Smrg 14815fb4814Smrg ULONG ulHWCOffsetAddr; 14915fb4814Smrg UCHAR *pjHWCVirtualAddr; 15015fb4814Smrg 15115fb4814Smrg USHORT cursortype; 15215fb4814Smrg USHORT width; 15315fb4814Smrg USHORT height; 15415fb4814Smrg USHORT offset_x; 15515fb4814Smrg USHORT offset_y; 15615fb4814Smrg ULONG fg; 15715fb4814Smrg ULONG bg; 158de78e416Smrg 159de78e416Smrg UCHAR cursorpattern[1024]; 16015fb4814Smrg 16115fb4814Smrg} HWCINFO, *PHWCINFO; 16215fb4814Smrg 163b534f209Smrgtypedef struct _ASTPortPrivRec{ 164b534f209Smrg FBLinearPtr linear; 165b534f209Smrg FBAreaPtr fbAreaPtr; 166b534f209Smrg int fbSize; 167b534f209Smrg CARD32 bufAddr[2]; 168b534f209Smrg 169b534f209Smrg unsigned char currentBuf; 170b534f209Smrg 171b534f209Smrg short drw_x, drw_y, drw_w, drw_h; 172b534f209Smrg short src_x, src_y, src_w, src_h; 173b534f209Smrg int id; 174b534f209Smrg short srcPitch, height; 175b534f209Smrg 176b534f209Smrg INT32 brightness; 177b534f209Smrg INT32 contrast; 178b534f209Smrg INT32 saturation; 179b534f209Smrg INT32 hue; 180b534f209Smrg 181b534f209Smrg INT32 gammaR; 182b534f209Smrg INT32 gammaG; 183b534f209Smrg INT32 gammaB; 184b534f209Smrg 185b534f209Smrg RegionRec clip; 186b534f209Smrg CARD32 colorKey; 187b534f209Smrg 188b534f209Smrg CARD32 videoStatus; 189b534f209Smrg Time offTime; 190b534f209Smrg Time freeTime; 191b534f209Smrg 192b534f209Smrg CARD32 displayMode; 193b534f209Smrg 194b534f209Smrg int pitch; 195b534f209Smrg int offset; 196b534f209Smrg} ASTPortPrivRec, *ASTPortPrivPtr; 197b534f209Smrg 19815fb4814Smrgtypedef struct _ASTRec { 19915fb4814Smrg 20015fb4814Smrg EntityInfoPtr pEnt; 201de78e416Smrg#ifndef XSERVER_LIBPCIACCESS 202de78e416Smrg pciVideoPtr PciInfo; 203de78e416Smrg PCITAG PciTag; 204de78e416Smrg#else 205de78e416Smrg struct pci_device *PciInfo; 206de78e416Smrg#endif 20715fb4814Smrg 20815fb4814Smrg OptionInfoPtr Options; 20915fb4814Smrg DisplayModePtr ModePtr; 21015fb4814Smrg FBLinearPtr pCMDQPtr; 211b4d38c65Smrg#ifdef HAVE_XAA_H 21215fb4814Smrg XAAInfoRecPtr AccelInfoPtr; 213b4d38c65Smrg#endif 21415fb4814Smrg xf86CursorInfoPtr HWCInfoPtr; 21515fb4814Smrg FBLinearPtr pHWCPtr; 21615fb4814Smrg 21715fb4814Smrg CloseScreenProcPtr CloseScreen; 21815fb4814Smrg ScreenBlockHandlerProcPtr BlockHandler; 219de78e416Smrg 220de78e416Smrg UCHAR jChipType; 221de78e416Smrg UCHAR jDRAMType; 222b534f209Smrg ULONG ulDRAMBusWidth ; 223b534f209Smrg ULONG ulDRAMSize; 224b534f209Smrg ULONG ulVRAMSize; 225b534f209Smrg ULONG ulVRAMBase; 226b534f209Smrg ULONG ulMCLK; 22715fb4814Smrg 22815fb4814Smrg Bool noAccel; 22915fb4814Smrg Bool noHWC; 23015fb4814Smrg Bool MMIO2D; 23115fb4814Smrg int ENGCaps; 23215fb4814Smrg int DBGSelect; 233de78e416Smrg Bool VGA2Clone; 23415fb4814Smrg 23515fb4814Smrg ULONG FBPhysAddr; /* Frame buffer physical address */ 23615fb4814Smrg ULONG MMIOPhysAddr; /* MMIO region physical address */ 23715fb4814Smrg ULONG BIOSPhysAddr; /* BIOS physical address */ 23815fb4814Smrg 23915fb4814Smrg UCHAR *FBVirtualAddr; /* Map of frame buffer */ 24015fb4814Smrg UCHAR *MMIOVirtualAddr; /* Map of MMIO region */ 24115fb4814Smrg 24215fb4814Smrg unsigned long FbMapSize; 24315fb4814Smrg unsigned long MMIOMapSize; 24415fb4814Smrg 24515fb4814Smrg IOADDRESS IODBase; /* Base of PIO memory area */ 24615fb4814Smrg IOADDRESS PIOOffset; 24715fb4814Smrg IOADDRESS RelocateIO; 24815fb4814Smrg 24915fb4814Smrg VIDEOMODE VideoModeInfo; 25015fb4814Smrg ASTRegRec SavedReg; 25115fb4814Smrg CMDQINFO CMDQInfo; 25215fb4814Smrg HWCINFO HWCInfo; 25315fb4814Smrg ULONG ulCMDReg; 25415fb4814Smrg Bool EnableClip; 255de78e416Smrg 256de78e416Smrg int clip_left; 257de78e416Smrg int clip_top; 258de78e416Smrg int clip_right; 259de78e416Smrg int clip_bottom; 260b534f209Smrg 261b534f209Smrg int mon_h_active; /* Monitor Info. */ 262b534f209Smrg int mon_v_active; 263b534f209Smrg 264b534f209Smrg#ifdef AstVideo 265b534f209Smrg XF86VideoAdaptorPtr adaptor; 266b534f209Smrg Atom xvBrightness, xvContrast, xvColorKey, xvHue, xvSaturation; 267b534f209Smrg Atom xvGammaRed, xvGammaGreen, xvGammaBlue; 268b534f209Smrg#endif 269b534f209Smrg 270b534f209Smrg} ASTRec, *ASTRecPtr, *ASTPtr; 271b534f209Smrg 27215fb4814Smrg#define ASTPTR(p) ((ASTRecPtr)((p)->driverPrivate)) 27315fb4814Smrg 27415fb4814Smrg/* Include Files */ 27515fb4814Smrg#include "ast_mode.h" 27615fb4814Smrg#include "ast_vgatool.h" 27715fb4814Smrg#include "ast_2dtool.h" 27815fb4814Smrg#include "ast_cursor.h" 279