lg.h revision 76888252
176888252Smrg/*
276888252Smrg * Common strutures and function for CL-GD546x -- The Laguna family
376888252Smrg *
476888252Smrg * lg.h
576888252Smrg *
676888252Smrg * (c) 1998 Corin Anderson.
776888252Smrg *          corina@the4cs.com
876888252Smrg *          Tukwila, WA
976888252Smrg *
1076888252Smrg *  Inspired by cir.h
1176888252Smrg */
1276888252Smrg
1376888252Smrg/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/cirrus/lg.h,v 1.11 2000/12/06 15:35:16 eich Exp $ */
1476888252Smrg
1576888252Smrg#ifndef LG_H
1676888252Smrg#define LG_H
1776888252Smrg#define LG_DEBUG
1876888252Smrg
1976888252Smrgextern ScrnInfoPtr LgProbe(int entity);
2076888252Smrgextern const OptionInfoRec *	LgAvailableOptions(int chipid);
2176888252Smrg
2276888252Smrg# ifdef _LG_PRIVATE_
2376888252Smrg
2476888252Smrg/* Saved registers that are not part of the core VGA */
2576888252Smrg/* CRTC >= 0x19; Sequencer >= 0x05; Graphics >= 0x09; Attribute >= 0x15 */
2676888252Smrg	/* CR regs */
2776888252Smrgenum {
2876888252Smrg	/* CR regs */
2976888252Smrg	CR1A,
3076888252Smrg	CR1B,
3176888252Smrg	CR1D,
3276888252Smrg	CR1E,
3376888252Smrg	/* SR regs */
3476888252Smrg	SR07,
3576888252Smrg	SR0E,
3676888252Smrg	SR12,
3776888252Smrg	SR13,
3876888252Smrg	SR1E,
3976888252Smrg	/* Must be last! */
4076888252Smrg	LG_LAST_REG
4176888252Smrg};
4276888252Smrg
4376888252Smrg#undef FORMAT
4476888252Smrg
4576888252Smrgtypedef struct {
4676888252Smrg	unsigned char ExtVga[LG_LAST_REG];
4776888252Smrg
4876888252Smrg	/* Laguna regs */
4976888252Smrg	CARD8 TILE, BCLK;
5076888252Smrg	CARD16 FORMAT, DTTC, TileCtrl, CONTROL;
5176888252Smrg	CARD32 VSC;
5276888252Smrg} LgRegRec, *LgRegPtr;
5376888252Smrg
5476888252Smrgtypedef struct {
5576888252Smrg	int tilesPerLine;	/* Number of tiles per line */
5676888252Smrg	int pitch;			/* Display pitch, in bytes */
5776888252Smrg	int width;			/* Tile width.  0 = 128 byte  1 = 256 byte */
5876888252Smrg} LgLineDataRec, *LgLineDataPtr;
5976888252Smrg
6076888252Smrg
6176888252Smrg/* lg_driver.c */
6276888252Smrgextern LgLineDataRec LgLineData[];
6376888252Smrg
6476888252Smrg/* lg_xaa.c */
6576888252Smrgextern Bool LgXAAInit(ScreenPtr pScreen);
6676888252Smrg
6776888252Smrg/* lg_hwcurs.c */
6876888252Smrgextern Bool LgHWCursorInit(ScreenPtr pScreen);
6976888252Smrgextern void LgHideCursor(ScrnInfoPtr pScrn);
7076888252Smrgextern void LgShowCursor(ScrnInfoPtr pScrn);
7176888252Smrg
7276888252Smrg/* lg_i2c.c */
7376888252Smrgextern Bool LgI2CInit(ScrnInfoPtr pScrn);
7476888252Smrg
7576888252Smrg#define memrb(off) MMIO_IN8(pCir->IOBase,off)
7676888252Smrg#define memrw(off) MMIO_IN16(pCir->IOBase,off)
7776888252Smrg#define memrl(off) MMIO_IN32(pCir->IOBase,off)
7876888252Smrg#define memwb(off,val) MMIO_OUT8(pCir->IOBase,off,val)
7976888252Smrg#define memww(off,val) MMIO_OUT16(pCir->IOBase,off,val)
8076888252Smrg#define memwl(off,val) MMIO_OUT32(pCir->IOBase,off,val)
8176888252Smrg
8276888252Smrg/* Card-specific driver information */
8376888252Smrg#define LGPTR(p) ((LgPtr)((p)->chip.lg))
8476888252Smrg
8576888252Smrgtypedef struct lgRec {
8676888252Smrg	CARD32		HWCursorAddr;
8776888252Smrg	int			HWCursorImageX;
8876888252Smrg	int			HWCursorImageY;
8976888252Smrg	int			HWCursorTileWidth;
9076888252Smrg	int			HWCursorTileHeight;
9176888252Smrg
9276888252Smrg	int			lineDataIndex;
9376888252Smrg
9476888252Smrg	int			memInterleave;
9576888252Smrg
9676888252Smrg	LgRegRec	SavedReg;
9776888252Smrg	LgRegRec	ModeReg;
9876888252Smrg
9976888252Smrg	CARD32		oldBitmask;
10076888252Smrg	Bool		blitTransparent;
10176888252Smrg	int			blitYDir;
10276888252Smrg} LgRec, *LgPtr;
10376888252Smrg
10476888252Smrg# endif /* _LG_PRIVATE_ */
10576888252Smrg#endif /* LG_H */
10676888252Smrg
10776888252Smrg
10876888252Smrg
10976888252Smrg
11076888252Smrg
111