ast.h revision cf503b78
1/* 2 * Copyright (c) 2005 ASPEED Technology Inc. 3 * 4 * Permission to use, copy, modify, distribute, and sell this software and its 5 * documentation for any purpose is hereby granted without fee, provided that 6 * the above copyright notice appear in all copies and that both that 7 * copyright notice and this permission notice appear in supporting 8 * documentation, and that the name of the authors not be used in 9 * advertising or publicity pertaining to distribution of the software without 10 * specific, written prior permission. The authors makes no representations 11 * about the suitability of this software for any purpose. It is provided 12 * "as is" without express or implied warranty. 13 * 14 * THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO 16 * EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR 17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 18 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 19 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 20 * PERFORMANCE OF THIS SOFTWARE. 21 */ 22 23#ifndef _AST_H_ 24# define _AST_H_ 25 26/* Compiler Options */ 27#define Accel_2D 28/* #define MMIO_2D */ 29#define HWC 30#define AstVideo 31/* #define PATCH_ABI_VERSION */ 32#define Support_ShadowFB 33 34#include <string.h> 35#include <stdlib.h> 36 37#ifdef HAVE_XAA_H 38#include "xaa.h" 39#endif 40 41#include "ast_pcirename.h" 42 43#include "compat-api.h" 44 45#ifdef Support_ShadowFB 46#include "shadow.h" 47#endif 48 49/* Vendor & Device Info */ 50#ifndef PCI_VENDOR_AST 51#define PCI_VENDOR_AST 0x1A03 52#endif 53 54#ifndef PCI_CHIP_AST2000 55#define PCI_CHIP_AST2000 0x2000 56#endif 57 58#ifndef PCI_CHIP_AST2100 59#define PCI_CHIP_AST2100 0x2010 60#endif 61 62#ifndef PCI_CHIP_AST1180 63#define PCI_CHIP_AST1180 0x1180 64#endif 65 66typedef enum _CHIP_ID { 67 VGALegacy, 68 AST2000, 69 AST2100, 70 AST1100, 71 AST2200, 72 AST2150, 73 AST2300, 74 AST2400, 75 AST1180 76} CHIP_ID; 77 78typedef enum _TX_CHIPTYPE { 79 Tx_NONE, 80 Tx_Sil164, 81 Tx_Ite66121, 82 Tx_DP501 83} TX_CHIPTYPE; 84 85/* AST REC Info */ 86#define AST_NAME "AST" 87#define AST_DRIVER_NAME "ast" 88#define AST_MAJOR_VERSION PACKAGE_VERSION_MAJOR 89#define AST_MINOR_VERSION PACKAGE_VERSION_MINOR 90#define AST_PATCH_VERSION PACKAGE_VERSION_PATCHLEVEL 91#define AST_VERSION \ 92 ((AST_MAJOR_VERSION << 20) | (AST_MINOR_VERSION << 10) | AST_PATCH_VERSION) 93 94/* Customized Info */ 95#define DEFAULT_VIDEOMEM_SIZE 0x00800000 96#define DEFAULT_MMIO_SIZE 0x00020000 97#define DEFAULT_CMDQ_SIZE 0x00100000 98#define MIN_CMDQ_SIZE 0x00040000 99#define CMD_QUEUE_GUARD_BAND 0x00000020 100#define DEFAULT_HWC_NUM 0x00000002 101 102/* Customized Info. for DVO */ 103#define HDMI_I2C_CHANNEL 1 104#define HDMI_TX_I2C_SLAVE_ADDR 0x98 105 106/* Patch Info */ 107#define ABI_VIDEODRV_VERSION_PATCH SET_ABI_VERSION(0, 5) 108 109/* Data Type Definition */ 110typedef INT32 LONG; 111typedef CARD8 UCHAR; 112typedef CARD16 USHORT; 113typedef CARD32 ULONG; 114 115/* Data Structure Definition */ 116typedef struct _ASTRegRec { 117 118 UCHAR ExtCRTC[0x50]; 119 120 UCHAR MISC; 121 UCHAR SEQ[4]; 122 UCHAR CRTC[25]; 123 UCHAR AR[20]; 124 UCHAR GR[9]; 125 UCHAR DAC[256][3]; 126 127 ULONG GFX[12]; 128 129 UCHAR REGA4; 130 ULONG ENG8044; 131} ASTRegRec, *ASTRegPtr; 132 133typedef struct _VIDEOMODE { 134 135 int ScreenWidth; 136 int ScreenHeight; 137 int bitsPerPixel; 138 int ScreenPitch; 139 140} VIDEOMODE, *PVIDEOMODE; 141 142typedef struct { 143 144 ULONG ulCMDQSize; 145 ULONG ulCMDQType; 146 147 ULONG ulCMDQOffsetAddr; 148 UCHAR *pjCMDQVirtualAddr; 149 150 UCHAR *pjCmdQBasePort; 151 UCHAR *pjWritePort; 152 UCHAR *pjReadPort; 153 UCHAR *pjEngStatePort; 154 155 ULONG ulCMDQMask; 156 ULONG ulCurCMDQueueLen; 157 158 ULONG ulWritePointer; 159 ULONG ulReadPointer; 160 161 ULONG ulReadPointer_OK; /* for Eng_DBGChk */ 162 163} CMDQINFO, *PCMDQINFO; 164 165typedef struct { 166 167 int HWC_NUM; 168 int HWC_NUM_Next; 169 170 ULONG ulHWCOffsetAddr; 171 UCHAR *pjHWCVirtualAddr; 172 173 USHORT cursortype; 174 USHORT width; 175 USHORT height; 176 USHORT offset_x; 177 USHORT offset_y; 178 ULONG fg; 179 ULONG bg; 180 181 UCHAR cursorpattern[1024]; 182 183} HWCINFO, *PHWCINFO; 184 185typedef struct _ASTPortPrivRec{ 186 FBLinearPtr linear; 187 FBAreaPtr fbAreaPtr; 188 int fbSize; 189 CARD32 bufAddr[2]; 190 191 unsigned char currentBuf; 192 193 short drw_x, drw_y, drw_w, drw_h; 194 short src_x, src_y, src_w, src_h; 195 int id; 196 short srcPitch, height; 197 198 INT32 brightness; 199 INT32 contrast; 200 INT32 saturation; 201 INT32 hue; 202 203 INT32 gammaR; 204 INT32 gammaG; 205 INT32 gammaB; 206 207 RegionRec clip; 208 CARD32 colorKey; 209 210 CARD32 videoStatus; 211 Time offTime; 212 Time freeTime; 213 214 CARD32 displayMode; 215 216 int pitch; 217 int offset; 218} ASTPortPrivRec, *ASTPortPrivPtr; 219 220typedef struct _ASTRec { 221 222 EntityInfoPtr pEnt; 223#ifndef XSERVER_LIBPCIACCESS 224 pciVideoPtr PciInfo; 225 PCITAG PciTag; 226#else 227 struct pci_device *PciInfo; 228#endif 229 230 OptionInfoPtr Options; 231 DisplayModePtr ModePtr; 232 FBLinearPtr pCMDQPtr; 233#ifdef HAVE_XAA_H 234 XAAInfoRecPtr AccelInfoPtr; 235#endif 236 xf86CursorInfoPtr HWCInfoPtr; 237 FBLinearPtr pHWCPtr; 238 239 CloseScreenProcPtr CloseScreen; 240 ScreenBlockHandlerProcPtr BlockHandler; 241 242 UCHAR jChipType; 243 UCHAR jDRAMType; 244 ULONG ulDRAMBusWidth ; 245 ULONG ulDRAMSize; 246 ULONG ulVRAMSize; 247 ULONG ulVRAMBase; 248 ULONG ulMCLK; 249 250 Bool noAccel; 251 Bool noHWC; 252 Bool MMIO2D; 253 int ENGCaps; 254 int DBGSelect; 255 Bool VGA2Clone; 256 Bool SupportWideScreen; 257 258 ULONG FBPhysAddr; /* Frame buffer physical address */ 259 ULONG MMIOPhysAddr; /* MMIO region physical address */ 260 ULONG BIOSPhysAddr; /* BIOS physical address */ 261 262 UCHAR *FBVirtualAddr; /* Map of frame buffer */ 263 UCHAR *MMIOVirtualAddr; /* Map of MMIO region */ 264 265 unsigned long FbMapSize; 266 unsigned long MMIOMapSize; 267 268#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 12 269 IOADDRESS RelocateIO; 270#else 271 int RelocateIO; 272#endif 273 274 VIDEOMODE VideoModeInfo; 275 ASTRegRec SavedReg; 276 CMDQINFO CMDQInfo; 277 HWCINFO HWCInfo; 278 ULONG ulCMDReg; 279 Bool EnableClip; 280 281 int clip_left; 282 int clip_top; 283 int clip_right; 284 int clip_bottom; 285 286 int mon_h_active; /* Monitor Info. */ 287 int mon_v_active; 288 289 UCHAR jTxChipType; /* 3rd TX */ 290 UCHAR DP501_MaxVCLK; 291 UCHAR *pDP501FWBufferVirtualAddress; 292 293#ifdef AstVideo 294 XF86VideoAdaptorPtr adaptor; 295 Atom xvBrightness, xvContrast, xvColorKey, xvHue, xvSaturation; 296 Atom xvGammaRed, xvGammaGreen, xvGammaBlue; 297#endif 298 299#ifdef Support_ShadowFB 300 Bool shadowFB; 301 Bool shadowFB_validation; 302 void *shadow; 303 ShadowUpdateProc update; 304 ShadowWindowProc window; 305 CreateScreenResourcesProcPtr CreateScreenResources; 306#endif 307 308} ASTRec, *ASTRecPtr, *ASTPtr; 309 310#define ASTPTR(p) ((ASTRecPtr)((p)->driverPrivate)) 311 312/* ast_vgatool.c */ 313extern Bool bASTIsVGAEnabled(ScrnInfoPtr pScrn); 314extern Bool ASTGetVGA2EDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer); 315extern void ASTDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode, int flags); 316extern void vASTLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors, VisualPtr pVisual); 317extern void ASTBlankScreen(ScrnInfoPtr pScreen, Bool unblack); 318extern void vAST1000DisplayOn(ScrnInfoPtr pScrn); 319extern void vAST1000DisplayOff(ScrnInfoPtr pScrn); 320extern void vASTSetStartAddressCRT1(ASTRecPtr pAST, ULONG base); 321extern void ASTGetScratchOptions(ScrnInfoPtr pScrn); 322void ASTGetChipType(ScrnInfoPtr pScrn); 323ULONG ASTGetMaxDCLK(ScrnInfoPtr pScrn); 324ULONG ASTGetVRAMInfo(ScrnInfoPtr pScrn); 325void ASTGetDRAMInfo(ScrnInfoPtr pScrn); 326Bool bASTRegInit(ScrnInfoPtr pScrn); 327void vASTOpenKey(ScrnInfoPtr pScrn); 328Bool ASTReadEDID_M68K(ScrnInfoPtr pScrn, BYTE *pEDIDData); 329UCHAR ASTGetLinkMaxCLK(ScrnInfoPtr pScrn); 330Bool ASTGetVGAEDID(ScrnInfoPtr pScrn, unsigned char *pEDIDBuffer); 331Bool bASTInitAST1180(ScrnInfoPtr pScrn); 332void ASTGetAST1180DRAMInfo(ScrnInfoPtr pScrn); 333void vASTEnableVGAMMIO(ScrnInfoPtr pScrn); 334Bool ASTInitVGA(ScrnInfoPtr pScrn, ULONG Flags); 335 336/* ast_2dtool.c */ 337void vASTWaitEngIdle(ScrnInfoPtr pScrn, ASTRecPtr pAST); 338UCHAR *pASTjRequestCMDQ(ASTRecPtr pAST, ULONG ulDataLen); 339Bool bASTEnable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST); 340void vASTDisable2D(ScrnInfoPtr pScrn, ASTRecPtr pAST); 341 342/* ast_cursor.c */ 343#ifdef HWC 344Bool ASTCursorInit(ScreenPtr pScreen); 345Bool bASTInitHWC(ScrnInfoPtr pScrn, ASTRecPtr pAST); 346void ASTDisableHWC(ScrnInfoPtr pScrn); 347#endif 348 349/* ast_mode.c */ 350Bool ASTSetMode(ScrnInfoPtr pScrn, DisplayModePtr mode); 351 352/* ast_accel.c */ 353#ifdef HAVE_XAA_H 354Bool ASTAccelInit(ScreenPtr pScreen); 355#endif 356void ASTDisplayVideo(ScrnInfoPtr pScrn, ASTPortPrivPtr pPriv, RegionPtr clipBoxes, int id); 357 358/* ast_tool.c */ 359Bool ASTMapMem(ScrnInfoPtr pScrn); 360Bool ASTUnmapMem(ScrnInfoPtr pScrn); 361Bool ASTMapMMIO(ScrnInfoPtr pScrn); 362void ASTUnmapMMIO(ScrnInfoPtr pScrn); 363 364#endif /* _AST_H_ */ 365