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