summaryrefslogtreecommitdiff
path: root/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c')
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c489
1 files changed, 129 insertions, 360 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c b/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c
index 618abb408..a15f4f1b4 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c
@@ -1,4 +1,4 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c,v 1.46 2000/09/20 00:09:26 keithp Exp $ */
+/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/r128/r128_driver.c,v 1.53 2000/10/18 17:20:00 alanh Exp $ */
/**************************************************************************
Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, Inc.,
@@ -70,7 +70,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "mipointer.h"
#include "micmap.h"
-#define USE_FB /* not until overlays and 24->32 code added */
+#define USE_FB /* not until overlays */
#ifdef USE_FB
#include "fb.h"
#else
@@ -83,48 +83,10 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "cfb32.h"
#include "cfb24_32.h"
#endif
- /* Xv support */
-#include "xf86xv.h"
-#include "Xv.h"
-
- /* vgahw module (for VC save/restore only) */
-#include "vgaHW.h"
-
-#include "fbdevhw.h"
-
- /* XAA and Cursor Support */
-#include "xaa.h"
-#include "xf86Cursor.h"
-
-
- /* PCI support */
-#include "xf86PciInfo.h"
-#include "xf86Pci.h"
-
- /* DDC support */
-#include "xf86DDC.h"
-
- /* VESA support */
-#include "vbe.h"
-
- /* DRI support */
-#ifdef XF86DRI
-#include "GL/glxint.h"
-#include "xf86drm.h"
-#include "sarea.h"
-#define _XF86DRI_SERVER_
-#include "xf86dri.h"
-#include "dri.h"
-#include "r128_dri.h"
-#include "r128_dripriv.h"
-#include "r128_sarea.h"
-#endif
-
-#ifdef RENDER
-#include "picturestr.h"
-#endif
/* Driver data structures */
+#include "ati2.h"
#include "r128.h"
+#include "r128_probe.h"
#include "r128_reg.h"
#ifndef MAX
@@ -133,9 +95,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
/* Forward definitions for driver functions */
-static OptionInfoPtr R128AvailableOptions(int chipid, int busid);
-static Bool R128Probe(DriverPtr drv, int flags);
-static void R128Identify(int flags);
static Bool R128PreInit(ScrnInfoPtr pScrn, int flags);
static Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
int argc, char **argv);
@@ -155,16 +114,6 @@ static void R128DisplayPowerManagementSet(ScrnInfoPtr pScrn,
static Bool R128EnterVTFBDev(int scrnIndex, int flags);
static void R128LeaveVTFBDev(int scrnIndex, int flags);
- /* Define driver */
-DriverRec R128 = {
- R128_VERSION,
- "ATI Rage 128",
- R128Identify,
- R128Probe,
- R128AvailableOptions,
- NULL
-};
-
/* Chipsets */
static SymTabRec R128Chipsets[] = {
{ PCI_CHIP_RAGE128RE, "ATI Rage 128 RE (PCI)" },
@@ -195,7 +144,6 @@ static PciChipsets R128PciChipsets[] = {
typedef enum {
OPTION_NOACCEL,
OPTION_SW_CURSOR,
- OPTION_HW_CURSOR,
OPTION_DAC_6BIT,
OPTION_DAC_8BIT,
#ifdef XF86DRI
@@ -216,13 +164,13 @@ typedef enum {
#endif
OPTION_PANEL_WIDTH,
OPTION_PANEL_HEIGHT,
+ OPTION_PROG_FP_REGS,
OPTION_FBDEV
} R128Opts;
static OptionInfoRec R128Options[] = {
{ OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE },
- { OPTION_HW_CURSOR, "HWcursor", OPTV_BOOLEAN, {0}, TRUE },
{ OPTION_DAC_6BIT, "Dac6Bit", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_DAC_8BIT, "Dac8Bit", OPTV_BOOLEAN, {0}, TRUE },
#ifdef XF86DRI
@@ -243,6 +191,7 @@ static OptionInfoRec R128Options[] = {
#endif
{ OPTION_PANEL_WIDTH, "PanelWidth", OPTV_INTEGER, {0}, FALSE },
{ OPTION_PANEL_HEIGHT, "PanelHeight", OPTV_INTEGER, {0}, FALSE },
+ { OPTION_PROG_FP_REGS, "ProgramFPRegs", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE }
};
@@ -257,216 +206,9 @@ R128RAMRec R128RAM[] = { /* Memory Specifications
{ 4, 4, 3, 3, 2, 3, 1, 16, 12, "64-bit DDR SGRAM" },
};
-static const char *vgahwSymbols[] = {
- "vgaHWGetHWRec",
- "vgaHWFreeHWRec",
- "vgaHWLock",
- "vgaHWUnlock",
- "vgaHWSave",
- "vgaHWRestore",
- NULL
-};
-
-static const char *fbdevHWSymbols[] = {
- "fbdevHWInit",
- "fbdevHWUseBuildinMode",
-
- "fbdevHWGetDepth",
- "fbdevHWGetVidmem",
-
- /* colormap */
- "fbdevHWLoadPalette",
-
- /* ScrnInfo hooks */
- "fbdevHWSwitchMode",
- "fbdevHWAdjustFrame",
- "fbdevHWEnterVT",
- "fbdevHWLeaveVT",
- "fbdevHWValidMode",
- "fbdevHWRestore",
- "fbdevHWModeInit",
- "fbdevHWSave",
-
- "fbdevHWUnmapMMIO",
- "fbdevHWUnmapVidmem",
- "fbdevHWMapMMIO",
- "fbdevHWMapVidmem",
-
- NULL
-};
-
-static const char *ddcSymbols[] = {
- "xf86PrintEDID",
- "xf86DoEDID_DDC1",
- "xf86DoEDID_DDC2",
- NULL
-};
-
-#if 0
-static const char *i2cSymbols[] = {
- "xf86CreateI2CBusRec",
- "xf86I2CBusInit",
- NULL
-};
-#endif
-
-#ifdef XFree86LOADER
-static const char *vbeSymbols[] = {
- "VBEInit",
- "vbeDoEDID",
- NULL
-};
-
-#ifdef USE_FB
-static const char *fbSymbols[] = {
- "fbScreenInit",
-#ifdef RENDER
- "fbPictureInit",
-#endif
- NULL
-};
-#else
-static const char *cfbSymbols[] = {
- "cfbScreenInit",
- "cfb16ScreenInit",
- "cfb24ScreenInit",
- "cfb32ScreenInit",
- "cfb24_32ScreenInit",
- NULL
-};
-#endif
-
-static const char *xf8_32bppSymbols[] = {
- "xf86Overlay8Plus32Init",
- NULL
-};
-
-static const char *xaaSymbols[] = {
- "XAADestroyInfoRec",
- "XAACreateInfoRec",
- "XAAInit",
- "XAAStippleScanlineFuncLSBFirst",
- "XAAOverlayFBfuncs",
- "XAACachePlanarMonoStipple",
- "XAAScreenIndex",
- NULL
-};
-
-static const char *ramdacSymbols[] = {
- "xf86InitCursor",
- "xf86CreateCursorInfoRec",
- "xf86DestroyCursorInfoRec",
- NULL
-};
-
-#ifdef XF86DRI
-static const char *drmSymbols[] = {
- "drmAddBufs",
- "drmAddMap",
- "drmAvailable",
- "drmCtlAddCommand",
- "drmCtlInstHandler",
- "drmGetInterruptFromBusID",
- "drmMapBufs",
- "drmMarkBufs",
- "drmUnmapBufs",
- "drmFreeVersion",
- "drmGetVersion",
- NULL
-};
-
-static const char *driSymbols[] = {
- "DRIGetDrawableIndex",
- "DRIFinishScreenInit",
- "DRIDestroyInfoRec",
- "DRICloseScreen",
- "DRIDestroyInfoRec",
- "DRIScreenInit",
- "DRIDestroyInfoRec",
- "DRICreateInfoRec",
- "DRILock",
- "DRIUnlock",
- "DRIGetSAREAPrivate",
- "DRIGetContext",
- "DRIQueryVersion",
- "GlxSetVisualConfigs",
- NULL
-};
-#endif
-
-static MODULESETUPPROTO(R128Setup);
-
-static XF86ModuleVersionInfo R128VersRec =
-{
- R128_NAME,
- MODULEVENDORSTRING,
- MODINFOSTRING1,
- MODINFOSTRING2,
- XF86_VERSION_CURRENT,
- R128_VERSION_MAJOR, R128_VERSION_MINOR, R128_VERSION_PATCH,
- ABI_CLASS_VIDEODRV,
- ABI_VIDEODRV_VERSION,
- MOD_CLASS_VIDEODRV,
- { 0, 0, 0, 0 }
-};
-
-XF86ModuleData r128ModuleData = { &R128VersRec, R128Setup, 0 };
-
-static pointer R128Setup(pointer module, pointer opts, int *errmaj,
- int *errmin)
-{
- static Bool setupDone = FALSE;
-
- /* This module should be loaded only once, but check to be sure. */
-
- if (!setupDone) {
- setupDone = TRUE;
- xf86AddDriver(&R128, module, 0);
-
- /*
- * Modules that this driver always requires may be loaded here
- * by calling LoadSubModule().
- */
- /* FIXME: add DRI support here */
-
- /*
- * Tell the loader about symbols from other modules that this module
- * might refer to.
- */
- LoaderRefSymLists(vgahwSymbols,
-#ifdef USE_FB
- fbSymbols,
-#else
- cfbSymbols,
-#endif
- xaaSymbols,
- xf8_32bppSymbols,
- ramdacSymbols,
-#ifdef XF86DRI
- drmSymbols,
- driSymbols,
-#endif
- fbdevHWSymbols,
- vbeSymbols,
-#if 0
- NULL /* ddcsymbols */,
- NULL /* i2csymbols */,
- NULL /* shadowSymbols */,
-#endif
- NULL);
-
- /*
- * The return value must be non-NULL on success even though there
- * is no TearDownProc.
- */
- return (pointer)1;
- } else {
- if (errmaj) *errmaj = LDR_ONCEONLY;
- return NULL;
- }
-}
-
-#endif
+extern const char *vgahwSymbols[];
+extern const char *fbdevHWSymbols[];
+extern const char *ddcSymbols[];
/* Allocate our private R128InfoRec. */
static Bool R128GetRec(ScrnInfoPtr pScrn)
@@ -571,9 +313,10 @@ static Bool R128UnmapMem(ScrnInfoPtr pScrn)
}
/* Read PLL information */
-int INPLL(ScrnInfoPtr pScrn, int addr)
+int R128INPLL(ScrnInfoPtr pScrn, int addr)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
OUTREG8(R128_CLOCK_CNTL_INDEX, addr & 0x1f);
return INREG(R128_CLOCK_CNTL_DATA);
@@ -581,9 +324,10 @@ int INPLL(ScrnInfoPtr pScrn, int addr)
#if 0
/* Read PAL information (only used for debugging). */
-static int INPAL(int idx)
+static int R128INPAL(int idx)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
OUTREG(R128_PALETTE_INDEX, idx << 16);
return INREG(R128_PALETTE_DATA);
@@ -593,21 +337,21 @@ static int INPAL(int idx)
/* Wait for vertical sync. */
void R128WaitForVerticalSync(ScrnInfoPtr pScrn)
{
- int i;
- R128MMIO_VARS();
- unsigned int j;
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
+ int i;
OUTREG(R128_GEN_INT_STATUS, R128_VSYNC_INT_AK);
for (i = 0; i < R128_TIMEOUT; i++) {
- j = INREG(R128_GEN_INT_STATUS);
- if (j & R128_VSYNC_INT) break;
+ if (INREG(R128_GEN_INT_STATUS) & R128_VSYNC_INT) break;
}
}
/* Blank screen. */
static void R128Blank(ScrnInfoPtr pScrn)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
OUTREGP(R128_CRTC_EXT_CNTL, R128_CRTC_DISPLAY_DIS, ~R128_CRTC_DISPLAY_DIS);
}
@@ -615,7 +359,8 @@ static void R128Blank(ScrnInfoPtr pScrn)
/* Unblank screen. */
static void R128Unblank(ScrnInfoPtr pScrn)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
OUTREGP(R128_CRTC_EXT_CNTL, 0, ~R128_CRTC_DISPLAY_DIS);
}
@@ -643,9 +388,9 @@ static Bool R128GetBIOSParameters(ScrnInfoPtr pScrn)
int i;
int FPHeader = 0;
-#define R128ReadBIOS(offset, buffer, length) \
- (info->BIOSFromPCI ? \
- xf86ReadPciBIOS(offset, info->PciTag, 0, buffer, length) : \
+#define R128ReadBIOS(offset, buffer, length) \
+ (info->BIOSFromPCI ? \
+ xf86ReadPciBIOS(offset, info->PciTag, 0, buffer, length) : \
xf86ReadBIOS(info->BIOSAddr, offset, buffer, length))
#define R128_BIOS8(v) (*((CARD8 *)(info->VBIOS + (v))))
@@ -757,6 +502,7 @@ static Bool R128GetPLLParameters(ScrnInfoPtr pScrn)
CARD16 bios_header;
CARD16 pll_info_block;
+
if (!info->VBIOS) {
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Video BIOS not detected, using default PLL parameters!\n");
@@ -793,15 +539,22 @@ static Bool R128GetPLLParameters(ScrnInfoPtr pScrn)
return TRUE;
}
-static
-OptionInfoPtr
-R128AvailableOptions(int chipid, int busid)
+/* Return the options for supported chipset 'n'; NULL otherwise. */
+OptionInfoPtr R128AvailableOptions(int chipid, int busid)
{
- return R128Options;
+ int i;
+
+ /* Check to make sure that chip 'chipid' is supported by the Rage
+ 128 driver */
+ for (i = 0; R128PciChipsets[i].PCIid > 0; i++) {
+ if (chipid == R128PciChipsets[i].PCIid)
+ return R128Options;
+ }
+ return NULL;
}
/* Return the string name for supported chipset 'n'; NULL otherwise. */
-static void R128Identify(int flags)
+void R128Identify(int flags)
{
xf86PrintChipsets(R128_NAME,
"Driver for ATI Rage 128 chipset",
@@ -809,7 +562,7 @@ static void R128Identify(int flags)
}
/* Return TRUE if chipset is present; FALSE otherwise. */
-static Bool R128Probe(DriverPtr drv, int flags)
+Bool R128Probe(DriverPtr drv, int flags)
{
int numUsed;
int numDevSections;
@@ -819,8 +572,11 @@ static Bool R128Probe(DriverPtr drv, int flags)
Bool foundScreen = FALSE;
int i;
+ /* Check to make sure that the R128_NAME or the ATI2_NAME is listed
+ as the Driver in the "Device" section of the XF86Config file */
if ((numDevSections = xf86MatchDevice(R128_NAME, &devSections)) <= 0)
- return FALSE;
+ if ((numDevSections = xf86MatchDevice(ATI2_NAME, &devSections)) <= 0)
+ return FALSE;
if (!xf86GetPciVideoInfo()) return FALSE;
@@ -843,7 +599,7 @@ static Bool R128Probe(DriverPtr drv, int flags)
if (pEnt->active) {
ScrnInfoPtr pScrn = xf86AllocateScreen(drv, 0);
- pScrn->driverVersion = R128_VERSION;
+ pScrn->driverVersion = ATI2_VERSION;
pScrn->driverName = R128_NAME;
pScrn->name = R128_NAME;
pScrn->Probe = R128Probe;
@@ -877,9 +633,7 @@ static Bool R128PreInitVisual(ScrnInfoPtr pScrn)
if (!xf86SetDepthBpp(pScrn, 8, 8, 8, (Support24bppFb
| Support32bppFb
-#ifndef USE_FB
| SupportConvert32to24
-#endif
)))
return FALSE;
@@ -961,12 +715,12 @@ static Bool R128PreInitWeight(ScrnInfoPtr pScrn)
If memory type ever needs an override, put it in this routine. */
static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
{
- R128InfoPtr info = R128PTR(pScrn);
- EntityInfoPtr pEnt = info->pEnt;
- GDevPtr dev = pEnt->device;
- int offset = 0; /* RAM Type */
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
+ EntityInfoPtr pEnt = info->pEnt;
+ GDevPtr dev = pEnt->device;
+ int offset = 0; /* RAM Type */
MessageType from;
- unsigned char *R128MMIO;
/* Chipset */
from = X_PROBED;
@@ -1051,18 +805,26 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
}
/* Flat panel (part 1) */
- /* FIXME: Make this an option */
- switch (info->Chipset) {
- case PCI_CHIP_RAGE128LE:
- case PCI_CHIP_RAGE128LF:
- case PCI_CHIP_RAGE128MF:
- case PCI_CHIP_RAGE128ML: info->HasPanelRegs = TRUE; break;
- case PCI_CHIP_RAGE128RE:
- case PCI_CHIP_RAGE128RF:
- case PCI_CHIP_RAGE128RK:
- case PCI_CHIP_RAGE128RL:
- case PCI_CHIP_RAGE128PF:
- default: info->HasPanelRegs = FALSE; break;
+ if (xf86GetOptValBool(R128Options, OPTION_PROG_FP_REGS,
+ &info->HasPanelRegs)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Turned flat panel register programming %s\n",
+ info->HasPanelRegs ? "on" : "off");
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "\n\nWARNING: Forcing the driver to use/not use the flat panel registers\nmight damage your flat panel. Use at your *OWN* *RISK*.\n\n");
+ } else {
+ switch (info->Chipset) {
+ case PCI_CHIP_RAGE128LE:
+ case PCI_CHIP_RAGE128LF:
+ case PCI_CHIP_RAGE128MF:
+ case PCI_CHIP_RAGE128ML: info->HasPanelRegs = TRUE; break;
+ case PCI_CHIP_RAGE128RE:
+ case PCI_CHIP_RAGE128RF:
+ case PCI_CHIP_RAGE128RK:
+ case PCI_CHIP_RAGE128RL:
+ case PCI_CHIP_RAGE128PF:
+ default: info->HasPanelRegs = FALSE; break;
+ }
}
/* Read registers used to determine options */
@@ -1074,6 +836,7 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
else
pScrn->videoRam = INREG(R128_CONFIG_MEMSIZE) / 1024;
info->MemCntl = INREG(R128_MEM_CNTL);
+
info->BusCntl = INREG(R128_BUS_CNTL);
R128MMIO = NULL;
R128UnmapMMIO(pScrn);
@@ -1119,6 +882,7 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Using flat panel for display\n");
#else
+ /* Panel CRT mode override */
if ((info->CRTOnly = xf86ReturnOptValBool(R128Options,
OPTION_CRT, FALSE))) {
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
@@ -1129,11 +893,8 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
"Using flat panel for display\n");
}
#endif
- } else {
- info->CRTOnly = FALSE;
- }
- if (info->HasPanelRegs) {
+ /* Panel width/height overrides */
info->PanelXRes = 0;
info->PanelYRes = 0;
if (xf86GetOptValInteger(R128Options,
@@ -1146,6 +907,8 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
"Flat panel height: %d\n", info->PanelYRes);
}
+ } else {
+ info->CRTOnly = FALSE;
}
#ifdef XF86DRI
@@ -1181,7 +944,7 @@ static Bool R128PreInitDDC(ScrnInfoPtr pScrn)
xf86LoaderReqSymLists(ddcSymbols, NULL);
if (xf86LoadSubModule(pScrn, "vbe")) {
pVbe = VBEInit(NULL,info->pEnt->index);
- if (!pVbe) return NULL;
+ if (!pVbe) return FALSE;
xf86SetDDCproperties(pScrn,xf86PrintEDID(vbeDoEDID(pVbe,NULL)));
return TRUE;
@@ -1572,11 +1335,11 @@ static Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
static void R128LoadPalette(ScrnInfoPtr pScrn, int numColors,
int *indices, LOCO *colors, VisualPtr pVisual)
{
- R128InfoPtr info = R128PTR(pScrn);
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
int i;
int idx;
unsigned char r, g, b;
- R128MMIO_VARS();
/* Select palette 0 (main CRTC) if using FP-enabled chip */
if (info->HasPanelRegs) PAL_SELECT(0);
@@ -1677,7 +1440,7 @@ static Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
if (!xf86ReturnOptValBool(R128Options, OPTION_NOACCEL, FALSE) &&
(maxy > pScrn->virtualY * 3)
-#if 1
+#if 0
/* FIXME: Disable 3D support for FPs until it is tested */
&& !info->HasPanelRegs
#endif
@@ -1769,7 +1532,8 @@ static Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
MemBox.x1 = 0;
MemBox.y1 = 0;
MemBox.x2 = pScrn->displayWidth;
- y2 = info->FbMapSize / (pScrn->displayWidth * info->CurrentLayout.pixel_bytes);
+ y2 = (info->FbMapSize
+ / (pScrn->displayWidth * info->CurrentLayout.pixel_bytes));
if (y2 >= 32768) y2 = 32767; /* because MemBox.y2 is signed short */
MemBox.y2 = y2;
@@ -1932,6 +1696,9 @@ static Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
miInitializeBackingStore(pScreen);
xf86SetBackingStore(pScreen);
+ /* Set Silken Mouse */
+ xf86SetSilkenMouse(pScreen);
+
/* Acceleration setup */
if (!xf86ReturnOptValBool(R128Options, OPTION_NOACCEL, FALSE)) {
if (R128AccelInit(pScreen)) {
@@ -1992,16 +1759,7 @@ static Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
xf86DPMSInit(pScreen, R128DisplayPowerManagementSet, 0);
#endif
- /* Xv setup */
-#ifdef XvExtension
- {
- XF86VideoAdaptorPtr *ptr;
- int n;
-
- if ((n = xf86XVListGenericAdaptors(pScrn, &ptr)))
- xf86XVScreenInit(pScreen, ptr, n);
- }
-#endif
+ R128InitVideo(pScreen);
/* Provide SaveScreen */
pScreen->SaveScreen = R128SaveScreen;
@@ -2035,7 +1793,8 @@ static Bool R128ScreenInit(int scrnIndex, ScreenPtr pScreen,
/* Write common registers (initialized to 0). */
static void R128RestoreCommonRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
OUTREG(R128_OVR_CLR, restore->ovr_clr);
OUTREG(R128_OVR_WID_LEFT_RIGHT, restore->ovr_wid_left_right);
@@ -2055,7 +1814,8 @@ static void R128RestoreCommonRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
/* Write CRTC registers. */
static void R128RestoreCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
OUTREG(R128_CRTC_GEN_CNTL, restore->crtc_gen_cntl);
@@ -2077,8 +1837,9 @@ static void R128RestoreCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
/* Write flat panel registers */
static void R128RestoreFPRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
{
- CARD32 tmp;
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
+ CARD32 tmp;
OUTREG(R128_CRTC2_GEN_CNTL, restore->crtc2_gen_cntl);
OUTREG(R128_FP_CRTC_H_TOTAL_DISP, restore->fp_crtc_h_total_disp);
@@ -2115,7 +1876,8 @@ static void R128PLLWaitForReadUpdateComplete(ScrnInfoPtr pScrn)
static void R128PLLWriteUpdate(ScrnInfoPtr pScrn)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
OUTPLLP(pScrn, R128_PPLL_REF_DIV, R128_PPLL_ATOMIC_UPDATE_W, 0xffff);
}
@@ -2123,7 +1885,8 @@ static void R128PLLWriteUpdate(ScrnInfoPtr pScrn)
/* Write PLL registers. */
static void R128RestorePLLRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
OUTREGP(R128_CLOCK_CNTL_INDEX, R128_PLL_DIV_SEL, 0xffff);
@@ -2167,7 +1930,8 @@ static void R128RestorePLLRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
/* Write DDA registers. */
static void R128RestoreDDARegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
OUTREG(R128_DDA_CONFIG, restore->dda_config);
OUTREG(R128_DDA_ON_OFF, restore->dda_on_off);
@@ -2176,9 +1940,9 @@ static void R128RestoreDDARegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
/* Write palette data. */
static void R128RestorePalette(ScrnInfoPtr pScrn, R128SavePtr restore)
{
- R128InfoPtr info = R128PTR(pScrn);
- int i;
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
+ int i;
if (!restore->palette_valid) return;
@@ -2208,7 +1972,8 @@ static void R128RestoreMode(ScrnInfoPtr pScrn, R128SavePtr restore)
/* Read common registers. */
static void R128SaveCommonRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
save->ovr_clr = INREG(R128_OVR_CLR);
save->ovr_wid_left_right = INREG(R128_OVR_WID_LEFT_RIGHT);
@@ -2228,7 +1993,8 @@ static void R128SaveCommonRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
/* Read CRTC registers. */
static void R128SaveCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
save->crtc_gen_cntl = INREG(R128_CRTC_GEN_CNTL);
save->crtc_ext_cntl = INREG(R128_CRTC_EXT_CNTL);
@@ -2245,7 +2011,8 @@ static void R128SaveCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
/* Read flat panel registers */
static void R128SaveFPRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
save->crtc2_gen_cntl = INREG(R128_CRTC2_GEN_CNTL);
save->fp_crtc_h_total_disp = INREG(R128_FP_CRTC_H_TOTAL_DISP);
@@ -2280,7 +2047,8 @@ static void R128SavePLLRegisters(ScrnInfoPtr pScrn, R128SavePtr save)
/* Read DDA registers. */
static void R128SaveDDARegisters(ScrnInfoPtr pScrn, R128SavePtr save)
{
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
save->dda_config = INREG(R128_DDA_CONFIG);
save->dda_on_off = INREG(R128_DDA_ON_OFF);
@@ -2289,9 +2057,9 @@ static void R128SaveDDARegisters(ScrnInfoPtr pScrn, R128SavePtr save)
/* Read palette data. */
static void R128SavePalette(ScrnInfoPtr pScrn, R128SavePtr save)
{
- R128InfoPtr info = R128PTR(pScrn);
- int i;
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
+ int i;
/* Select palette 0 (main CRTC) if using FP-enabled chip */
if (info->HasPanelRegs) PAL_SELECT(0);
@@ -2320,10 +2088,10 @@ static void R128SaveMode(ScrnInfoPtr pScrn, R128SavePtr save)
/* Save everything needed to restore the original VC state. */
static void R128Save(ScrnInfoPtr pScrn)
{
- R128InfoPtr info = R128PTR(pScrn);
- R128SavePtr save = &info->SavedReg;
- vgaHWPtr hwp = VGAHWPTR(pScrn);
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
+ R128SavePtr save = &info->SavedReg;
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
R128TRACE(("R128Save\n"));
if (info->FBDev) {
@@ -2346,10 +2114,10 @@ static void R128Save(ScrnInfoPtr pScrn)
/* Restore the original (text) mode. */
static void R128Restore(ScrnInfoPtr pScrn)
{
- R128InfoPtr info = R128PTR(pScrn);
- R128SavePtr restore = &info->SavedReg;
- vgaHWPtr hwp = VGAHWPTR(pScrn);
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
+ R128SavePtr restore = &info->SavedReg;
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
R128TRACE(("R128Restore\n"));
if (info->FBDev) {
@@ -2872,10 +2640,10 @@ static int R128ValidMode(int scrnIndex, DisplayModePtr mode,
is (x,y) in virtual space. */
void R128AdjustFrame(int scrnIndex, int x, int y, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
- R128InfoPtr info = R128PTR(pScrn);
+ ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
int Base;
- R128MMIO_VARS();
Base = y * info->CurrentLayout.displayWidth + x;
@@ -2898,7 +2666,7 @@ void R128AdjustFrame(int scrnIndex, int x, int y, int flags)
mode. */
static Bool R128EnterVT(int scrnIndex, int flags)
{
- ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+ ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
R128InfoPtr info = R128PTR(pScrn);
R128TRACE(("R128EnterVT\n"));
@@ -3015,10 +2783,11 @@ static void R128FreeScreen(int scrnIndex, int flags)
static void R128DisplayPowerManagementSet(ScrnInfoPtr pScrn,
int PowerManagementMode, int flags)
{
- int mask = (R128_CRTC_DISPLAY_DIS
- | R128_CRTC_HSYNC_DIS
- | R128_CRTC_VSYNC_DIS);
- R128MMIO_VARS();
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
+ int mask = (R128_CRTC_DISPLAY_DIS
+ | R128_CRTC_HSYNC_DIS
+ | R128_CRTC_VSYNC_DIS);
switch (PowerManagementMode) {
case DPMSModeOn: