1/* 2 * Number Nine I128 functions 3 * 4 * Copyright 1996 The XFree86 Project, Inc. 5 * 6 * Author 7 * Robin Cutshaw 8 * robin@XFree86.Org 9 */ 10 11#ifndef I128_H 12#define I128_H 13 14#include "i128pcirename.h" 15 16#include "compiler.h" 17#ifdef HAVE_XAA_H 18#include "xaa.h" 19#endif 20#include "exa.h" 21#include "xf86Cursor.h" 22#include "vgaHW.h" 23#include "colormapst.h" 24#include "xf86DDC.h" 25#include "i128reg.h" 26 27#include "compat-api.h" 28struct source_format { 29 int render_format; 30 int i128_format; 31 int swap_flags; 32 int ignore_alpha; 33}; 34 35/* Card-specific driver information */ 36 37#define I128PTR(p) ((I128Ptr)((p)->driverPrivate)) 38 39#define PCI_VENDOR_NUMNINE 0x105D 40#define PCI_CHIP_I128 0x2309 41#define PCI_CHIP_I128_2 0x2339 42#define PCI_CHIP_I128_T2R 0x493D 43#define PCI_CHIP_I128_T2R4 0x5348 44 45typedef struct { 46 EntityInfoPtr pEnt; 47 pciVideoPtr PciInfo; 48#ifndef XSERVER_LIBPCIACCESS 49 PCITAG PciTag; 50 xf86AccessRec Access; 51#endif 52 int Chipset; 53 int ChipRev; 54 Bool Primary; 55 56 /* Ramdac specific */ 57 int RamdacType; 58 Bool DAC8Bit; 59 Bool DACSyncOnGreen; 60 int hotX; 61 int hotY; 62 Bool HWCursor; 63 Bool BlockCursor; 64 Bool ReloadCursor; 65 Bool CursorNeedsInit; 66 int CursorStartX; 67 int CursorStartY; 68 int CursorLines; 69 int AdjustCursorXPos; 70 int CursGeneration; 71 72 /* layout specific */ 73 int bitsPerPixel; 74 int depth; 75 rgb weight; 76 int displayWidth; 77 int displayOffset; 78 DisplayModePtr mode; 79 80 /* accel specific */ 81 CARD32 buf_ctrl; 82 CARD32 blitdir; 83 CARD32 planemask; 84 CARD32 cmd; 85 CARD32 rop; /* XXX XAA only */ 86 CARD32 clptl; 87 CARD32 clpbr; 88 CARD32 sorg; 89 CARD32 sptch; 90 CARD32 dorg; 91 CARD32 dptch; 92 CARD32 wh; 93 CARD32 torg; 94 CARD32 tptch; 95 CARD32 tex_ctl; 96 CARD32 threedctl; 97 CARD32 acntrl; 98 struct source_format *source; 99 /* struct dest_format *dest; */ 100 101 Bool NoAccel; 102 Bool exa; 103 Bool FlatPanel; 104 Bool DoubleScan; 105 Bool ShowCache; 106 Bool ModeSwitched; 107 Bool Debug; 108 unsigned char *MemoryPtr; 109 int MemorySize; 110 int MemoryType; 111 volatile struct i128mem mem; 112 struct i128io io; 113 I128RegRec RegRec; 114 Bool StateSaved; 115 Bool Initialized; 116 Bool FontsSaved; 117 Bool LUTSaved; 118 Bool InitCursorFlag; 119 LUTENTRY lutorig[256]; 120 LUTENTRY lutcur[256]; 121 int HDisplay; 122 int maxClock; 123 int minClock; 124 125 CloseScreenProcPtr CloseScreen; 126#ifdef HAVE_XAA_H 127 XAAInfoRecPtr XaaInfoRec; 128#endif 129 ExaDriverPtr ExaDriver; 130 xf86CursorInfoPtr CursorInfoRec; 131 I2CBusPtr I2C; 132 Bool DGAactive; 133 int DGAViewportStatus; 134 int numDGAModes; 135 DGAModePtr DGAModes; 136 Bool (*ProgramDAC)(ScrnInfoPtr, DisplayModePtr); 137 unsigned int (*ddc1Read)(ScrnInfoPtr); 138 Bool (*i2cInit)(ScrnInfoPtr); 139 140 OptionInfoPtr Options; 141 142} I128Rec, *I128Ptr; 143 144 145/* Prototypes */ 146 147void I128AdjustFrame(ADJUST_FRAME_ARGS_DECL); 148Bool I128SwitchMode(SWITCH_MODE_ARGS_DECL); 149 150Bool I128HWCursorInit(ScreenPtr pScreen); 151 152Bool I128XaaInit(ScreenPtr pScreen); 153Bool I128ExaInit(ScreenPtr pScreen); 154void I128EngineDone(ScrnInfoPtr pScrn); 155 156Bool I128Init(ScrnInfoPtr pScrn, DisplayModePtr mode); 157 158Bool I128DGAInit(ScreenPtr pScreen); 159 160void I128LoadPalette(ScrnInfoPtr pScrn, int numColors, 161 int *indices, LOCO *colors, VisualPtr pVisual); 162 163void I128SaveState(ScrnInfoPtr pScrn); 164void I128RestoreState(ScrnInfoPtr pScrn); 165void I128InitLUT(I128Ptr pI128); 166 167Bool I128RestoreCursor(ScrnInfoPtr pScrn); 168Bool I128RepositionCursor(ScrnInfoPtr pScrn); 169 170Bool I128IBMHWCursorInit(ScrnInfoPtr pScrn); 171Bool I128TIHWCursorInit(ScrnInfoPtr pScrn); 172 173Bool I128ProgramTi3025(ScrnInfoPtr pScrn, DisplayModePtr mode); 174Bool I128ProgramIBMRGB(ScrnInfoPtr pScrn, DisplayModePtr mode); 175Bool I128ProgramSilverHammer(ScrnInfoPtr pScrn, DisplayModePtr mode); 176 177/* void I128DumpBaseRegisters(ScrnInfoPtr pScrn); */ 178void I128DumpActiveRegisters(ScrnInfoPtr pScrn); 179/* void I128DumpIBMDACRegisters(ScrnInfoPtr pScrn, volatile CARD32 *vrbg); */ 180 181#endif 182