#ifndef __NEWPORT_H__
#define __NEWPORT_H__
#include "xf86.h"
#include "xf86_OSproc.h"
#include "xf86_ansic.h"
#include "compiler.h"
#include "xf86Resources.h"
#include "xf86cmap.h"
#include "xaa.h"
#include "xf86Cursor.h"
#include "newport_regs.h"
#define NEWPORT_BASE_ADDR0 0x1f0f0000
#define NEWPORT_BASE_OFFSET 0x00400000
#define NEWPORT_MAX_BOARDS 4
#if 0
# define DEBUG 1
#endif
#ifdef DEBUG
# define TRACE_ENTER(str) ErrorF("newport: " str " %d\n",pScrn->scrnIndex)
# define TRACE_EXIT(str) ErrorF("newport: " str " done\n")
# define TRACE(str) ErrorF("newport trace: " str "\n")
#else
# define TRACE_ENTER(str)
# define TRACE_EXIT(str)
# define TRACE(str)
#endif
typedef struct {
unsigned busID;
int bitplanes;
unsigned int board_rev, cmap_rev, rex3_rev, xmap9_rev, bt445_rev;
NewportRegsPtr pNewportRegs;
npireg_t drawmode1;
CARD16 vc2ctrl;
CARD32* ShadowPtr;
unsigned long int ShadowPitch;
unsigned int Bpp;
Bool hwCursor;
xf86CursorInfoPtr CursorInfoRec;
CARD16 curs_cmap_base;
CloseScreenProcPtr CloseScreen;
npireg_t txt_drawmode0;
npireg_t txt_drawmode1;
npireg_t txt_wrmask;
npireg_t txt_smask1x;
npireg_t txt_smask1y;
npireg_t txt_smask2x;
npireg_t txt_smask2y;
npireg_t txt_clipmode;
CARD16 txt_vc2ctrl;
CARD16 txt_vc2cur_x;
CARD16 txt_vc2cur_y;
CARD32 txt_vc2cur_data[64];
CARD8 txt_xmap9_cfg0;
CARD8 txt_xmap9_cfg1;
CARD8 txt_xmap9_ccmsb;
CARD8 txt_xmap9_mi;
CARD32 txt_xmap9_mod0;
LOCO txt_colormap[256];
OptionInfoPtr Options;
} NewportRec, *NewportPtr;
#define NEWPORTPTR(p) ((NewportPtr)((p)->driverPrivate))
#define NEWPORTREGSPTR(p) ((NEWPORTPTR(p))->pNewportRegs)
unsigned short NewportVc2Get(NewportRegsPtr, unsigned char vc2Ireg);
void NewportVc2Set(NewportRegsPtr pNewportRegs, unsigned char vc2Ireg, unsigned short val);
void NewportWait(NewportRegsPtr pNewportRegs);
void NewportBfwait(NewportRegsPtr pNewportRegs);
void NewportXmap9SetModeRegister(NewportRegsPtr pNewportRegs, CARD8 address, CARD32 mode);
CARD32 NewportXmap9GetModeRegister(NewportRegsPtr pNewportRegs, unsigned chip, CARD8 address);
void NewportBackupRex3( ScrnInfoPtr pScrn);
void NewportRestoreRex3( ScrnInfoPtr pScrn);
void NewportBackupXmap9s( ScrnInfoPtr pScrn);
void NewportRestoreXmap9s( ScrnInfoPtr pScrn);
void NewportBackupVc2( ScrnInfoPtr pScrn);
void NewportRestoreVc2( ScrnInfoPtr pScrn);
void NewportBackupVc2Cursor( ScrnInfoPtr pScrn);
void NewportRestoreVc2Cursor( ScrnInfoPtr pScrn);
void NewportLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices,
LOCO* colors, VisualPtr pVisual);
void NewportRestorePalette(ScrnInfoPtr pScrn);
void NewportBackupPalette(ScrnInfoPtr pScrn);
void NewportCmapSetRGB( NewportRegsPtr pNewportRegs, unsigned short addr, LOCO color);
void NewportRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
void NewportRefreshArea24(ScrnInfoPtr pScrn, int num, BoxPtr pbox);
Bool NewportHWCursorInit(ScreenPtr pScreen);
void NewportLoadCursorImage(ScrnInfoPtr pScrn, unsigned char *bits);
#endif