176888252Smrg/* (c) Itai Nahshon */
276888252Smrg
376888252Smrg#ifndef ALP_H
476888252Smrg#define ALP_H
576888252Smrg
676888252Smrgextern ScrnInfoPtr AlpProbe(int entity);
776888252Smrgextern const OptionInfoRec *	AlpAvailableOptions(int chipid);
876888252Smrg
976888252Smrg# ifdef _ALP_PRIVATE_
1076888252Smrg/* Saved registers that are not part of the core VGA */
1176888252Smrg/* CRTC >= 0x19; Sequencer >= 0x05; Graphics >= 0x09; Attribute >= 0x15 */
1276888252Smrg
1376888252Smrgenum {
1476888252Smrg	/* CR regs */
1576888252Smrg	CR1A,
1676888252Smrg	CR1B,
1776888252Smrg	CR1D,
1876888252Smrg	/* SR regs */
1976888252Smrg	SR07,
2076888252Smrg	SR0E,
2176888252Smrg	SR12,
2276888252Smrg	SR13,
2376888252Smrg	SR17,
2476888252Smrg	SR1E,
2576888252Smrg	SR21,
2676888252Smrg	SR2D,
2776888252Smrg	/* GR regs */
2876888252Smrg	GR17,
2976888252Smrg	GR18,
3076888252Smrg	/* HDR */
3176888252Smrg	HDR,
3276888252Smrg	/* Must be last! */
3376888252Smrg	CIR_NSAVED
3476888252Smrg};
3576888252Smrg
3676888252Smrgtypedef enum {LCD_NONE, LCD_DUAL_MONO, LCD_UNKNOWN, LCD_DSTN, LCD_TFT} LCDType;
3776888252Smrg
3876888252Smrgtypedef struct {
3976888252Smrg	unsigned char	ExtVga[CIR_NSAVED];
4076888252Smrg} AlpRegRec, *AlpRegPtr;
4176888252Smrg
4276888252Smrgextern Bool AlpHWCursorInit(ScreenPtr pScreen, int size);
4363847c39Smrg#ifdef HAVE_XAA_H
4476888252Smrgextern Bool AlpXAAInit(ScreenPtr pScreen);
4576888252Smrgextern Bool AlpXAAInitMMIO(ScreenPtr pScreen);
4663847c39Smrg#endif
4776888252Smrgextern Bool AlpDGAInit(ScreenPtr pScreen);
4876888252Smrgextern Bool AlpI2CInit(ScrnInfoPtr pScrn);
4976888252Smrg
5076888252Smrg/* Card-specific driver information */
5176888252Smrg#define ALPPTR(p) ((AlpPtr)((p)->chip.alp))
5276888252Smrg
5376888252Smrgtypedef struct alpRec {
5476888252Smrg	unsigned char * HWCursorBits;
5576888252Smrg	unsigned char *	CursorBits;
5676888252Smrg
5776888252Smrg	AlpRegRec		SavedReg;
5876888252Smrg	AlpRegRec		ModeReg;
5976888252Smrg        LCDType                 lcdType;
6076888252Smrg        int                     lcdWidth, lcdHeight;
6176888252Smrg        int                 CursorWidth;
6276888252Smrg        int                 CursorHeight;
6376888252Smrg        int                 waitMsk;
6476888252Smrg        int                 scanlineDest;
6576888252Smrg        int                 scanlineCount;
6676888252Smrg        int                 scanlineWidth;
6776888252Smrg
6876888252Smrg        int                 SubsequentColorExpandScanlineDest;
6976888252Smrg        int                 SubsequentColorExpandScanlineByteWidth;
7076888252Smrg        int                 SubsequentColorExpandScanlineDWordWidth;
7176888252Smrg
7276888252Smrg        /* Offset into framebuffer of a 8-byte scratch area for fills */
7376888252Smrg        CARD32 monoPattern8x8;
7476888252Smrg
7576888252Smrg        Bool                autoStart;
7676888252Smrg
7776888252Smrg	/* MMIO Base for BitBLT operation. This is
7876888252Smrg	   IOBase for 5446 and 7548, IOBase+0x100 for 5480 */
7976888252Smrg	unsigned char *	    BLTBase;
8076888252Smrg        CARD32              transRop;
8176888252Smrg/* XXX For XF86Config based mem configuration */
8276888252Smrg	CARD32			sr0f, sr17;
8376888252Smrg} AlpRec, *AlpPtr;
8476888252Smrg
8576888252Smrg# endif /* _ALP_PRIVATE_ */
8676888252Smrg#endif /* ALP_H */
8776888252Smrg
88