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