ast.h revision 15fb4814
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
2615fb4814Smrg/* Compiler Options */
2715fb4814Smrg#define	Accel_2D
2815fb4814Smrg/* #define MMIO_2D */
2915fb4814Smrg#define HWC
3015fb4814Smrg
3115fb4814Smrg/* Vendor & Device Info */
3215fb4814Smrg#ifndef PCI_VENDOR_AST
3315fb4814Smrg#define PCI_VENDOR_AST			0x1A03
3415fb4814Smrg#endif
3515fb4814Smrg
3615fb4814Smrg#ifndef	PCI_CHIP_AST2000
3715fb4814Smrg#define PCI_CHIP_AST2000		0x2000
3815fb4814Smrg#endif
3915fb4814Smrg
4015fb4814Smrg/* AST REC Info */
4115fb4814Smrg#define AST_NAME 			"AST"
4215fb4814Smrg#define AST_DRIVER_NAME 		"ast"
4315fb4814Smrg#define AST_MAJOR_VERSION 		0
4415fb4814Smrg#define AST_MINOR_VERSION 		81
4515fb4814Smrg#define AST_PATCH_VERSION		0
4615fb4814Smrg#define AST_VERSION	\
4715fb4814Smrg        ((AST_MAJOR_VERSION << 20) | (AST_MINOR_VERSION << 10) | AST_PATCH_VERSION)
4815fb4814Smrg
4915fb4814Smrg/* Customized Info */
5015fb4814Smrg#define DEFAULT_VIDEOMEM_SIZE		0x00800000
5115fb4814Smrg#define DEFAULT_MMIO_SIZE		0x00020000
5215fb4814Smrg#define DEFAULT_CMDQ_SIZE		0x00100000
5315fb4814Smrg#define MIN_CMDQ_SIZE			0x00040000
5415fb4814Smrg#define CMD_QUEUE_GUARD_BAND    	0x00000020
5515fb4814Smrg#define DEFAULT_HWC_NUM			0x00000002
5615fb4814Smrg
5715fb4814Smrg/* Data Type Definition */
5815fb4814Smrgtypedef INT32  		LONG;
5915fb4814Smrgtypedef CARD8   	UCHAR;
6015fb4814Smrgtypedef CARD16  	USHORT;
6115fb4814Smrgtypedef CARD32  	ULONG;
6215fb4814Smrg
6315fb4814Smrg/* Data Structure Definition */
6415fb4814Smrgtypedef struct _ASTRegRec {
6515fb4814Smrg    UCHAR 	ExtCRTC[0x50];
6615fb4814Smrg
6715fb4814Smrg} ASTRegRec, *ASTRegPtr;
6815fb4814Smrg
6915fb4814Smrgtypedef struct _VIDEOMODE {
7015fb4814Smrg
7115fb4814Smrg    int			ScreenWidth;
7215fb4814Smrg    int			ScreenHeight;
7315fb4814Smrg    int			bitsPerPixel;
7415fb4814Smrg    int			ScreenPitch;
7515fb4814Smrg
7615fb4814Smrg} VIDEOMODE, *PVIDEOMODE;
7715fb4814Smrg
7815fb4814Smrgtypedef struct {
7915fb4814Smrg
8015fb4814Smrg    ULONG		ulCMDQSize;
8115fb4814Smrg    ULONG		ulCMDQType;
8215fb4814Smrg
8315fb4814Smrg    ULONG		ulCMDQOffsetAddr;
8415fb4814Smrg    UCHAR       	*pjCMDQVirtualAddr;
8515fb4814Smrg
8615fb4814Smrg    UCHAR       	*pjCmdQBasePort;
8715fb4814Smrg    UCHAR       	*pjWritePort;
8815fb4814Smrg    UCHAR       	*pjReadPort;
8915fb4814Smrg    UCHAR       	*pjEngStatePort;
9015fb4814Smrg
9115fb4814Smrg    ULONG		ulCMDQMask;
9215fb4814Smrg    ULONG		ulCurCMDQueueLen;
9315fb4814Smrg
9415fb4814Smrg    ULONG		ulWritePointer;
9515fb4814Smrg    ULONG		ulReadPointer;
9615fb4814Smrg
9715fb4814Smrg    ULONG		ulReadPointer_OK;		/* for Eng_DBGChk */
9815fb4814Smrg
9915fb4814Smrg} CMDQINFO, *PCMDQINFO;
10015fb4814Smrg
10115fb4814Smrgtypedef struct {
10215fb4814Smrg
10315fb4814Smrg    int			HWC_NUM;
10415fb4814Smrg    int			HWC_NUM_Next;
10515fb4814Smrg
10615fb4814Smrg    ULONG		ulHWCOffsetAddr;
10715fb4814Smrg    UCHAR       	*pjHWCVirtualAddr;
10815fb4814Smrg
10915fb4814Smrg    USHORT		cursortype;
11015fb4814Smrg    USHORT		width;
11115fb4814Smrg    USHORT   		height;
11215fb4814Smrg    USHORT		offset_x;
11315fb4814Smrg    USHORT   		offset_y;
11415fb4814Smrg    ULONG		fg;
11515fb4814Smrg    ULONG		bg;
11615fb4814Smrg
11715fb4814Smrg
11815fb4814Smrg} HWCINFO, *PHWCINFO;
11915fb4814Smrg
12015fb4814Smrgtypedef struct _ASTRec {
12115fb4814Smrg
12215fb4814Smrg    EntityInfoPtr 	pEnt;
12315fb4814Smrg    pciVideoPtr 	PciInfo;
12415fb4814Smrg    PCITAG 		PciTag;
12515fb4814Smrg
12615fb4814Smrg    OptionInfoPtr 	Options;
12715fb4814Smrg    DisplayModePtr      ModePtr;
12815fb4814Smrg    FBLinearPtr 	pCMDQPtr;
12915fb4814Smrg    XAAInfoRecPtr	AccelInfoPtr;
13015fb4814Smrg    xf86CursorInfoPtr   HWCInfoPtr;
13115fb4814Smrg    FBLinearPtr 	pHWCPtr;
13215fb4814Smrg
13315fb4814Smrg    CloseScreenProcPtr CloseScreen;
13415fb4814Smrg    ScreenBlockHandlerProcPtr BlockHandler;
13515fb4814Smrg
13615fb4814Smrg    Bool 		noAccel;
13715fb4814Smrg    Bool 		noHWC;
13815fb4814Smrg    Bool 		MMIO2D;
13915fb4814Smrg    int			ENGCaps;
14015fb4814Smrg    int			DBGSelect;
14115fb4814Smrg
14215fb4814Smrg    ULONG     		FBPhysAddr;		/* Frame buffer physical address     */
14315fb4814Smrg    ULONG     		MMIOPhysAddr;     	/* MMIO region physical address      */
14415fb4814Smrg    ULONG     		BIOSPhysAddr;     	/* BIOS physical address             */
14515fb4814Smrg
14615fb4814Smrg    UCHAR     		*FBVirtualAddr;   	/* Map of frame buffer               */
14715fb4814Smrg    UCHAR     		*MMIOVirtualAddr; 	/* Map of MMIO region                */
14815fb4814Smrg
14915fb4814Smrg    unsigned long	FbMapSize;
15015fb4814Smrg    unsigned long	MMIOMapSize;
15115fb4814Smrg
15215fb4814Smrg    IOADDRESS		IODBase;        	/* Base of PIO memory area */
15315fb4814Smrg    IOADDRESS		PIOOffset;
15415fb4814Smrg    IOADDRESS		RelocateIO;
15515fb4814Smrg
15615fb4814Smrg    VIDEOMODE 		VideoModeInfo;
15715fb4814Smrg    ASTRegRec           SavedReg;
15815fb4814Smrg    CMDQINFO		CMDQInfo;
15915fb4814Smrg    HWCINFO    		HWCInfo;
16015fb4814Smrg    ULONG		ulCMDReg;
16115fb4814Smrg    Bool		EnableClip;
16215fb4814Smrg
16315fb4814Smrg} ASTRec, *ASTRecPtr;
16415fb4814Smrg
16515fb4814Smrg#define ASTPTR(p) ((ASTRecPtr)((p)->driverPrivate))
16615fb4814Smrg
16715fb4814Smrg/* Include Files */
16815fb4814Smrg#include "ast_mode.h"
16915fb4814Smrg#include "ast_vgatool.h"
17015fb4814Smrg#include "ast_2dtool.h"
17115fb4814Smrg#include "ast_cursor.h"
172