newport.h revision ba0eab60
1/* 2 * Id: newport.h,v 1.4 2000/11/29 20:58:10 agx Exp $ 3 */ 4/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/newport/newport.h,v 1.9 2002/09/30 22:17:55 alanh Exp $ */ 5 6#ifndef __NEWPORT_H__ 7#define __NEWPORT_H__ 8 9/* use 32bpp shadow framebuffer surface instead of 24bpp */ 10#define NEWPORT_USE32BPP 11/* enable accel patch */ 12#define NEWPORT_ACCEL 13 14#ifdef NEWPORT_ACCEL 15#ifndef NEWPORT_USE32BPP 16#define NEWPORT_USE32BPP 17#endif 18#endif 19 20/* 21 * All drivers should include these: 22 */ 23#include "xf86.h" 24#include "xf86_OSproc.h" 25#include "compiler.h" 26#include "xf86Resources.h" 27 28#include "xf86cmap.h" 29 30/* xaa & hardware cursor */ 31#include "xaa.h" 32#include "xaalocal.h" 33#include "xf86Cursor.h" 34 35/* register definitions of the Newport card */ 36#include "newport_regs.h" 37 38#define NEWPORT_BASE_ADDR0 0x1f0f0000 39#define NEWPORT_BASE_OFFSET 0x00400000 40#define NEWPORT_MAX_BOARDS 4 41 42#if 0 43# define DEBUG 1 44#endif 45 46#ifdef DEBUG 47# define TRACE_ENTER(str) ErrorF("newport: " str " %d\n",pScrn->scrnIndex) 48# define TRACE_EXIT(str) ErrorF("newport: " str " done\n") 49# define TRACE(str) ErrorF("newport trace: " str "\n") 50#else 51# define TRACE_ENTER(str) 52# define TRACE_EXIT(str) 53# define TRACE(str) 54#endif 55 56typedef struct { 57 unsigned busID; 58 int bitplanes; 59 Bool NoAccel; 60 /* revision numbers of the various pieces of silicon */ 61 unsigned int board_rev, cmap_rev, rex3_rev, xmap9_rev, bt445_rev; 62 /* shadow copies of frequently used registers */ 63 NewportRegsPtr pNewportRegs; /* Pointer to REX3 registers */ 64 npireg_t drawmode1; /* REX3 drawmode1 common to all drawing operations */ 65 CARD16 vc2ctrl; /* VC2 control register */ 66 67 /* ShadowFB stuff: */ 68 CARD32* ShadowPtr; 69 unsigned long int ShadowPitch; 70 unsigned int Bpp; /* Bytes per pixel */ 71 72 /* HWCursour stuff: */ 73 Bool hwCursor; 74 xf86CursorInfoPtr CursorInfoRec; 75 CARD16 curs_cmap_base; /* MSB of the cursor's cmap */ 76 77 /* wrapped funtions: */ 78 CloseScreenProcPtr CloseScreen; 79 80 /* newport register backups: */ 81 npireg_t txt_drawmode0; /* Rex3 drawmode0 register */ 82 npireg_t txt_drawmode1; /* Rex3 drawmode1 register */ 83 npireg_t txt_wrmask; /* Rex3 write mask register */ 84 npireg_t txt_smask1x; /* Rex3 screen mask 1 registers */ 85 npireg_t txt_smask1y; 86 npireg_t txt_smask2x; /* Rex3 screen mask 2 registers */ 87 npireg_t txt_smask2y; 88 npireg_t txt_clipmode; /* Rex3 clip mode register */ 89 90 CARD16 txt_vc2ctrl; /* VC2 control register */ 91 CARD16 txt_vc2cur_x; /* VC2 hw cursor x location */ 92 CARD16 txt_vc2cur_y; /* VC2 hw cursor x location */ 93 CARD32 txt_vc2cur_data[64]; /* VC2 hw cursor glyph data */ 94 95 CARD8 txt_xmap9_cfg0; /* 0. Xmap9's control register */ 96 CARD8 txt_xmap9_cfg1; /* 1. Xmap9's control register */ 97 CARD8 txt_xmap9_ccmsb; /* cursor cmap msb */ 98 CARD8 txt_xmap9_mi; /* Xmap9s' mode index register */ 99 CARD32 txt_xmap9_mod0; /* Xmap9s' mode 0 register */ 100 101 LOCO txt_colormap[256]; 102 103 /* XAA stuff */ 104 XAAInfoRecPtr pXAAInfoRec; 105 /* writing to these regs causes pipeline stall 106 so be smart and check the shadow before writing it */ 107 unsigned int shadow_drawmode1; 108 unsigned int shadow_colorvram; 109 unsigned int shadow_colorback; 110 unsigned int shadow_xymove; 111 unsigned int shadow_wrmask; 112 unsigned int shadow_clipmode; 113 unsigned int fifoleft; /* number of slots left in fifo */ 114 115 unsigned int shadow_drawmode0; 116 unsigned int shadow_colori; 117 unsigned int shadow_smask0x; 118 unsigned int shadow_smask0y; 119 120 unsigned int setup_drawmode0; 121 unsigned int setup_drawmode1; 122 unsigned char dashline_pat[2048/8]; 123 unsigned int dashline_patlen; 124 125 int clipsx, clipex, clipsy, clipey; 126 int skipleft; 127 128 unsigned int pat8x8[8][8]; 129 130 unsigned int (*Color2Planes)(unsigned int color); 131 132#ifdef RENDER 133 unsigned int uTextureWidth; 134 unsigned int uTextureHeight; 135 unsigned int uTextureSize; 136 unsigned int *pTexture; 137 unsigned int uTextureFlags; 138#endif 139 140 OptionInfoPtr Options; 141} NewportRec, *NewportPtr; 142 143#define NEWPORTPTR(p) ((NewportPtr)((p)->driverPrivate)) 144#define NEWPORTREGSPTR(p) ((NEWPORTPTR(p))->pNewportRegs) 145 146/* Newport_regs.c */ 147unsigned short NewportVc2Get(NewportRegsPtr, unsigned char vc2Ireg); 148void NewportVc2Set(NewportRegsPtr pNewportRegs, unsigned char vc2Ireg, unsigned short val); 149void NewportWait(NewportRegsPtr pNewportRegs); 150void NewportBfwait(NewportRegsPtr pNewportRegs); 151void NewportXmap9SetModeRegister(NewportRegsPtr pNewportRegs, CARD8 address, CARD32 mode); 152CARD32 NewportXmap9GetModeRegister(NewportRegsPtr pNewportRegs, unsigned chip, CARD8 address); 153void NewportBackupRex3( ScrnInfoPtr pScrn); 154void NewportRestoreRex3( ScrnInfoPtr pScrn); 155void NewportBackupXmap9s( ScrnInfoPtr pScrn); 156void NewportRestoreXmap9s( ScrnInfoPtr pScrn); 157void NewportBackupVc2( ScrnInfoPtr pScrn); 158void NewportRestoreVc2( ScrnInfoPtr pScrn); 159void NewportBackupVc2Cursor( ScrnInfoPtr pScrn); 160void NewportRestoreVc2Cursor( ScrnInfoPtr pScrn); 161 162/* newort_cmap.c */ 163void NewportLoadPalette(ScrnInfoPtr pScrn, int numColors, int *indices, 164 LOCO* colors, VisualPtr pVisual); 165void NewportRestorePalette(ScrnInfoPtr pScrn); 166void NewportBackupPalette(ScrnInfoPtr pScrn); 167void NewportCmapSetRGB( NewportRegsPtr pNewportRegs, unsigned short addr, LOCO color); 168 169/* newport_shadow.c */ 170void NewportRefreshArea8(ScrnInfoPtr pScrn, int num, BoxPtr pbox); 171void NewportRefreshArea24(ScrnInfoPtr pScrn, int num, BoxPtr pbox); 172 173/* newport_cursor.c */ 174Bool NewportHWCursorInit(ScreenPtr pScreen); 175void NewportLoadCursorImage(ScrnInfoPtr pScrn, unsigned char *bits); 176 177#endif /* __NEWPORT_H__ */ 178