ast.h revision de78e416
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 26de78e416Smrg#include "ast_pcirename.h" 27de78e416Smrg 2815fb4814Smrg/* Compiler Options */ 2915fb4814Smrg#define Accel_2D 3015fb4814Smrg/* #define MMIO_2D */ 3115fb4814Smrg#define HWC 32de78e416Smrg/* #define PATCH_ABI_VERSION */ 3315fb4814Smrg 3415fb4814Smrg/* Vendor & Device Info */ 3515fb4814Smrg#ifndef PCI_VENDOR_AST 3615fb4814Smrg#define PCI_VENDOR_AST 0x1A03 3715fb4814Smrg#endif 3815fb4814Smrg 3915fb4814Smrg#ifndef PCI_CHIP_AST2000 4015fb4814Smrg#define PCI_CHIP_AST2000 0x2000 4115fb4814Smrg#endif 4215fb4814Smrg 43de78e416Smrg#ifndef PCI_CHIP_AST2100 44de78e416Smrg#define PCI_CHIP_AST2100 0x2010 45de78e416Smrg#endif 46de78e416Smrg 47de78e416Smrgtypedef enum _CHIP_ID { 48de78e416Smrg VGALegacy, 49de78e416Smrg AST2000, 50de78e416Smrg AST2100, 51de78e416Smrg AST1100, 52de78e416Smrg AST2200, 53de78e416Smrg AST2150 54de78e416Smrg} CHIP_ID; 55de78e416Smrg 5615fb4814Smrg/* AST REC Info */ 5715fb4814Smrg#define AST_NAME "AST" 5815fb4814Smrg#define AST_DRIVER_NAME "ast" 59de78e416Smrg#define AST_MAJOR_VERSION PACKAGE_VERSION_MAJOR 60de78e416Smrg#define AST_MINOR_VERSION PACKAGE_VERSION_MINOR 61de78e416Smrg#define AST_PATCH_VERSION PACKAGE_VERSION_PATCHLEVEL 6215fb4814Smrg#define AST_VERSION \ 6315fb4814Smrg ((AST_MAJOR_VERSION << 20) | (AST_MINOR_VERSION << 10) | AST_PATCH_VERSION) 6415fb4814Smrg 6515fb4814Smrg/* Customized Info */ 6615fb4814Smrg#define DEFAULT_VIDEOMEM_SIZE 0x00800000 6715fb4814Smrg#define DEFAULT_MMIO_SIZE 0x00020000 6815fb4814Smrg#define DEFAULT_CMDQ_SIZE 0x00100000 6915fb4814Smrg#define MIN_CMDQ_SIZE 0x00040000 7015fb4814Smrg#define CMD_QUEUE_GUARD_BAND 0x00000020 7115fb4814Smrg#define DEFAULT_HWC_NUM 0x00000002 7215fb4814Smrg 73de78e416Smrg/* Patch Info */ 74de78e416Smrg#define ABI_VIDEODRV_VERSION_PATCH SET_ABI_VERSION(0, 5) 75de78e416Smrg 7615fb4814Smrg/* Data Type Definition */ 7715fb4814Smrgtypedef INT32 LONG; 7815fb4814Smrgtypedef CARD8 UCHAR; 7915fb4814Smrgtypedef CARD16 USHORT; 8015fb4814Smrgtypedef CARD32 ULONG; 8115fb4814Smrg 8215fb4814Smrg/* Data Structure Definition */ 8315fb4814Smrgtypedef struct _ASTRegRec { 8415fb4814Smrg UCHAR ExtCRTC[0x50]; 8515fb4814Smrg 8615fb4814Smrg} ASTRegRec, *ASTRegPtr; 8715fb4814Smrg 8815fb4814Smrgtypedef struct _VIDEOMODE { 8915fb4814Smrg 9015fb4814Smrg int ScreenWidth; 9115fb4814Smrg int ScreenHeight; 9215fb4814Smrg int bitsPerPixel; 9315fb4814Smrg int ScreenPitch; 9415fb4814Smrg 9515fb4814Smrg} VIDEOMODE, *PVIDEOMODE; 9615fb4814Smrg 9715fb4814Smrgtypedef struct { 9815fb4814Smrg 9915fb4814Smrg ULONG ulCMDQSize; 10015fb4814Smrg ULONG ulCMDQType; 10115fb4814Smrg 10215fb4814Smrg ULONG ulCMDQOffsetAddr; 10315fb4814Smrg UCHAR *pjCMDQVirtualAddr; 10415fb4814Smrg 10515fb4814Smrg UCHAR *pjCmdQBasePort; 10615fb4814Smrg UCHAR *pjWritePort; 10715fb4814Smrg UCHAR *pjReadPort; 10815fb4814Smrg UCHAR *pjEngStatePort; 10915fb4814Smrg 11015fb4814Smrg ULONG ulCMDQMask; 11115fb4814Smrg ULONG ulCurCMDQueueLen; 11215fb4814Smrg 11315fb4814Smrg ULONG ulWritePointer; 11415fb4814Smrg ULONG ulReadPointer; 11515fb4814Smrg 11615fb4814Smrg ULONG ulReadPointer_OK; /* for Eng_DBGChk */ 11715fb4814Smrg 11815fb4814Smrg} CMDQINFO, *PCMDQINFO; 11915fb4814Smrg 12015fb4814Smrgtypedef struct { 12115fb4814Smrg 12215fb4814Smrg int HWC_NUM; 12315fb4814Smrg int HWC_NUM_Next; 12415fb4814Smrg 12515fb4814Smrg ULONG ulHWCOffsetAddr; 12615fb4814Smrg UCHAR *pjHWCVirtualAddr; 12715fb4814Smrg 12815fb4814Smrg USHORT cursortype; 12915fb4814Smrg USHORT width; 13015fb4814Smrg USHORT height; 13115fb4814Smrg USHORT offset_x; 13215fb4814Smrg USHORT offset_y; 13315fb4814Smrg ULONG fg; 13415fb4814Smrg ULONG bg; 135de78e416Smrg 136de78e416Smrg UCHAR cursorpattern[1024]; 13715fb4814Smrg 13815fb4814Smrg} HWCINFO, *PHWCINFO; 13915fb4814Smrg 14015fb4814Smrgtypedef struct _ASTRec { 14115fb4814Smrg 14215fb4814Smrg EntityInfoPtr pEnt; 143de78e416Smrg#ifndef XSERVER_LIBPCIACCESS 144de78e416Smrg pciVideoPtr PciInfo; 145de78e416Smrg PCITAG PciTag; 146de78e416Smrg#else 147de78e416Smrg struct pci_device *PciInfo; 148de78e416Smrg#endif 14915fb4814Smrg 15015fb4814Smrg OptionInfoPtr Options; 15115fb4814Smrg DisplayModePtr ModePtr; 15215fb4814Smrg FBLinearPtr pCMDQPtr; 15315fb4814Smrg XAAInfoRecPtr AccelInfoPtr; 15415fb4814Smrg xf86CursorInfoPtr HWCInfoPtr; 15515fb4814Smrg FBLinearPtr pHWCPtr; 15615fb4814Smrg 15715fb4814Smrg CloseScreenProcPtr CloseScreen; 15815fb4814Smrg ScreenBlockHandlerProcPtr BlockHandler; 159de78e416Smrg 160de78e416Smrg UCHAR jChipType; 161de78e416Smrg UCHAR jDRAMType; 16215fb4814Smrg 16315fb4814Smrg Bool noAccel; 16415fb4814Smrg Bool noHWC; 16515fb4814Smrg Bool MMIO2D; 16615fb4814Smrg int ENGCaps; 16715fb4814Smrg int DBGSelect; 168de78e416Smrg Bool VGA2Clone; 16915fb4814Smrg 17015fb4814Smrg ULONG FBPhysAddr; /* Frame buffer physical address */ 17115fb4814Smrg ULONG MMIOPhysAddr; /* MMIO region physical address */ 17215fb4814Smrg ULONG BIOSPhysAddr; /* BIOS physical address */ 17315fb4814Smrg 17415fb4814Smrg UCHAR *FBVirtualAddr; /* Map of frame buffer */ 17515fb4814Smrg UCHAR *MMIOVirtualAddr; /* Map of MMIO region */ 17615fb4814Smrg 17715fb4814Smrg unsigned long FbMapSize; 17815fb4814Smrg unsigned long MMIOMapSize; 17915fb4814Smrg 18015fb4814Smrg IOADDRESS IODBase; /* Base of PIO memory area */ 18115fb4814Smrg IOADDRESS PIOOffset; 18215fb4814Smrg IOADDRESS RelocateIO; 18315fb4814Smrg 18415fb4814Smrg VIDEOMODE VideoModeInfo; 18515fb4814Smrg ASTRegRec SavedReg; 18615fb4814Smrg CMDQINFO CMDQInfo; 18715fb4814Smrg HWCINFO HWCInfo; 18815fb4814Smrg ULONG ulCMDReg; 18915fb4814Smrg Bool EnableClip; 190de78e416Smrg 191de78e416Smrg int clip_left; 192de78e416Smrg int clip_top; 193de78e416Smrg int clip_right; 194de78e416Smrg int clip_bottom; 19515fb4814Smrg 19615fb4814Smrg} ASTRec, *ASTRecPtr; 19715fb4814Smrg 19815fb4814Smrg#define ASTPTR(p) ((ASTRecPtr)((p)->driverPrivate)) 19915fb4814Smrg 20015fb4814Smrg/* Include Files */ 20115fb4814Smrg#include "ast_mode.h" 20215fb4814Smrg#include "ast_vgatool.h" 20315fb4814Smrg#include "ast_2dtool.h" 20415fb4814Smrg#include "ast_cursor.h" 205