Module Name: xsrc
Committed By: mrg
Date: Sun Dec 30 06:46:48 UTC 2018
Modified Files:
xsrc/external/mit/xf86-video-mga/dist/src: mga_bios.c mga_dac3026.c
mga_dacG.c mga_dga.c mga_dri.c mga_driver.c mga_exa.c mga_g450pll.c
mga_merge.c mga_storm.c mga_video.c
xsrc/external/mit/xf86-video-r128/dist/src: r128.h r128_driver.c
r128_exa.c r128_output.c
Removed Files:
xsrc/external/mit/xf86-video-mga/dist: README README_HALLIB
xsrc/external/mit/xf86-video-mga/dist/src: binding.h client.h
mga_halmod.c
Log Message:
merge mga 2.0.0 and r128 6.12.0 drivers.
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.2 -r0 xsrc/external/mit/xf86-video-mga/dist/README
cvs rdiff -u -r1.1.1.1 -r0 \
xsrc/external/mit/xf86-video-mga/dist/README_HALLIB
cvs rdiff -u -r1.1.1.2 -r0 \
xsrc/external/mit/xf86-video-mga/dist/src/binding.h \
xsrc/external/mit/xf86-video-mga/dist/src/client.h \
xsrc/external/mit/xf86-video-mga/dist/src/mga_halmod.c
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_bios.c \
xsrc/external/mit/xf86-video-mga/dist/src/mga_dga.c \
xsrc/external/mit/xf86-video-mga/dist/src/mga_dri.c \
xsrc/external/mit/xf86-video-mga/dist/src/mga_g450pll.c \
xsrc/external/mit/xf86-video-mga/dist/src/mga_video.c
cvs rdiff -u -r1.8 -r1.9 \
xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c
cvs rdiff -u -r1.5 -r1.6 xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c
cvs rdiff -u -r1.4 -r1.5 \
xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c \
xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c \
xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c \
xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c
cvs rdiff -u -r1.9 -r1.10 xsrc/external/mit/xf86-video-r128/dist/src/r128.h
cvs rdiff -u -r1.18 -r1.19 \
xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c
cvs rdiff -u -r1.2 -r1.3 \
xsrc/external/mit/xf86-video-r128/dist/src/r128_exa.c
cvs rdiff -u -r1.6 -r1.7 \
xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_bios.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_bios.c:1.3 xsrc/external/mit/xf86-video-mga/dist/src/mga_bios.c:1.4
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_bios.c:1.3 Sat Aug 20 00:27:21 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_bios.c Sun Dec 30 06:46:48 2018
@@ -297,7 +297,6 @@ Bool mga_read_and_process_bios( ScrnInfo
#ifndef XSERVER_LIBPCIACCESS
Bool pciBIOS = TRUE;
#endif
- int rlen;
static const unsigned expected_length[] = { 0, 64, 64, 64, 128, 128 };
unsigned version;
unsigned pins_len;
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_dga.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_dga.c:1.3 xsrc/external/mit/xf86-video-mga/dist/src/mga_dga.c:1.4
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_dga.c:1.3 Sat Aug 20 00:27:21 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_dga.c Sun Dec 30 06:46:48 2018
@@ -15,7 +15,7 @@ static Bool MGA_OpenFramebuffer(ScrnInfo
static Bool MGA_SetMode(ScrnInfoPtr, DGAModePtr);
static int MGA_GetViewport(ScrnInfoPtr);
static void MGA_SetViewport(ScrnInfoPtr, int, int, int);
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
static void MGA_FillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
static void MGA_BlitRect(ScrnInfoPtr, int, int, int, int, int, int);
static void MGA_BlitTransRect(ScrnInfoPtr, int, int, int, int, int, int,
@@ -30,7 +30,7 @@ DGAFunctionRec MGA_DGAFuncs = {
MGA_SetViewport,
MGA_GetViewport,
MGAStormSync,
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
MGA_FillRect,
MGA_BlitRect,
MGA_BlitTransRect
@@ -124,7 +124,7 @@ SECOND_PASS:
mode->flags = DGA_CONCURRENT_ACCESS;
if(pixmap)
mode->flags |= DGA_PIXMAP_AVAILABLE;
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
if(!pMga->NoAccel) {
mode->flags |= DGA_FILL_RECT | DGA_BLIT_RECT;
if((Bpp != 3) && (pMga->Chipset != PCI_CHIP_MGA2064))
@@ -365,7 +365,7 @@ MGA_SetViewport(
pMga->DGAViewportStatus = 0; /* MGAAdjustFrame loops until finished */
}
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
static void
MGA_FillRect (
ScrnInfoPtr pScrn,
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_dri.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_dri.c:1.3 xsrc/external/mit/xf86-video-mga/dist/src/mga_dri.c:1.4
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_dri.c:1.3 Sat Aug 20 00:27:21 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_dri.c Sun Dec 30 06:46:48 2018
@@ -48,15 +48,8 @@
#include "mga_drm.h"
#define _XF86DRI_SERVER_
-#include "GL/glxtokens.h"
#include "sarea.h"
-
-
-
-
-#include "GL/glxtokens.h"
-
#include "mga_reg.h"
#include "mga.h"
#include "mga_macros.h"
@@ -67,224 +60,6 @@
static char MGAKernelDriverName[] = "mga";
static char MGAClientDriverName[] = "mga";
-/* Initialize the visual configs that are supported by the hardware.
- * These are combined with the visual configs that the indirect
- * rendering core supports, and the intersection is exported to the
- * client.
- */
-static Bool MGAInitVisualConfigs( ScreenPtr pScreen )
-{
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- MGAPtr pMga = MGAPTR(pScrn);
- int numConfigs = 0;
- __GLXvisualConfig *pConfigs = 0;
- MGAConfigPrivPtr pMGAConfigs = 0;
- MGAConfigPrivPtr *pMGAConfigPtrs = 0;
- int i, db, depth, stencil, accum;
-
- switch ( pScrn->bitsPerPixel ) {
- case 8:
- case 24:
- break;
-
- case 16:
- numConfigs = 8;
-
- pConfigs = (__GLXvisualConfig*)calloc( sizeof(__GLXvisualConfig),
- numConfigs );
- if ( !pConfigs ) {
- return FALSE;
- }
-
- pMGAConfigs = (MGAConfigPrivPtr)calloc( sizeof(MGAConfigPrivRec),
- numConfigs );
- if ( !pMGAConfigs ) {
- free(pConfigs);
- return FALSE;
- }
-
- pMGAConfigPtrs = (MGAConfigPrivPtr*)calloc( sizeof(MGAConfigPrivPtr),
- numConfigs );
- if ( !pMGAConfigPtrs ) {
- free(pConfigs);
- free(pMGAConfigs);
- return FALSE;
- }
-
- for ( i = 0 ; i < numConfigs ; i++ ) {
- pMGAConfigPtrs[i] = &pMGAConfigs[i];
- }
-
- i = 0;
- for ( accum = 0 ; accum <= 1 ; accum++ ) {
- for ( stencil = 0 ; stencil <= 1 ; stencil++ ) {
- for ( db = 1 ; db >= 0 ; db-- ) {
- pConfigs[i].vid = -1;
- pConfigs[i].class = -1;
- pConfigs[i].rgba = TRUE;
- pConfigs[i].redSize = 5;
- pConfigs[i].greenSize = 6;
- pConfigs[i].blueSize = 5;
- pConfigs[i].alphaSize = 0;
- pConfigs[i].redMask = 0x0000F800;
- pConfigs[i].greenMask = 0x000007E0;
- pConfigs[i].blueMask = 0x0000001F;
- pConfigs[i].alphaMask = 0;
- if ( accum ) {
- pConfigs[i].accumRedSize = 16;
- pConfigs[i].accumGreenSize = 16;
- pConfigs[i].accumBlueSize = 16;
- pConfigs[i].accumAlphaSize = 0;
- } else {
- pConfigs[i].accumRedSize = 0;
- pConfigs[i].accumGreenSize = 0;
- pConfigs[i].accumBlueSize = 0;
- pConfigs[i].accumAlphaSize = 0;
- }
- if ( db ) {
- pConfigs[i].doubleBuffer = TRUE;
- } else {
- pConfigs[i].doubleBuffer = FALSE;
- }
- pConfigs[i].stereo = FALSE;
- pConfigs[i].bufferSize = 16;
- pConfigs[i].depthSize = 16;
- if ( stencil ) {
- pConfigs[i].stencilSize = 8;
- } else {
- pConfigs[i].stencilSize = 0;
- }
- pConfigs[i].auxBuffers = 0;
- pConfigs[i].level = 0;
- if ( accum || stencil ) {
- pConfigs[i].visualRating = GLX_SLOW_CONFIG;
- } else {
- pConfigs[i].visualRating = GLX_NONE;
- }
- pConfigs[i].transparentPixel = GLX_NONE;
- pConfigs[i].transparentRed = 0;
- pConfigs[i].transparentGreen = 0;
- pConfigs[i].transparentBlue = 0;
- pConfigs[i].transparentAlpha = 0;
- pConfigs[i].transparentIndex = 0;
- i++;
- }
- }
- }
- if ( i != numConfigs ) {
- xf86DrvMsg( pScrn->scrnIndex, X_ERROR,
- "[drm] Incorrect initialization of visuals\n" );
- return FALSE;
- }
- break;
-
- case 32:
- numConfigs = 8;
-
- pConfigs = (__GLXvisualConfig*)calloc( sizeof(__GLXvisualConfig),
- numConfigs );
- if ( !pConfigs ) {
- return FALSE;
- }
-
- pMGAConfigs = (MGAConfigPrivPtr)calloc( sizeof(MGAConfigPrivRec),
- numConfigs );
- if ( !pMGAConfigs ) {
- free(pConfigs);
- return FALSE;
- }
-
- pMGAConfigPtrs = (MGAConfigPrivPtr*)calloc( sizeof(MGAConfigPrivPtr),
- numConfigs );
- if ( !pMGAConfigPtrs ) {
- free(pConfigs);
- free(pMGAConfigs);
- return FALSE;
- }
-
- for ( i = 0 ; i < numConfigs ; i++ ) {
- pMGAConfigPtrs[i] = &pMGAConfigs[i];
- }
-
- i = 0;
- for ( accum = 0 ; accum <= 1 ; accum++ ) {
- for ( depth = 0 ; depth <= 1 ; depth++ ) { /* and stencil */
- for ( db = 1 ; db >= 0 ; db-- ) {
- pConfigs[i].vid = -1;
- pConfigs[i].class = -1;
- pConfigs[i].rgba = TRUE;
- pConfigs[i].redSize = 8;
- pConfigs[i].greenSize = 8;
- pConfigs[i].blueSize = 8;
- pConfigs[i].alphaSize = 0;
- pConfigs[i].redMask = 0x00FF0000;
- pConfigs[i].greenMask = 0x0000FF00;
- pConfigs[i].blueMask = 0x000000FF;
- pConfigs[i].alphaMask = 0x0;
- if ( accum ) {
- pConfigs[i].accumRedSize = 16;
- pConfigs[i].accumGreenSize = 16;
- pConfigs[i].accumBlueSize = 16;
- pConfigs[i].accumAlphaSize = 0;
- } else {
- pConfigs[i].accumRedSize = 0;
- pConfigs[i].accumGreenSize = 0;
- pConfigs[i].accumBlueSize = 0;
- pConfigs[i].accumAlphaSize = 0;
- }
- if ( db ) {
- pConfigs[i].doubleBuffer = TRUE;
- } else {
- pConfigs[i].doubleBuffer = FALSE;
- }
- pConfigs[i].stereo = FALSE;
- pConfigs[i].bufferSize = 24;
- if ( depth ) {
- pConfigs[i].depthSize = 24;
- pConfigs[i].stencilSize = 8;
- }
- else {
- pConfigs[i].depthSize = 0;
- pConfigs[i].stencilSize = 0;
- }
- pConfigs[i].auxBuffers = 0;
- pConfigs[i].level = 0;
- if ( accum ) {
- pConfigs[i].visualRating = GLX_SLOW_CONFIG;
- } else {
- pConfigs[i].visualRating = GLX_NONE;
- }
- pConfigs[i].transparentPixel = GLX_NONE;
- pConfigs[i].transparentRed = 0;
- pConfigs[i].transparentGreen = 0;
- pConfigs[i].transparentBlue = 0;
- pConfigs[i].transparentAlpha = 0;
- pConfigs[i].transparentIndex = 0;
- i++;
- }
- }
- }
- if ( i != numConfigs ) {
- xf86DrvMsg( pScrn->scrnIndex, X_ERROR,
- "[drm] Incorrect initialization of visuals\n" );
- return FALSE;
- }
- break;
-
- default:
- /* Unexpected bits/pixels */
- break;
- }
-
- pMga->numVisualConfigs = numConfigs;
- pMga->pVisualConfigs = pConfigs;
- pMga->pVisualConfigsPriv = pMGAConfigs;
-
- GlxSetVisualConfigs( numConfigs, pConfigs, (void **)pMGAConfigPtrs );
-
- return TRUE;
-}
-
static Bool MGACreateContext( ScreenPtr pScreen, VisualPtr visual,
drm_context_t hwContext, void *pVisualConfigPriv,
DRIContextType contextStore )
@@ -346,12 +121,13 @@ static void MGAWaitForIdleDMA( ScrnInfoP
void MGAGetQuiescence( ScrnInfoPtr pScrn )
{
MGAPtr pMga = MGAPTR(pScrn);
+#ifdef USE_XAA
+ MGAFBLayout *pLayout = &pMga->CurrentLayout;
+#endif /* USE_XAA */
pMga->haveQuiescense = 1;
if ( pMga->directRenderingEnabled ) {
- MGAFBLayout *pLayout = &pMga->CurrentLayout;
-
MGAWaitForIdleDMA( pScrn );
/* FIXME what about EXA? */
@@ -958,7 +734,7 @@ static void MGADRIMoveBuffersXAA(WindowP
pboxNew1 = 0;
pptNew1 = 0;
pboxNew2 = 0;
- pboxNew2 = 0;
+ pptNew2 = 0;
pptSrc = &ptOldOrg;
dx = pParent->drawable.x - ptOldOrg.x;
@@ -1095,10 +871,9 @@ Bool MGADRIScreenInit( ScreenPtr pScreen
return FALSE;
}
- /* Check that the GLX, DRI, and DRM modules have been loaded by testing
+ /* Check that the DRI, and DRM modules have been loaded by testing
* for canonical symbols in each module.
*/
- if ( !xf86LoaderCheckSymbol( "GlxSetVisualConfigs" ) ) return FALSE;
if ( !xf86LoaderCheckSymbol( "drmAvailable" ) ) return FALSE;
if ( !xf86LoaderCheckSymbol( "DRIQueryVersion" ) ) {
xf86DrvMsg( pScreen->myNum, X_ERROR,
@@ -1350,10 +1125,6 @@ Bool MGADRIScreenInit( ScreenPtr pScreen
&scratch_ptr);
}
- if ( !MGAInitVisualConfigs( pScreen ) ) {
- DRICloseScreen( pScreen );
- return FALSE;
- }
xf86DrvMsg( pScrn->scrnIndex, X_INFO, "[dri] visual configs initialized\n" );
return TRUE;
@@ -1495,6 +1266,4 @@ void MGADRICloseScreen( ScreenPtr pScree
}
free(pMga->DRIServerInfo);
pMga->DRIServerInfo = 0;
- free(pMga->pVisualConfigs);
- free(pMga->pVisualConfigsPriv);
}
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_g450pll.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_g450pll.c:1.3 xsrc/external/mit/xf86-video-mga/dist/src/mga_g450pll.c:1.4
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_g450pll.c:1.3 Sat Aug 20 00:27:22 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_g450pll.c Sun Dec 30 06:46:48 2018
@@ -134,7 +134,7 @@ static CARD32 G450FindNextPLLParam(ScrnI
*pulPLLMNP |= (CARD32)ucP;
#ifdef DEBUG
- ErrorF("FINS_S: VCO = %d, S = %02X, *pulPLLMNP = %08X\n", ulVCO, (ULONG)ucS, *pulPLLMNP);
+ ErrorF("FINS_S: VCO = %d, S = %02X, *pulPLLMNP = %08X\n", (unsigned)ulVCO, (unsigned)ucS, (unsigned)*pulPLLMNP);
#endif
}
@@ -315,7 +315,7 @@ double MGAG450SetPLLFreq(ScrnInfoPtr pSc
MGAPtr pMga = MGAPTR(pScrn);
#ifdef DEBUG
- xf86DrvMsg(pScrn->scrnIndex,X_INFO, "Restoring PLLClk = %d\n",f_out);
+ xf86DrvMsg(pScrn->scrnIndex,X_INFO, "Restoring PLLClk = %ld\n", f_out);
#endif
G450FindFirstPLLParam(pScrn, f_out, &ulMNP);
ulMNPTable[0] = ulMNP;
@@ -489,7 +489,7 @@ MGAG450SavePLLFreq(ScrnInfoPtr pScrn)
G450ApplyPFactor(pScrn, ucP, &freq);
#ifdef DEBUG
- xf86DrvMsg(pScrn->scrnIndex,X_INFO,"Saved PLLClk = %d\n",freq);
+ xf86DrvMsg(pScrn->scrnIndex,X_INFO,"Saved PLLClk = %u\n", (unsigned)freq);
#endif
return freq;
}
@@ -506,7 +506,7 @@ MGAG450PrintPLL(ScrnInfoPtr pScrn)
ucP = (CARD8)(ulMNP & 0x03);
G450ApplyPFactor(pScrn, ucP, &freq);
- xf86DrvMsg(pScrn->scrnIndex,X_INFO,"MGAGClock = %d -- MNP = 0x%x\n",
- freq,ulMNP);
+ xf86DrvMsg(pScrn->scrnIndex,X_INFO,"MGAGClock = %u -- MNP = 0x%x\n",
+ (unsigned)freq, (unsigned)ulMNP);
}
#endif
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_video.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_video.c:1.3 xsrc/external/mit/xf86-video-mga/dist/src/mga_video.c:1.4
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_video.c:1.3 Sat Aug 20 00:27:22 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_video.c Sun Dec 30 06:46:48 2018
@@ -565,8 +565,12 @@ MGAAllocateMemory(
void **mem_struct,
int size
){
+#if defined(USE_XAA) || defined(USE_EXA)
MGAPtr pMga = MGAPTR(pScrn);
+#endif /* defined(USE_XAA) || defined(USE_EXA) */
+#ifdef USE_XAA
ScreenPtr pScreen = xf86ScrnToScreen(pScrn);
+#endif /* USE_XAA */
int offset = 0;
#ifdef USE_EXA
@@ -644,7 +648,9 @@ MGAAllocateMemory(
static void
MGAFreeMemory(ScrnInfoPtr pScrn, void *mem_struct)
{
+#if defined(USE_XAA) || defined(USE_EXA)
MGAPtr pMga = MGAPTR(pScrn);
+#endif /* defined(USE_XAA) || defined(USE_EXA) */
#ifdef USE_EXA
if (pMga->Exa) {
@@ -1374,6 +1380,7 @@ static void CopyMungedScanline_AXP(CARD3
}
}
+#if 0
static void CopyMungedScanline_AXP2(CARD32 *fb_ptr, short src_w,
CARD32 *tsp, CARD32 *tpu, CARD32 *tpv)
{
@@ -1393,6 +1400,7 @@ static void CopyMungedScanline_AXP2(CARD
fb_ptr+=4;
}
}
+#endif
static void CopyMungedScanlineFilter_AXP(CARD32 *fb_ptr, short src_w,
@@ -1466,6 +1474,7 @@ static void CopyMungedScanlineFilter_AXP
}
}
+#if 0
static void CopyMungedScanlineFilterDown_AXP(CARD32 *fb_ptr, short src_w,
CARD32 *tsp1, CARD32 *tpu1, CARD32 *tpv1,
CARD32 *tsp2, CARD32 *tpu2, CARD32 *tpv2,
@@ -1504,6 +1513,7 @@ static void CopyMungedScanlineFilterDown
fb_ptr+=4;
}
}
+#endif
static void MGACopyScaledILOAD(
ScrnInfoPtr pScrn,
@@ -1520,7 +1530,12 @@ static void MGACopyScaledILOAD(
CARD32 *fb_ptr;
unsigned char *ubuf, *vbuf, *tbuf;
CARD32 *pu, *pv;
- int k,l, pl, dl, xds, yds;
+ int k,l;
+#ifdef MGA2164_BLIT_DUP
+ int pl;
+#endif /* MGA2164_BLIT_DUP */
+ int dl;
+ int xds, yds;
short box_h;
short scr_pitch = ( pScrn->virtualX + 15) & ~15;
@@ -1606,8 +1621,10 @@ static void MGACopyScaledILOAD(
ubuf=vbuf+width*height/4;
pu = (CARD32 *)(ubuf+(src_y/2)*(width/2));
pv = (CARD32 *)(vbuf+(src_y/2)*(width/2));
-
- for(pl=-1,dl=0;dl<box_h;dl++) {
+#ifdef MGA2164_BLIT_DUP
+ pl = -1;
+#endif /* MGA2164_BLIT_DUP */
+ for(dl=0;dl<box_h;dl++) {
int beta;
l=(dl+(pbox->y1-drw_y))*src_h/drw_h;
/* FIXME: check the math */
@@ -1764,7 +1781,9 @@ static void MGACopyScaledILOAD(
default:
break;
}
+#ifdef MGA2164_BLIT_DUP
pl=l;
+#endif /* MGA2164_BLIT_DUP */
} else {
/* dup lines */
@@ -1801,7 +1820,10 @@ static void MGACopyILOAD(
CARD32 *fb_ptr;
CARD8 *ubuf, *vbuf;
CARD32 *pu, *pv;
- int k,l;
+#ifdef CUSTOM_MEMCOPY
+ int k;
+#endif /* CUSTOM_MEMCOPY */
+ int l;
short clip_x1, clip_x2, tmp_w;
#ifdef DEBUG_MGA2164
@@ -1968,7 +1990,6 @@ MGAPutImageILOAD(
MGAPortPrivPtr pPriv = pMga->portPrivate;
INT32 x1, x2, y1, y2;
int dstPitch = 0;
- int bpp;
BoxRec dstBox;
int nbox;
BoxPtr pbox;
@@ -1984,9 +2005,7 @@ MGAPutImageILOAD(
clipBoxes, width, height))
return Success;
- bpp = pScrn->bitsPerPixel >> 3;
-
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
if( pMga->AccelInfoRec->NeedToSync && ((long)data != pPriv->lastPort) ) {
MGAStormSync(pScrn);
}
@@ -2020,7 +2039,7 @@ MGAPutImageILOAD(
pbox++;
}
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
pMga->AccelInfoRec->NeedToSync = TRUE;
#endif
pPriv->videoStatus = FREE_TIMER;
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c:1.8 xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c:1.9
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c:1.8 Sun Mar 5 01:32:02 2017
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c Sun Dec 30 06:46:48 2018
@@ -694,8 +694,8 @@ MGA3026Init(ScrnInfoPtr pScrn, DisplayMo
MGA_NOT_HAL(MGATi3026SetMCLK(pScrn, MGAdac->MemoryClock));
#ifdef DEBUG
- ErrorF("%6ld: %02X %02X %02X %02X %02X %02X %08lX\n", mode->Clock,
- pReg->DacClk[0], pReg->DacClk[1], pReg->DacClk[2], pReg->DacClk[3], pReg->DacClk[4], pReg->DacClk[5], pReg->Option);
+ ErrorF("%6d: %02X %02X %02X %02X %02X %02X %08X\n", mode->Clock,
+ pReg->DacClk[0], pReg->DacClk[1], pReg->DacClk[2], pReg->DacClk[3], pReg->DacClk[4], pReg->DacClk[5], (unsigned)pReg->Option);
for (i=0; i<sizeof(MGADACregs); i++) ErrorF("%02X ", pReg->DacRegs[i]);
for (i=0; i<6; i++) ErrorF(" %02X", pReg->ExtVga[i]);
ErrorF("\n");
@@ -863,8 +863,8 @@ MGA3026Save(ScrnInfoPtr pScrn, vgaRegPtr
#endif
#ifdef DEBUG
- ErrorF("read: %02X %02X %02X %02X %02X %02X %08lX\n",
- mgaReg->DacClk[0], mgaReg->DacClk[1], mgaReg->DacClk[2], mgaReg->DacClk[3], mgaReg->DacClk[4], mgaReg->DacClk[5], mgaReg->Option);
+ ErrorF("read: %02X %02X %02X %02X %02X %02X %08X\n",
+ mgaReg->DacClk[0], mgaReg->DacClk[1], mgaReg->DacClk[2], mgaReg->DacClk[3], mgaReg->DacClk[4], mgaReg->DacClk[5], (unsigned)mgaReg->Option);
for (i=0; i<sizeof(MGADACregs); i++) ErrorF("%02X ", mgaReg->DacRegs[i]);
for (i=0; i<6; i++) ErrorF(" %02X", mgaReg->ExtVga[i]);
ErrorF("\n");
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c:1.5 xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c:1.6
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c:1.5 Sun Mar 5 01:32:02 2017
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c Sun Dec 30 06:46:48 2018
@@ -58,7 +58,6 @@ MGAG200E4ComputePLLParam(ScrnInfoPtr pSc
{
unsigned int ulComputedFo;
unsigned int ulFDelta;
- unsigned int ulFPermitedDelta;
unsigned int ulFTmpDelta;
unsigned int ulVCOMax, ulVCOMin;
unsigned int ulTestP;
@@ -81,8 +80,6 @@ MGAG200E4ComputePLLParam(ScrnInfoPtr pSc
ulFoInternal = lFo * 2;
ulFDelta = 0xFFFFFFFF;
- /* Permited delta is 0.5% as VESA Specification */
- ulFPermitedDelta = ulFoInternal * 5 / 1000;
for (i = 0 ; i < P_ARRAY_SIZE ; i++)
{
@@ -125,7 +122,6 @@ MGAG200SEComputePLLParam(ScrnInfoPtr pSc
{
unsigned int ulComputedFo;
unsigned int ulFDelta;
- unsigned int ulFPermitedDelta;
unsigned int ulFTmpDelta;
unsigned int ulVCOMax, ulVCOMin;
unsigned int ulTestP;
@@ -138,8 +134,6 @@ MGAG200SEComputePLLParam(ScrnInfoPtr pSc
ulPLLFreqRef = 25000;
ulFDelta = 0xFFFFFFFF;
- /* Permited delta is 0.5% as VESA Specification */
- ulFPermitedDelta = lFo * 5 / 1000;
/* Then we need to minimize the M while staying within 0.5% */
for (ulTestP = 8; ulTestP > 0; ulTestP >>= 1) {
@@ -170,7 +164,6 @@ MGAG200EVComputePLLParam(ScrnInfoPtr pSc
{
unsigned int ulComputedFo;
unsigned int ulFDelta;
- unsigned int ulFPermitedDelta;
unsigned int ulFTmpDelta;
unsigned int ulTestP;
unsigned int ulTestM;
@@ -184,8 +177,6 @@ MGAG200EVComputePLLParam(ScrnInfoPtr pSc
ulPLLFreqRef = 50000;
ulFDelta = 0xFFFFFFFF;
- /* Permited delta is 0.5% as VESA Specification */
- ulFPermitedDelta = lFo * 5 / 1000;
/* Then we need to minimize the M while staying within 0.5% */
for (ulTestP = 16; ulTestP > 0; ulTestP--) {
@@ -221,7 +212,6 @@ MGAG200WBComputePLLParam(ScrnInfoPtr pSc
{
unsigned int ulComputedFo;
unsigned int ulFDelta;
- unsigned int ulFPermitedDelta;
unsigned int ulFTmpDelta;
unsigned int ulVCOMax, ulVCOMin;
unsigned int ulTestP;
@@ -244,8 +234,6 @@ MGAG200WBComputePLLParam(ScrnInfoPtr pSc
ulTestMEnd = 16;
ulFDelta = 0xFFFFFFFF;
- /* Permited delta is 0.5% as VESA Specification */
- ulFPermitedDelta = lFo * 5 / 1000;
/* Then we need to minimize the M while staying within 0.5% */
for (ulTestP = ulTestPStart; ulTestP < 9; ulTestP++) {
@@ -281,7 +269,6 @@ MGAG200EW3ComputePLLParam(ScrnInfoPtr pS
{
unsigned int ulComputedFo;
unsigned int ulFDelta;
- unsigned int ulFPermitedDelta;
unsigned int ulFTmpDelta;
unsigned int ulVCOMax, ulVCOMin;
unsigned int ulTestP1;
@@ -311,8 +298,6 @@ MGAG200EW3ComputePLLParam(ScrnInfoPtr pS
ulTestNEnd = 2048;
ulFDelta = 0xFFFFFFFF;
- /* Permited delta is 0.5% as VESA Specification */
- ulFPermitedDelta = lFo * 5 / 1000;
/* Then we need to minimize the M while staying within 0.5% */
for (ulTestP1 = ulTestP1Start; ulTestP1 < ulTestP1End; ulTestP1++) {
@@ -349,7 +334,6 @@ MGAG200EHComputePLLParam(ScrnInfoPtr pSc
{
unsigned int ulComputedFo;
unsigned int ulFDelta;
- unsigned int ulFPermitedDelta;
unsigned int ulFTmpDelta;
unsigned int ulTestP;
unsigned int ulTestM;
@@ -363,8 +347,6 @@ MGAG200EHComputePLLParam(ScrnInfoPtr pSc
ulPLLFreqRef = 33333;
ulFDelta = 0xFFFFFFFF;
- /* Permited delta is 0.5% as VESA Specification */
- ulFPermitedDelta = lFo * 5 / 1000;
/* Then we need to minimize the M while staying within 0.5% */
for (ulTestP = 16; ulTestP > 0; ulTestP>>= 1) {
@@ -393,6 +375,49 @@ MGAG200EHComputePLLParam(ScrnInfoPtr pSc
}
}
+void
+MGAG200EH3ComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
+{
+ unsigned int ulComputedFo;
+ unsigned int ulFDelta;
+ unsigned int ulFTmpDelta;
+ unsigned int ulTestP;
+ unsigned int ulTestM;
+ unsigned int ulTestN;
+ unsigned int ulVCOMax;
+ unsigned int ulVCOMin;
+ unsigned int ulPLLFreqRef;
+
+ ulVCOMax = 3000000;
+ ulVCOMin = 1500000;
+ ulPLLFreqRef = 25000;
+
+ ulTestP = 0;
+
+ ulFDelta = 0xFFFFFFFF;
+
+ /* Then we need to minimize the M while staying within 0.5% */
+ for (ulTestM = 150; ulTestM >= 6; ulTestM--) {
+ if ((lFo * ulTestM) > ulVCOMax) continue;
+ if ((lFo * ulTestM) < ulVCOMin) continue;
+
+ for (ulTestN = 120; ulTestN >= 60; ulTestN--) {
+ ulComputedFo = (ulPLLFreqRef * ulTestN) / ulTestM;
+ if (ulComputedFo > lFo)
+ ulFTmpDelta = ulComputedFo - lFo;
+ else
+ ulFTmpDelta = lFo - ulComputedFo;
+
+ if (ulFTmpDelta < ulFDelta) {
+ ulFDelta = ulFTmpDelta;
+ *M = (CARD8)(ulTestM);
+ *N = (CARD8)(ulTestN);
+ *P = (CARD8)(ulTestP);
+ }
+ }
+ }
+}
+
static void
MGAG200EVPIXPLLSET(ScrnInfoPtr pScrn, MGARegPtr mgaReg)
{
@@ -781,12 +806,8 @@ MGAG200EHPIXPLLSET(ScrnInfoPtr pScrn, MG
{
MGAPtr pMga = MGAPTR(pScrn);
- unsigned long ulFallBackCounter, ulLoopCount, ulLockCheckIterations = 0, ulTempCount, ulVCount;
+ unsigned long ulLoopCount, ulLockCheckIterations = 0, ulTempCount, ulVCount;
unsigned char ucTempByte, ucPixCtrl, ucPLLLocked = FALSE;
- unsigned char ucM;
- unsigned char ucN;
- unsigned char ucP;
- unsigned char ucS;
while(ulLockCheckIterations <= 32 && ucPLLLocked == FALSE)
{
@@ -941,9 +962,8 @@ MGAGCalcClock ( ScrnInfoPtr pScrn, long
/*
* Pick the closest frequency.
*/
- av = fabs(calc_f - f_vco);
- if ( av < m_err ) {
- m_err = av;
+ if ( fabs(calc_f - f_vco) < m_err ) {
+ m_err = fabs(calc_f - f_vco);
*best_m = m;
*best_n = n;
}
@@ -1058,7 +1078,14 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_o
pReg->PllN = n;
pReg->PllP = p;
} else if (pMga->is_G200EH) {
- MGAG200EHComputePLLParam(pScrn, f_out, &m, &n, &p);
+ if (pMga->Chipset == PCI_CHIP_MGAG200_EH3_PCI)
+ {
+ MGAG200EH3ComputePLLParam(pScrn, f_out, &m, &n, &p);
+ }
+ else
+ {
+ MGAG200EHComputePLLParam(pScrn, f_out, &m, &n, &p);
+ }
pReg->PllM = m;
pReg->PllN = n;
@@ -1265,6 +1292,7 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModeP
break;
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_EH3_PCI:
pReg->DacRegs[MGA1064_MISC_CTL] =
MGA1064_MISC_CTL_VGA8 |
MGA1064_MISC_CTL_DAC_RAM_CS;
@@ -1758,8 +1786,8 @@ MGA_NOT_HAL(
ErrorF("0x%02X, ", mgaReg->DacRegs[i]);
#endif
}
- ErrorF("\nOPTION = %08lX\n", mgaReg->Option);
- ErrorF("OPTION2 = %08lX\n", mgaReg->Option2);
+ ErrorF("\nOPTION = %08X\n", (unsigned)mgaReg->Option);
+ ErrorF("OPTION2 = %08X\n", (unsigned)mgaReg->Option2);
ErrorF("CRTCEXT:");
for (i=0; i<6; i++) ErrorF(" %02X", mgaReg->ExtVga[i]);
ErrorF("\n");
@@ -1903,8 +1931,8 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vg
ErrorF("0x%02X, ", mgaReg->DacRegs[i]);
#endif
}
- ErrorF("\nOPTION = %08lX\n:", mgaReg->Option);
- ErrorF("OPTION2 = %08lX\nCRTCEXT:", mgaReg->Option2);
+ ErrorF("\nOPTION = %08X\n:", (unsigned)mgaReg->Option);
+ ErrorF("OPTION2 = %08X\nCRTCEXT:", (unsigned)mgaReg->Option2);
for (i=0; i<6; i++) ErrorF(" %02X", mgaReg->ExtVga[i]);
ErrorF("\n");
#endif
@@ -2121,7 +2149,7 @@ MGAG_I2CPutBits(I2CBusPtr b, int clock,
static I2CBusPtr
-mgag_create_i2c_bus(const char *name, unsigned bus_index, unsigned scrn_index)
+mgag_create_i2c_bus(char *name, unsigned bus_index, unsigned scrn_index)
{
I2CBusPtr I2CPtr = xf86CreateI2CBusRec();
@@ -2131,7 +2159,7 @@ mgag_create_i2c_bus(const char *name, un
I2CPtr->I2CPutBits = MGAG_I2CPutBits;
I2CPtr->I2CGetBits = MGAG_I2CGetBits;
I2CPtr->AcknTimeout = 5;
- I2CPtr->DriverPrivate.ptr = & i2c_priv[bus_index];
+ I2CPtr->DriverPrivate.ptr = (void *) &i2c_priv[bus_index];
if (!xf86I2CBusInit(I2CPtr)) {
xf86DestroyI2CBusRec(I2CPtr, TRUE, TRUE);
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c:1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c:1.5
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c:1.4 Sun Mar 5 01:32:02 2017
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c Sun Dec 30 06:46:48 2018
@@ -424,6 +424,21 @@ static const struct mga_device_attribute
},
16384, 0x4000, /* Memory probe size & offset values */
+ },
+
+ [17] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs,
+ (TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
+ {
+ { 50000, 230000 }, /* System VCO frequencies */
+ { 50000, 203400 }, /* Pixel VCO frequencies */
+ { 0, 0 }, /* Video VCO frequencies */
+ 45000, /* Memory clock */
+ 27050, /* PLL reference frequency */
+ 0, /* Supports fast bitblt? */
+ MGA_HOST_PCI /* Host interface */
+ },
+
+ 16384, 0x4000, /* Memory probe size & offset values */
}
};
@@ -458,6 +473,8 @@ static const struct pci_id_match mga_dev
MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EW3_PCI, 16 ),
+ MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EH3_PCI, 17 ),
+
{ 0, 0, 0 },
};
#endif
@@ -479,6 +496,7 @@ static SymTabRec MGAChipsets[] = {
{ PCI_CHIP_MGAG200_WINBOND_PCI, "mgag200 eW Nuvoton" },
{ PCI_CHIP_MGAG200_EW3_PCI, "mgag200 eW3 Nuvoton" },
{ PCI_CHIP_MGAG200_EH_PCI, "mgag200eH" },
+ { PCI_CHIP_MGAG200_EH3_PCI, "mgag200eH3" },
{ PCI_CHIP_MGAG400, "mgag400" },
{ PCI_CHIP_MGAG550, "mgag550" },
{-1, NULL }
@@ -507,6 +525,8 @@ static PciChipsets MGAPciChipsets[] = {
RES_SHARED_VGA },
{ PCI_CHIP_MGAG200_EH_PCI, PCI_CHIP_MGAG200_EH_PCI,
RES_SHARED_VGA },
+ { PCI_CHIP_MGAG200_EH3_PCI, PCI_CHIP_MGAG200_EH3_PCI,
+ RES_SHARED_VGA },
{ PCI_CHIP_MGAG400, PCI_CHIP_MGAG400, RES_SHARED_VGA },
{ PCI_CHIP_MGAG550, PCI_CHIP_MGAG550, RES_SHARED_VGA },
{ -1, -1, RES_UNDEFINED }
@@ -680,7 +700,6 @@ MGAPciProbe(DriverPtr drv, int entity_nu
intptr_t match_data)
{
ScrnInfoPtr pScrn = NULL;
- EntityInfoPtr pEnt;
MGAPtr pMga;
if (pci_device_has_kernel_driver(dev)) {
@@ -693,6 +712,7 @@ MGAPciProbe(DriverPtr drv, int entity_nu
case PCI_CHIP_MGAG200_ER_PCI:
case PCI_CHIP_MGAG200_WINBOND_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_EH3_PCI:
xf86DrvMsg(0, X_ERROR,
"mga: The PCI device 0x%x at %2.2d@%2.2d:%2.2d:%1.1d has a kernel module claiming it.\n",
dev->device_id, dev->bus, dev->domain, dev->dev, dev->func);
@@ -737,7 +757,6 @@ MGAPciProbe(DriverPtr drv, int entity_nu
* For cards that can do dual head per entity, mark the entity
* as sharable.
*/
- pEnt = xf86GetEntityInfo(entity_num);
if (pMga->chip_attribs->dual_head_possible) {
MGAEntPtr pMgaEnt = NULL;
DevUnion *pPriv;
@@ -948,6 +967,10 @@ MGAProbe(DriverPtr drv, int flags)
attrib_no = 16;
break;
+ case PCI_CHIP_MGAG200_EH3_PCI:
+ attrib_no = 17;
+ break;
+
default:
return FALSE;
}
@@ -999,7 +1022,9 @@ MGASoftReset(ScrnInfoPtr pScrn)
MGAPtr pMga = MGAPTR(pScrn);
pMga->FbMapSize = 8192 * 1024;
- MGAMapMem(pScrn);
+ if (!MGAMapMem(pScrn)) {
+ return;
+ }
/* set soft reset bit */
OUTREG(MGAREG_Reset, 1);
@@ -1120,7 +1145,9 @@ MGACountRam(ScrnInfoPtr pScrn)
ProbeSize = 16384;
ProbeSizeOffset = 0x10000;
pMga->FbMapSize = ProbeSize * 1024;
- MGAMapMem(pScrn);
+ if (!MGAMapMem(pScrn)) {
+ return 0;
+ }
base = pMga->FbBase;
}
@@ -1135,7 +1162,7 @@ MGACountRam(ScrnInfoPtr pScrn)
}
if (pMga->is_G200WB) {
- CARD32 Option, MaxMapSize;
+ uint32_t Option, MaxMapSize;
#ifdef XSERVER_LIBPCIACCESS
pci_device_cfg_read_u32(pMga->PciInfo, &Option,
@@ -1160,7 +1187,9 @@ MGACountRam(ScrnInfoPtr pScrn)
else {
MGAUnmapMem(pScrn);
pMga->FbMapSize = ProbeSize * 1024;
- MGAMapMem(pScrn);
+ if (!MGAMapMem(pScrn)) {
+ return 0;
+ }
base = pMga->FbBase;
}
}
@@ -1567,7 +1596,8 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
pMga->is_G200EV = (pMga->Chipset == PCI_CHIP_MGAG200_EV_PCI);
pMga->is_G200WB = (pMga->Chipset == PCI_CHIP_MGAG200_WINBOND_PCI)
|| (pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI);
- pMga->is_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI);
+ pMga->is_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI)
+ || (pMga->Chipset == PCI_CHIP_MGAG200_EH3_PCI);
pMga->is_G200ER = (pMga->Chipset == PCI_CHIP_MGAG200_ER_PCI);
pMga->DualHeadEnabled = FALSE;
@@ -1594,6 +1624,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
case PCI_CHIP_MGAG200_ER_PCI:
case PCI_CHIP_MGAG200_WINBOND_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_EH3_PCI:
pMga->HWCursor = FALSE;
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"HW cursor is not supported with video redirection on"
@@ -1933,11 +1964,14 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
} else {
int from = X_DEFAULT;
#ifdef USE_EXA
- char *s = xf86GetOptValString(pMga->Options, OPTION_ACCELMETHOD);
+ const char *s = xf86GetOptValString(pMga->Options, OPTION_ACCELMETHOD);
#endif
pMga->NoAccel = FALSE;
pMga->Exa = FALSE;
#ifdef USE_EXA
+#ifndef USE_XAA
+ pMga->Exa = TRUE;
+#endif
if (!xf86NameCmp(s, "EXA")) {
pMga->Exa = TRUE;
from = X_CONFIG;
@@ -2078,6 +2112,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
case PCI_CHIP_MGAG200_ER_PCI:
+ case PCI_CHIP_MGAG200_EH3_PCI:
case PCI_CHIP_MGAG400:
case PCI_CHIP_MGAG550:
MGAGSetupFuncs(pScrn);
@@ -2192,6 +2227,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
case PCI_CHIP_MGAG200_EW3_PCI:
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_EH3_PCI:
case PCI_CHIP_MGAG200_ER_PCI:
pMga->SrcOrg = 0;
pMga->DstOrg = 0;
@@ -2376,7 +2412,8 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
case PCI_CHIP_MGAG200_WINBOND_PCI:
case PCI_CHIP_MGAG200_EW3_PCI:
case PCI_CHIP_MGAG200_EV_PCI:
- case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_EH3_PCI:
case PCI_CHIP_MGAG200_ER_PCI:
case PCI_CHIP_MGAG400:
case PCI_CHIP_MGAG550:
@@ -2612,7 +2649,7 @@ MGAMapMem(ScrnInfoPtr pScrn)
#ifdef XSERVER_LIBPCIACCESS
struct pci_device *const dev = pMga->PciInfo;
struct pci_mem_region *region;
- int i, err;
+ int err;
#endif
@@ -2637,7 +2674,7 @@ MGAMapMem(ScrnInfoPtr pScrn)
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"MAPPED Framebuffer %08llX %llx to %08llX.\n",
(long long)fbaddr, (long long)fbsize,
- (long long)pMga->FbBase);
+ (long long)(uintptr_t)pMga->FbBase);
if(pMga->entityPrivate == NULL || pMga->entityPrivate->mappedIOUsage == 0) {
region = &dev->regions[pMga->io_bar];
@@ -2773,7 +2810,7 @@ MGAUnmapMem(ScrnInfoPtr pScrn)
pMga->entityPrivate->mappedIOBase = NULL;
}
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "UNMAPPING framebuffer 0x%08llX, 0x%llX.\n", (long long)pMga->FbBase, (long long)pMga->FbMapSize);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "UNMAPPING framebuffer 0x%08llX, 0x%llX.\n", (long long)(uintptr_t)pMga->FbBase, (long long)pMga->FbMapSize);
pci_device_unmap_range(dev, pMga->FbBase,
pMga->FbMapSize);
#else
@@ -2941,19 +2978,27 @@ MGAModeInit(ScrnInfoPtr pScrn, DisplayMo
ulMemoryBandwidth = (mode->Clock * ulBitsPerPixel) / 1000;
- if (ulMemoryBandwidth > 3100) ucHiPriLvl = 0;
- else if (ulMemoryBandwidth > 2600) ucHiPriLvl = 1;
- else if (ulMemoryBandwidth > 1900) ucHiPriLvl = 2;
- else if (ulMemoryBandwidth > 1160) ucHiPriLvl = 3;
- else if (ulMemoryBandwidth > 440) ucHiPriLvl = 4;
- else ucHiPriLvl = 5;
+ if (pMga->reg_1e24 >= 0x04)
+ {
+ ucHiPriLvl = 0;
+ }
+ else
+ {
+
+ if (ulMemoryBandwidth > 3100) ucHiPriLvl = 0;
+ else if (ulMemoryBandwidth > 2600) ucHiPriLvl = 1;
+ else if (ulMemoryBandwidth > 1900) ucHiPriLvl = 2;
+ else if (ulMemoryBandwidth > 1160) ucHiPriLvl = 3;
+ else if (ulMemoryBandwidth > 440) ucHiPriLvl = 4;
+ else ucHiPriLvl = 5;
+ }
OUTREG8(0x1FDE, 0x06);
OUTREG8(0x1FDF, ucHiPriLvl);
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Clock == %d\n", mode->Clock);
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "BitsPerPixel == %d\n", pScrn->bitsPerPixel);
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "MemoryBandwidth == %d\n", ulMemoryBandwidth);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Clock == %u\n", mode->Clock);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "BitsPerPixel == %u\n", pScrn->bitsPerPixel);
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO, "MemoryBandwidth == %u\n", (unsigned)ulMemoryBandwidth);
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "HiPriLvl == %02X\n", ucHiPriLvl);
}
else
@@ -3103,7 +3148,7 @@ MGACrtc2FillStrip(ScrnInfoPtr pScrn)
(pScrn->bitsPerPixel >> 3) * pScrn->displayWidth * pScrn->virtualY);
} else {
xf86SetLastScrnFlag(pScrn->entityList[0], pScrn->scrnIndex);
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
pMga->RestoreAccelState(pScrn);
pMga->SetupForSolidFill(pScrn, 0, GXcopy, 0xFFFFFFFF);
pMga->SubsequentSolidFillRect(pScrn, pScrn->virtualX, 0,
@@ -3126,16 +3171,12 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL)
vgaHWPtr hwp;
MGAPtr pMga;
MGARamdacPtr MGAdac;
- int ret;
VisualPtr visual;
unsigned char *FBStart;
int width, height, displayWidth;
MGAEntPtr pMgaEnt = NULL;
int f;
- CARD32 VRTemp, FBTemp;
-#ifdef MGADRI
- MessageType driFrom = X_DEFAULT;
-#endif
+ CARD32 VRTemp = 0, FBTemp = 0;
DPMSSetProcPtr mga_dpms_set_proc = NULL;
hwp = VGAHWPTR(pScrn);
@@ -3317,20 +3358,16 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL)
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Not supported by hardware, not initializing the DRI\n");
pMga->directRenderingEnabled = FALSE;
- driFrom = X_PROBED;
} else if (!xf86ReturnOptValBool(pMga->Options, OPTION_DRI, TRUE)) {
- driFrom = X_CONFIG;
} else if ( pMga->NoAccel ) {
xf86DrvMsg( pScrn->scrnIndex, X_ERROR,
"Acceleration disabled, not initializing the DRI\n" );
pMga->directRenderingEnabled = FALSE;
- driFrom = X_CONFIG;
}
else if ( pMga->TexturedVideo == TRUE ) {
xf86DrvMsg( pScrn->scrnIndex, X_ERROR,
"Textured video enabled, not initializing the DRI\n" );
pMga->directRenderingEnabled = FALSE;
- driFrom = X_CONFIG;
}
else if (pMga->SecondCrtc == TRUE) {
xf86DrvMsg( pScrn->scrnIndex, X_ERROR,
@@ -3345,7 +3382,6 @@ MGAScreenInit(SCREEN_INIT_ARGS_DECL)
"Need at least %d kB video memory at this resolution, bit depth\n",
(3 * displayWidth * height * (pScrn->bitsPerPixel >> 3)) / 1024 );
pMga->directRenderingEnabled = FALSE;
- driFrom = X_PROBED;
}
else {
pMga->directRenderingEnabled = MGADRIScreenInit(pScreen);
@@ -3712,7 +3748,7 @@ MGACloseScreen(CLOSE_SCREEN_ARGS_DECL)
vgaHWPtr hwp = VGAHWPTR(pScrn);
MGAPtr pMga = MGAPTR(pScrn);
MGAEntPtr pMgaEnt = NULL;
- CARD32 VRTemp, FBTemp;
+ CARD32 VRTemp = 0, FBTemp = 0;
if (pMga->MergedFB)
MGACloseScreenMerged(pScreen);
@@ -3853,15 +3889,17 @@ MGAValidMode(SCRN_ARG_TYPE arg, DisplayM
return MODE_VIRTUAL_Y;
if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 244)
return MODE_BANDWIDTH;
- } else {
- if (pMga->reg_1e24 == 0x02) {
- if (mode->HDisplay > 1920)
- return MODE_VIRTUAL_X;
- if (mode->VDisplay > 1200)
- return MODE_VIRTUAL_Y;
- if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 301)
- return MODE_BANDWIDTH;
- }
+ } else if (pMga->reg_1e24 == 0x02) {
+ if (mode->HDisplay > 1920)
+ return MODE_VIRTUAL_X;
+ if (mode->VDisplay > 1200)
+ return MODE_VIRTUAL_Y;
+ if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 301)
+ return MODE_BANDWIDTH;
+ }
+ else {
+ if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 550)
+ return MODE_BANDWIDTH;
}
} else if (pMga->is_G200WB){
if (mode->Flags & V_DBLSCAN)
@@ -3878,7 +3916,7 @@ MGAValidMode(SCRN_ARG_TYPE arg, DisplayM
} else if (pMga->is_G200EV
&& (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 327)) {
return MODE_BANDWIDTH;
- } else if (pMga->is_G200EH
+ } else if (pMga->is_G200EH && (pMga->Chipset != PCI_CHIP_MGAG200_EH3_PCI)
&& (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 375)) {
return MODE_BANDWIDTH;
} else if (pMga->is_G200ER
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c:1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c:1.5
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c:1.4 Sun Mar 5 01:32:02 2017
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c Sun Dec 30 06:46:48 2018
@@ -695,6 +695,14 @@ mgaComposite(PixmapPtr pDst, int srcx, i
OUTREG(MGAREG_YDSTLEN | MGAREG_EXEC, (dsty << 16) | (h & 0xffff));
}
+struct unaligned_32 {
+ uint32_t val;
+} __attribute__((packed));
+
+struct unaligned_64 {
+ uint64_t val;
+} __attribute__((packed));
+
static Bool
mgaUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h,
char *src, int src_pitch)
@@ -720,7 +728,15 @@ mgaUploadToScreen(PixmapPtr pDst, int x,
OUTREG(MGAREG_YDSTLEN | MGAREG_EXEC, (y << 16) | (h & 0xffff));
while (h--) {
- memcpy (pMga->ILOADBase, src, bytes_padded);
+ int i = 0;
+
+ if (sizeof(long) == 8) {
+ for (; i + 4 < bytes_padded; i += 8)
+ *(volatile uint64_t *)(pMga->ILOADBase + i) = ((struct unaligned_64 *)(src + i))->val;
+ }
+
+ for (; i < bytes_padded; i += 4)
+ *(volatile uint32_t *)(pMga->ILOADBase + i) = ((struct unaligned_32 *)(src + i))->val;
src += src_pitch;
}
@@ -737,7 +753,7 @@ mgaWaitMarker(ScreenPtr pScreen, int mar
WAITFIFO(1);
- OUTREG(MGAREG_CACHEFLUSH, 0);
+ OUTREG8(MGAREG_CACHEFLUSH, 0);
/* wait until the "drawing engine busy" bit is unset */
while (INREG (MGAREG_Status) & 0x10000);
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c:1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c:1.5
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c:1.4 Sun Mar 5 01:32:02 2017
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c Sun Dec 30 06:46:48 2018
@@ -357,6 +357,7 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, i
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
case PCI_CHIP_MGAG200_ER_PCI:
+ case PCI_CHIP_MGAG200_EH3_PCI:
case PCI_CHIP_MGAG400:
case PCI_CHIP_MGAG550:
MGAGSetupFuncs(pScrn);
@@ -510,6 +511,7 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, i
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
case PCI_CHIP_MGAG200_ER_PCI:
+ case PCI_CHIP_MGAG200_EH3_PCI:
case PCI_CHIP_MGAG400:
case PCI_CHIP_MGAG550:
maxPitch = 4096;
Index: xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c
diff -u xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c:1.4 xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c:1.5
--- xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c:1.4 Sun Mar 5 01:32:02 2017
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c Sun Dec 30 06:46:48 2018
@@ -23,10 +23,6 @@
#include "miline.h"
#include "servermd.h"
-#ifdef MGADRI
-#include "GL/glxtokens.h"
-#endif
-
#include "mga.h"
#include "mga_reg.h"
#include "mga_macros.h"
@@ -61,7 +57,7 @@ do { \
XAAMoveDWORDS((d),(s),(c)); \
} while (0)
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
static void mgaSetupForSolidFill( ScrnInfoPtr pScrn, int color,
int rop, unsigned int planemask );
@@ -576,20 +572,29 @@ MGASubsequentCPUToScreenTexture (
Bool mgaAccelInit( ScreenPtr pScreen )
{
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
XAAInfoRecPtr infoPtr;
#endif
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
MGAPtr pMga = MGAPTR(pScrn);
- int maxFastBlitMem, maxlines;
+// int maxFastBlitMem, maxlines;
+#ifdef USE_XAA
+ int maxFastBlitMem;
+#endif /* USE_XAA */
+ int maxlines;
+
+#if defined(USE_XAA) && defined(RENDER)
Bool doRender = FALSE;
+#endif /* defined(USE_XAA) && defined(RENDER) */
BoxRec AvailFBArea;
+#ifdef USE_XAA
int i;
+#endif /* USE_XAA */
pMga->ScratchBuffer = malloc(((pScrn->displayWidth * pMga->CurrentLayout.bitsPerPixel) + 127) >> 3);
if(!pMga->ScratchBuffer) return FALSE;
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
pMga->AccelInfoRec = infoPtr = XAACreateInfoRec();
if(!infoPtr) return FALSE;
#endif
@@ -625,7 +630,7 @@ Bool mgaAccelInit( ScreenPtr pScreen )
pMga->AtypeNoBLK = MGAAtypeNoBLK;
}
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
/* fill out infoPtr here */
infoPtr->Flags = PIXMAP_CACHE |
OFFSCREEN_PIXMAPS |
@@ -932,7 +937,7 @@ Bool mgaAccelInit( ScreenPtr pScreen )
}
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
for (i = 0; i < pScrn->numEntities; i++) {
if (xf86IsEntityShared(pScrn->entityList[i])) {
infoPtr->RestoreAccelState = mgaRestoreAccelState;
@@ -971,7 +976,7 @@ Bool mgaAccelInit( ScreenPtr pScreen )
}
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
/* Support for multiscreen */
static void mgaRestoreAccelState(ScrnInfoPtr pScrn)
{
@@ -1100,7 +1105,7 @@ void MGAStormEngineInit( ScrnInfoPtr pSc
opmode &= ~0x30000;
#endif
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
pMga->SetupForSolidFill = mgaSetupForSolidFill;
pMga->SubsequentSolidFillRect = mgaSubsequentSolidFillRect;
pMga->RestoreAccelState = mgaRestoreAccelState;
@@ -1152,6 +1157,7 @@ void MGAStormEngineInit( ScrnInfoPtr pSc
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
case PCI_CHIP_MGAG200_ER_PCI:
+ case PCI_CHIP_MGAG200_EH3_PCI:
pMga->SrcOrg = 0;
OUTREG(MGAREG_SRCORG, pMga->realSrcOrg);
OUTREG(MGAREG_DSTORG, pMga->DstOrg);
@@ -1178,7 +1184,7 @@ void MGAStormEngineInit( ScrnInfoPtr pSc
}
-#ifdef HAVE_XAA_H
+#ifdef USE_XAA
static void
MGASetClippingRectangle(
ScrnInfoPtr pScrn,
Index: xsrc/external/mit/xf86-video-r128/dist/src/r128.h
diff -u xsrc/external/mit/xf86-video-r128/dist/src/r128.h:1.9 xsrc/external/mit/xf86-video-r128/dist/src/r128.h:1.10
--- xsrc/external/mit/xf86-video-r128/dist/src/r128.h:1.9 Sat Aug 20 00:27:22 2016
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128.h Sun Dec 30 06:46:48 2018
@@ -70,7 +70,6 @@
#define _XF86DRI_SERVER_
#include "r128_dripriv.h"
#include "dri.h"
-#include "GL/glxint.h"
#endif
#include "fb.h"
@@ -122,13 +121,14 @@
#if R128_DEBUG
#include "r128_version.h"
-#define R128TRACE(x) \
- do { \
- ErrorF("(**) %s(%d): ", R128_NAME, pScrn->scrnIndex); \
- ErrorF x; \
- } while (0);
+#endif
+
+#if R128_DEBUG
+#define DEBUG(x) x
+
#else
-#define R128TRACE(x)
+#define DEBUG(x)
+
#endif
@@ -342,6 +342,8 @@ typedef struct {
#ifdef HAVE_XAA_H
XAAInfoRecPtr accel;
#endif
+
+ Bool noAccel;
Bool accelOn;
Bool useEXA;
Bool RenderAccel;
@@ -354,6 +356,7 @@ typedef struct {
int fifo_slots; /* Free slots in the FIFO (64 max) */
int pix24bpp; /* Depth of pixmap for 24bpp framebuffer */
Bool dac6bits; /* Use 6 bit DAC? */
+ Bool swCursor;
/* Computed values for Rage 128 */
int pitch;
@@ -389,9 +392,6 @@ typedef struct {
DRIInfoPtr pDRIInfo;
int drmFD;
drm_context_t drmCtx;
- int numVisualConfigs;
- __GLXvisualConfig *pVisualConfigs;
- R128ConfigPrivPtr pVisualConfigsPriv;
drm_handle_t fbHandle;
@@ -509,6 +509,12 @@ do {
info->fifo_slots -= entries; \
} while (0)
+/* Compute n/d with rounding. */
+static inline int R128Div(int n, int d)
+{
+ return (n + (d / 2)) / d;
+}
+
extern R128EntPtr R128EntPriv(ScrnInfoPtr pScrn);
extern void R128WaitForFifoFunction(ScrnInfoPtr pScrn, int entries);
extern void R128WaitForIdle(ScrnInfoPtr pScrn);
@@ -518,7 +524,7 @@ extern void R128EngineFlush(ScrnI
extern unsigned R128INPLL(ScrnInfoPtr pScrn, int addr);
extern void R128WaitForVerticalSync(ScrnInfoPtr pScrn);
-extern Bool R128AccelInit(ScreenPtr pScreen);
+extern Bool R128XAAAccelInit(ScreenPtr pScreen);
extern void R128EngineInit(ScrnInfoPtr pScrn);
extern Bool R128CursorInit(ScreenPtr pScreen);
@@ -528,18 +534,9 @@ extern xf86OutputPtr R128FirstOutput(xf8
extern void R128InitVideo(ScreenPtr pScreen);
extern void R128InitCommonRegisters(R128SavePtr save, R128InfoPtr info);
-extern void R128InitDACRegisters(R128SavePtr orig, R128SavePtr save, xf86OutputPtr output);
extern void R128InitRMXRegisters(R128SavePtr orig, R128SavePtr save, xf86OutputPtr output, DisplayModePtr mode);
extern void R128InitFPRegisters(R128SavePtr orig, R128SavePtr save, xf86OutputPtr output);
extern void R128InitLVDSRegisters(R128SavePtr orig, R128SavePtr save, xf86OutputPtr output);
-extern Bool R128InitCrtcBase(xf86CrtcPtr crtc, R128SavePtr save, int x, int y);
-extern Bool R128InitCrtcRegisters(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode);
-extern void R128InitPLLRegisters(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, double dot_clock);
-extern Bool R128InitDDARegisters(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, DisplayModePtr mode);
-extern Bool R128InitCrtc2Base(xf86CrtcPtr crtc, R128SavePtr save, int x, int y);
-extern Bool R128InitCrtc2Registers(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode);
-extern void R128InitPLL2Registers(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, double dot_clock);
-extern Bool R128InitDDA2Registers(xf86CrtcPtr crtc, R128SavePtr save, R128PLLPtr pll, DisplayModePtr mode);
extern void R128RestoreCommonRegisters(ScrnInfoPtr pScrn, R128SavePtr restore);
extern void R128RestoreDACRegisters(ScrnInfoPtr pScrn, R128SavePtr restore);
extern void R128RestoreRMXRegisters(ScrnInfoPtr pScrn, R128SavePtr restore);
@@ -614,11 +611,35 @@ extern int R128CCEStop(ScrnInfoP
extern void R128CopySwap(uint8_t *dst, uint8_t *src, unsigned int size, int swap);
#ifdef USE_EXA
-extern Bool R128EXAInit(ScreenPtr pScreen);
+extern Bool R128EXAInit(ScreenPtr pScreen, int total);
extern Bool R128GetDatatypeBpp(int bpp, uint32_t *type);
extern Bool R128GetPixmapOffsetPitch(PixmapPtr pPix, uint32_t *pitch_offset);
extern void R128DoPrepareCopy(ScrnInfoPtr pScrn, uint32_t src_pitch_offset,
uint32_t dst_pitch_offset, uint32_t datatype, int alu, Pixel planemask);
+extern void R128Done(PixmapPtr pPixmap);
+
+#ifdef R128DRI
+extern void EmitCCE2DState(ScrnInfoPtr pScrn);
+#endif
+
+#ifdef RENDER
+extern Bool R128CCECheckComposite(int op,
+ PicturePtr pSrcPicture,
+ PicturePtr pMaskPicture,
+ PicturePtr pDstPicture);
+extern Bool R128CCEPrepareComposite(int op, PicturePtr pSrcPicture,
+ PicturePtr pMaskPicture,
+ PicturePtr pDstPicture,
+ PixmapPtr pSrc,
+ PixmapPtr pMask,
+ PixmapPtr pDst);
+extern void R128CCEComposite(PixmapPtr pDst,
+ int srcX, int srcY,
+ int maskX, int maskY,
+ int dstX, int dstY,
+ int w, int h);
+#define R128CCEDoneComposite R128Done
+#endif
#endif
Index: xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c
diff -u xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c:1.18 xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c:1.19
--- xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c:1.18 Sun Mar 5 01:32:03 2017
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c Sun Dec 30 06:46:48 2018
@@ -120,13 +120,6 @@
#include <dev/wscons/wsconsio.h>
#endif
-#ifndef MAX
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#endif
-
-#define USE_CRT_ONLY 0
-
- /* Forward definitions for driver functions */
static Bool R128CloseScreen(CLOSE_SCREEN_ARGS_DECL);
static Bool R128SaveScreen(ScreenPtr pScreen, int mode);
static void R128Save(ScrnInfoPtr pScrn);
@@ -134,9 +127,17 @@ static void R128Restore(ScrnInfoPtr pScr
typedef enum {
OPTION_NOACCEL,
- OPTION_SW_CURSOR,
+#ifndef AVOID_FBDEV
+ OPTION_FBDEV,
+#endif
OPTION_DAC_6BIT,
- OPTION_DAC_8BIT,
+ OPTION_VGA_ACCESS,
+ OPTION_SHOW_CACHE,
+ OPTION_SW_CURSOR,
+ OPTION_VIDEO_KEY,
+ OPTION_PANEL_WIDTH,
+ OPTION_PANEL_HEIGHT,
+ OPTION_PROG_FP_REGS,
#ifdef R128DRI
OPTION_XV_DMA,
OPTION_IS_PCI,
@@ -149,29 +150,23 @@ typedef enum {
OPTION_BUFFER_SIZE,
OPTION_PAGE_FLIP,
#endif
-#if USE_CRT_ONLY
- /* FIXME: Disable CRTOnly until it is tested */
- OPTION_CRT,
-#endif
- OPTION_DISPLAY,
- OPTION_PANEL_WIDTH,
- OPTION_PANEL_HEIGHT,
- OPTION_PROG_FP_REGS,
-#ifndef AVOID_FBDEV
- OPTION_FBDEV,
-#endif
- OPTION_VIDEO_KEY,
- OPTION_SHOW_CACHE,
- OPTION_VGA_ACCESS,
OPTION_ACCELMETHOD,
OPTION_RENDERACCEL
} R128Opts;
static const OptionInfoRec R128Options[] = {
- { OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE },
- { OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE },
- { OPTION_DAC_6BIT, "Dac6Bit", OPTV_BOOLEAN, {0}, FALSE },
- { OPTION_DAC_8BIT, "Dac8Bit", OPTV_BOOLEAN, {0}, TRUE },
+{ OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE },
+#ifndef AVOID_FBDEV
+{ OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE },
+#endif
+{ OPTION_DAC_6BIT, "Dac6Bit", OPTV_BOOLEAN, {0}, FALSE },
+{ OPTION_VGA_ACCESS, "VGAAccess", OPTV_BOOLEAN, {0}, TRUE },
+{ OPTION_SHOW_CACHE, "ShowCache", OPTV_BOOLEAN, {0}, FALSE },
+{ OPTION_SW_CURSOR, "SWcursor", OPTV_BOOLEAN, {0}, FALSE },
+{ OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE },
+{ 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 },
#ifdef R128DRI
{ OPTION_XV_DMA, "DMAForXv", OPTV_BOOLEAN, {0}, FALSE },
{ OPTION_IS_PCI, "ForcePCIMode", OPTV_BOOLEAN, {0}, FALSE },
@@ -184,15 +179,6 @@ static const OptionInfoRec R128Options[]
{ OPTION_BUFFER_SIZE, "BufferSize", OPTV_INTEGER, {0}, FALSE },
{ OPTION_PAGE_FLIP, "EnablePageFlip", OPTV_BOOLEAN, {0}, FALSE },
#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 },
-#ifndef AVOID_FBDEV
- { OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE },
-#endif
- { OPTION_VIDEO_KEY, "VideoKey", OPTV_INTEGER, {0}, FALSE },
- { OPTION_SHOW_CACHE, "ShowCache", OPTV_BOOLEAN, {0}, FALSE },
- { OPTION_VGA_ACCESS, "VGAAccess", OPTV_BOOLEAN, {0}, TRUE },
{ OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE },
{ OPTION_RENDERACCEL, "RenderAccel", OPTV_BOOLEAN, {0}, FALSE },
{ -1, NULL, OPTV_NONE, {0}, FALSE }
@@ -423,12 +409,6 @@ int R128MinBits(int val)
return bits;
}
-/* Compute n/d with rounding. */
-static int R128Div(int n, int d)
-{
- return (n + (d / 2)) / d;
-}
-
/* Finds the first output using a given crtc. */
xf86OutputPtr R128FirstOutput(xf86CrtcPtr crtc)
{
@@ -668,8 +648,9 @@ static Bool R128GetPLLParameters(ScrnInf
} else {
uint16_t bios_header = R128_BIOS16(0x48);
uint16_t pll_info_block = R128_BIOS16(bios_header + 0x30);
- R128TRACE(("Header at 0x%04x; PLL Information at 0x%04x\n",
- bios_header, pll_info_block));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Header at 0x%04x; PLL Information at 0x%04x\n",
+ bios_header, pll_info_block));
pll->reference_freq = R128_BIOS16(pll_info_block + 0x0e);
pll->reference_div = R128_BIOS16(pll_info_block + 0x10);
@@ -693,8 +674,6 @@ static Bool R128GetPLLParameters(ScrnInf
/* This is called by R128PreInit to set up the default visual. */
static Bool R128PreInitVisual(ScrnInfoPtr pScrn)
{
- R128InfoPtr info = R128PTR(pScrn);
-
if (!xf86SetDepthBpp(pScrn, 0, 0, 0, (Support24bppFb
| Support32bppFb
| SupportConvert32to24
@@ -716,23 +695,6 @@ static Bool R128PreInitVisual(ScrnInfoPt
xf86PrintDepthBpp(pScrn);
- info->fifo_slots = 0;
- info->pix24bpp = xf86GetBppFromDepth(pScrn, pScrn->depth);
- info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
- info->CurrentLayout.depth = pScrn->depth;
- info->CurrentLayout.pixel_bytes = pScrn->bitsPerPixel / 8;
- info->CurrentLayout.pixel_code = (pScrn->bitsPerPixel != 16
- ? pScrn->bitsPerPixel
- : pScrn->depth);
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Pixel depth = %d bits stored in %d byte%s (%d bpp pixmaps)\n",
- pScrn->depth,
- info->CurrentLayout.pixel_bytes,
- info->CurrentLayout.pixel_bytes > 1 ? "s" : "",
- info->pix24bpp);
-
-
if (!xf86SetDefaultVisual(pScrn, -1)) return FALSE;
if (pScrn->depth > 8 && pScrn->defaultVisual != TrueColor) {
@@ -749,29 +711,33 @@ static Bool R128PreInitVisual(ScrnInfoPt
static Bool R128PreInitWeight(ScrnInfoPtr pScrn)
{
R128InfoPtr info = R128PTR(pScrn);
+ rgb defaultWeight = { 0, 0, 0 };
- /* Save flag for 6 bit DAC to use for
- setting CRTC registers. Otherwise use
- an 8 bit DAC, even if xf86SetWeight sets
- pScrn->rgbBits to some value other than
- 8. */
- info->dac6bits = FALSE;
- if (pScrn->depth > 8) {
- rgb defaultWeight = { 0, 0, 0 };
- if (!xf86SetWeight(pScrn, defaultWeight, defaultWeight)) return FALSE;
+ /*
+ * Save flag for 6 bit DAC to use for setting CRTC registers.
+ * Otherwise use an 8 bit DAC, even if xf86SetWeight sets
+ * pScrn->rgbBits to some value other than 8.
+ */
+ if (pScrn->depth <= 8) {
+ if (info->dac6bits) {
+ pScrn->rgbBits = 6;
+ } else {
+ pScrn->rgbBits = 8;
+ }
} else {
- pScrn->rgbBits = 8;
- if (xf86ReturnOptValBool(info->Options, OPTION_DAC_6BIT, FALSE)) {
- pScrn->rgbBits = 6;
- info->dac6bits = TRUE;
- }
+ info->dac6bits = FALSE;
+ pScrn->rgbBits = 8;
}
+
+ if (pScrn->depth > 8) {
+ if (!xf86SetWeight(pScrn, defaultWeight, defaultWeight)) return FALSE;
+ }
+
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Using %d bits per RGB (%d bit DAC)\n",
- pScrn->rgbBits, info->dac6bits ? 6 : 8);
+ "Using %d bits per RGB (%d bit DAC)\n",
+ pScrn->rgbBits, info->dac6bits ? 6 : 8);
return TRUE;
-
}
/* This is called by R128PreInit to handle config file overrides for things
@@ -1010,18 +976,8 @@ static Bool R128PreInitConfig(ScrnInfoPt
info->FbMapSize = pScrn->videoRam * 1024;
#ifdef R128DRI
- /* DMA for Xv */
- info->DMAForXv = xf86ReturnOptValBool(info->Options, OPTION_XV_DMA, FALSE);
- if (info->DMAForXv) {
- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
- "Will try to use DMA for Xv image transfers\n");
- }
-
- /* AGP/PCI */
- if (xf86ReturnOptValBool(info->Options, OPTION_IS_PCI, FALSE)) {
- info->IsPCI = TRUE;
- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forced into PCI-only mode\n");
- } else {
+ /* AGP/PCI */
+ if (!info->IsPCI) {
switch (info->Chipset) {
case PCI_CHIP_RAGE128LE:
case PCI_CHIP_RAGE128RE:
@@ -1120,7 +1076,7 @@ static Bool R128PreInitCursor(ScrnInfoPt
{
R128InfoPtr info = R128PTR(pScrn);
- if (!xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE)) {
+ if (!info->swCursor) {
if (!xf86LoadSubModule(pScrn, "ramdac")) return FALSE;
}
return TRUE;
@@ -1144,21 +1100,6 @@ static Bool R128PreInitDRI(ScrnInfoPtr p
{
R128InfoPtr info = R128PTR(pScrn);
- if (xf86ReturnOptValBool(info->Options, OPTION_CCE_PIO, FALSE)) {
- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Forcing CCE into PIO mode\n");
- info->CCEMode = R128_DEFAULT_CCE_PIO_MODE;
- } else {
- info->CCEMode = R128_DEFAULT_CCE_BM_MODE;
- }
-
- if (xf86ReturnOptValBool(info->Options, OPTION_NO_SECURITY, FALSE)) {
- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
- "WARNING!!! CCE Security checks disabled!!! **********\n");
- info->CCESecure = FALSE;
- } else {
- info->CCESecure = TRUE;
- }
-
info->agpMode = R128_DEFAULT_AGP_MODE;
info->agpSize = R128_DEFAULT_AGP_SIZE;
info->ringSize = R128_DEFAULT_RING_SIZE;
@@ -1286,17 +1227,163 @@ static Bool R128PreInitControllers(ScrnI
}
static void
-R128ProbeDDC(ScrnInfoPtr pScrn, int indx)
+r128UMSOption(ScrnInfoPtr pScrn)
{
- vbeInfoPtr pVbe;
+ R128InfoPtr info = R128PTR(pScrn);
-#if !defined(__powerpc__) && !defined(__alpha__) && !defined(__sparc__)
- if (xf86LoadSubModule(pScrn, "vbe")) {
- pVbe = VBEInit(NULL,indx);
- ConfiguredMonitor = vbeDoEDID(pVbe, NULL);
- vbeFree(pVbe);
+ info->dac6bits = xf86ReturnOptValBool(info->Options,
+ OPTION_DAC_6BIT, FALSE);
+
+#ifndef AVOID_FBDEV
+#ifdef __powerpc__
+ if (xf86ReturnOptValBool(info->Options, OPTION_FBDEV, TRUE))
+#else
+ if (xf86ReturnOptValBool(info->Options, OPTION_FBDEV, FALSE))
+#endif
+ {
+ info->FBDev = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Using framebuffer device.\n");
+ }
+#endif
+
+ /* By default, don't access VGA IOs on PowerPC or SPARC. */
+#if defined(__powerpc__) || defined(__sparc__) || !defined(WITH_VGAHW)
+ info->VGAAccess = FALSE;
+#else
+ info->VGAAccess = TRUE;
+#endif
+
+#ifdef WITH_VGAHW
+ xf86GetOptValBool(info->Options, OPTION_VGA_ACCESS,
+ &info->VGAAccess);
+ if (info->VGAAccess) {
+ if (!xf86LoadSubModule(pScrn, "vgahw"))
+ info->VGAAccess = FALSE;
+ else {
+ if (!vgaHWGetHWRec(pScrn))
+ info->VGAAccess = FALSE;
+ }
+
+ if (!info->VGAAccess) {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Loading VGA module failed, trying to "
+ "run without it.\n");
+ }
+ } else
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "VGAAccess option set to FALSE, VGA "
+ "module load skipped.\n");
+ if (info->VGAAccess) {
+ vgaHWSetStdFuncs(VGAHWPTR(pScrn));
+ vgaHWGetIOBase(VGAHWPTR(pScrn));
+ }
+#else
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "VGAHW support not compiled, VGA "
+ "module load skipped.\n");
+#endif
+
+ if (xf86ReturnOptValBool(info->Options,
+ OPTION_SHOW_CACHE, FALSE)) {
+ info->showCache = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "ShowCache enabled.\n");
+ }
+
+ if (xf86ReturnOptValBool(info->Options,
+ OPTION_SW_CURSOR, FALSE)) {
+ info->swCursor = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Software cursor requested.\n");
+ }
+
+ if(xf86GetOptValInteger(info->Options,
+ OPTION_VIDEO_KEY, &info->videoKey)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Video key set to 0x%x.\n", info->videoKey);
+ } else {
+ info->videoKey = 0x1E;
+ }
+
+#ifdef R128DRI
+ /* DMA for Xv */
+ info->DMAForXv = xf86ReturnOptValBool(info->Options,
+ OPTION_XV_DMA, FALSE);
+ if (info->DMAForXv) {
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Will try to use DMA for Xv image transfers.\n");
+ }
+
+ /* Force PCI Mode */
+ info->IsPCI = xf86ReturnOptValBool(info->Options,
+ OPTION_IS_PCI, FALSE);
+ if (info->IsPCI) {
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Forced into PCI only mode.\n");
+ }
+
+ if (xf86ReturnOptValBool(info->Options, OPTION_CCE_PIO, FALSE)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Forcing CCE into PIO mode.\n");
+ info->CCEMode = R128_DEFAULT_CCE_PIO_MODE;
+ } else {
+ info->CCEMode = R128_DEFAULT_CCE_BM_MODE;
+ }
+
+ if (xf86ReturnOptValBool(info->Options, OPTION_NO_SECURITY, FALSE)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "WARNING!!! CCE Security checks disabled!!!\n");
+ info->CCESecure = FALSE;
+ } else {
+ info->CCESecure = TRUE;
+ }
+
+
+#endif
+}
+
+static void
+r128AcquireOption(ScrnInfoPtr pScrn)
+{
+ R128InfoPtr info = R128PTR(pScrn);
+#ifdef USE_EXA
+ char *optstr;
+#endif
+
+ if (xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE)) {
+ info->noAccel = TRUE;
+ }
+
+#ifdef USE_EXA
+ if (!info->noAccel) {
+ optstr = (char *) xf86GetOptValString(info->Options,
+ OPTION_ACCELMETHOD);
+ if (optstr) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "AccelMethod option found.\n");
+ if (xf86NameCmp(optstr, "EXA") == 0) {
+ info->useEXA = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "AccelMethod is set to EXA, turning "
+ "EXA on.\n");
+ }
+ }
+
+#ifdef RENDER
+ info->RenderAccel = xf86ReturnOptValBool(info->Options,
+ OPTION_RENDERACCEL,
+ TRUE);
+ if (info->RenderAccel)
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Acceleration of RENDER operations will be "
+ "enabled upon successful loading of DRI and "
+ "EXA.\n");
+#endif
}
#endif
+
+ r128UMSOption(pScrn);
}
static Bool R128CRTCResize(ScrnInfoPtr pScrn, int width, int height)
@@ -1310,16 +1397,115 @@ static const xf86CrtcConfigFuncsRec R128
R128CRTCResize
};
+static Bool R128LegacyMS(ScrnInfoPtr pScrn)
+{
+ R128InfoPtr info = R128PTR(pScrn);
+ xf86Int10InfoPtr pInt10 = NULL;
+ Bool ret = FALSE;
+
+#ifndef AVOID_FBDEV
+ if (info->FBDev) {
+ /* check for linux framebuffer device */
+ if (!xf86LoadSubModule(pScrn, "fbdevhw")) goto exit;
+ if (!fbdevHWInit(pScrn, info->PciInfo, NULL)) goto exit;
+ pScrn->SwitchMode = fbdevHWSwitchModeWeak();
+ pScrn->AdjustFrame = fbdevHWAdjustFrameWeak();
+ pScrn->ValidMode = fbdevHWValidModeWeak();
+ } else {
+#endif /* !AVOID_FBDEV */
+ if (!R128PreInitInt10(pScrn, &pInt10)) goto exit;
+#ifndef AVOID_FBDEV
+ }
+#endif /* !AVOID_FBDEV */
+
+ if (!R128PreInitConfig(pScrn)) goto freeInt10;
+
+ xf86CrtcSetSizeRange(pScrn, 320, 200, 4096, 4096);
+
+ if (!R128PreInitCursor(pScrn)) goto freeInt10;
+
+ /* Don't fail on this one */
+ info->DDC = R128PreInitDDC(pScrn, pInt10);
+
+ if (!R128PreInitControllers(pScrn, pInt10)) goto freeInt10;
+
+#ifdef R128DRI
+ if (!R128PreInitDRI(pScrn)) goto freeInt10;
+#endif
+
+ ret = TRUE;
+freeInt10:
+ /* Free int10 info */
+ if (pInt10) {
+ xf86FreeInt10(pInt10);
+ }
+
+exit:
+ return ret;
+}
+
+static void
+R128PreInitAccel(ScrnInfoPtr pScrn)
+{
+ R128InfoPtr info = R128PTR(pScrn);
+#ifdef USE_EXA
+ int errmaj, errmin;
+#endif
+
+ if (!info->noAccel) {
+ if (info->useEXA) {
+#ifdef USE_EXA
+ info->exaReq.majorversion = EXA_VERSION_MAJOR;
+ info->exaReq.minorversion = EXA_VERSION_MINOR;
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Loading EXA module...\n");
+ if (LoadSubModule(pScrn->module, "exa", NULL, NULL, NULL,
+ &info->exaReq, &errmaj, &errmin)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Loading EXA module.\n");
+ } else {
+ LoaderErrorMsg(NULL, "exa", errmaj, errmin);
+ }
+#endif
+ }
+
+ if ((!info->useEXA) ||
+ ((info->useEXA) && (!info->accelOn))) {
+#ifdef HAVE_XAA_H
+ if (xf86LoadSubModule(pScrn, "xaa")) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Loading XAA module.\n");
+ }
+#endif
+ }
+ }
+}
+
/* R128PreInit is called once at server startup. */
Bool R128PreInit(ScrnInfoPtr pScrn, int flags)
{
R128InfoPtr info;
- xf86Int10InfoPtr pInt10 = NULL;
#ifdef __NetBSD__
struct wsdisplayio_bus_id bid;
#endif
- R128TRACE(("R128PreInit\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s\n", __func__));
+
+ if (flags & PROBE_DETECT) {
+ return TRUE;
+ }
+
+ pScrn->monitor = pScrn->confScreen->monitor;
+
+ if (!R128PreInitVisual(pScrn)) {
+ return FALSE;
+ }
+
+ if (!R128PreInitGamma(pScrn)) {
+ return FALSE;
+ }
if (pScrn->numEntities != 1) return FALSE;
@@ -1332,11 +1518,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
info->pEnt = xf86GetEntityInfo(pScrn->entityList[0]);
if (info->pEnt->location.type != BUS_PCI) goto fail;
- if (flags & PROBE_DETECT) {
- R128ProbeDDC(pScrn, info->pEnt->index);
- return TRUE;
- }
-
info->PciInfo = xf86GetPciInfoForEntity(info->pEnt->index);
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
@@ -1378,12 +1559,22 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
pScrn->racMemFlags = RAC_FB | RAC_COLORMAP | RAC_VIEWPORT | RAC_CURSOR;
#endif
- pScrn->monitor = pScrn->confScreen->monitor;
- /* Allocate an xf86CrtcConfig */
- xf86CrtcConfigInit(pScrn, &R128CRTCResizeFuncs);
+ info->fifo_slots = 0;
+ info->pix24bpp = xf86GetBppFromDepth(pScrn, pScrn->depth);
+ info->CurrentLayout.bitsPerPixel = pScrn->bitsPerPixel;
+ info->CurrentLayout.depth = pScrn->depth;
+ info->CurrentLayout.pixel_bytes = pScrn->bitsPerPixel / 8;
+ info->CurrentLayout.pixel_code = (pScrn->bitsPerPixel != 16
+ ? pScrn->bitsPerPixel
+ : pScrn->depth);
- if (!R128PreInitVisual(pScrn)) goto fail;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Pixel depth = %d bits stored in %d byte%s (%d bpp pixmaps)\n",
+ pScrn->depth,
+ info->CurrentLayout.pixel_bytes,
+ info->CurrentLayout.pixel_bytes > 1 ? "s" : "",
+ info->pix24bpp);
/* We can't do this until we have a
pScrn->display. */
@@ -1392,90 +1583,31 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
memcpy(info->Options, R128Options, sizeof(R128Options));
xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, info->Options);
- /* By default, don't do VGA IOs on ppc */
-#if defined(__powerpc__) || defined(__sparc__) || !defined(WITH_VGAHW)
- info->VGAAccess = FALSE;
-#else
- info->VGAAccess = TRUE;
-#endif
+ info->noAccel = FALSE;
+ info->accelOn = FALSE;
-#ifdef WITH_VGAHW
- xf86GetOptValBool(info->Options, OPTION_VGA_ACCESS, &info->VGAAccess);
- if (info->VGAAccess) {
- if (!xf86LoadSubModule(pScrn, "vgahw"))
- info->VGAAccess = FALSE;
- else {
- if (!vgaHWGetHWRec(pScrn))
- info->VGAAccess = FALSE;
- }
- if (!info->VGAAccess)
- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Loading VGA module failed,"
- " trying to run without it\n");
- } else
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VGAAccess option set to FALSE,"
- " VGA module load skipped\n");
- if (info->VGAAccess) {
- vgaHWSetStdFuncs(VGAHWPTR(pScrn));
- vgaHWGetIOBase(VGAHWPTR(pScrn));
- }
-#else
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VGAHW support not compiled, VGA "
- "module load skipped\n");
+ info->useEXA = FALSE;
+#ifdef USE_EXA
+#ifndef HAVE_XAA_H
+ info->useEXA = TRUE;
#endif
+ info->swCursor = FALSE;
+
+ r128AcquireOption(pScrn);
+
if (!R128PreInitWeight(pScrn)) goto fail;
- if(xf86GetOptValInteger(info->Options, OPTION_VIDEO_KEY, &(info->videoKey))) {
- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "video key set to 0x%x\n",
- info->videoKey);
- } else {
- info->videoKey = 0x1E;
- }
+ /* Allocate an xf86CrtcConfig */
+ xf86CrtcConfigInit(pScrn, &R128CRTCResizeFuncs);
- if (xf86ReturnOptValBool(info->Options, OPTION_SHOW_CACHE, FALSE)) {
- info->showCache = TRUE;
- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ShowCache enabled\n");
+ R128LegacyMS(pScrn);
+
+ if (!xf86InitialConfiguration(pScrn, TRUE)) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes.\n");
+ goto fail;
}
-
-#ifndef AVOID_FBDEV
-#ifdef __powerpc__
- if (xf86ReturnOptValBool(info->Options, OPTION_FBDEV, TRUE))
-#else
- if (xf86ReturnOptValBool(info->Options, OPTION_FBDEV, FALSE))
-#endif
- {
- info->FBDev = TRUE;
- xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
- "Using framebuffer device\n");
- }
-
- if (info->FBDev) {
- /* check for linux framebuffer device */
- if (!xf86LoadSubModule(pScrn, "fbdevhw")) return FALSE;
- if (!fbdevHWInit(pScrn, info->PciInfo, NULL)) return FALSE;
- pScrn->SwitchMode = fbdevHWSwitchModeWeak();
- pScrn->AdjustFrame = fbdevHWAdjustFrameWeak();
- pScrn->ValidMode = fbdevHWValidModeWeak();
- }
-
- if (!info->FBDev)
-#endif /* !AVOID_FBDEV */
- if (!R128PreInitInt10(pScrn, &pInt10)) goto fail;
-
- if (!R128PreInitConfig(pScrn)) goto fail;
-
- xf86CrtcSetSizeRange(pScrn, 320, 200, 4096, 4096);
-
- /* Don't fail on this one */
- info->DDC = R128PreInitDDC(pScrn, pInt10);
-
- if (!R128PreInitControllers(pScrn, pInt10)) goto fail;
-
- if (!xf86InitialConfiguration(pScrn, TRUE)) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes.\n");
- goto fail;
- }
- pScrn->displayWidth = (pScrn->virtualX + 63) & ~63;
+ pScrn->displayWidth = (pScrn->virtualX + 63) & ~63;
/* Set display resolution */
xf86SetDpi(pScrn, 0, 0);
@@ -1483,13 +1615,7 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
/* Get ScreenInit function */
if (!xf86LoadSubModule(pScrn, "fb")) return FALSE;
- if (!R128PreInitGamma(pScrn)) goto fail;
-
- if (!R128PreInitCursor(pScrn)) goto fail;
-
-#ifdef R128DRI
- if (!R128PreInitDRI(pScrn)) goto fail;
-#endif
+ R128PreInitAccel(pScrn);
info->CurrentLayout.displayWidth = pScrn->displayWidth;
@@ -1509,10 +1635,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
info->VBIOS = NULL;
}
- /* Free int10 info */
- if (pInt10)
- xf86FreeInt10(pInt10);
-
if (info->MMIO) R128UnmapMMIO(pScrn);
info->MMIO = NULL;
@@ -1527,10 +1649,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int
info->VBIOS = NULL;
}
- /* Free int10 info */
- if (pInt10)
- xf86FreeInt10(pInt10);
-
#ifdef WITH_VGAHW
if (info->VGAAccess)
vgaHWFreeHWRec(pScrn);
@@ -1632,51 +1750,6 @@ R128BlockHandler(BLOCKHANDLER_ARGS_DECL)
}
}
-#ifdef USE_EXA
-Bool R128VerboseInitEXA(ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- R128InfoPtr info = R128PTR(pScrn);
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Going to init EXA...\n");
-
- if (R128EXAInit(pScreen)) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "EXA Acceleration enabled\n");
- info->accelOn = TRUE;
-
- return TRUE;
- } else {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "EXA Acceleration initialization failed\n");
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "EXA Acceleration disabled\n");
- info->accelOn = FALSE;
-
- return FALSE;
- }
-}
-#endif
-
-void R128VerboseInitAccel(Bool noAccel, ScreenPtr pScreen)
-{
- ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
- R128InfoPtr info = R128PTR(pScrn);
-
- if (!noAccel) {
- if (R128AccelInit(pScreen)) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration enabled\n");
- info->accelOn = TRUE;
- } else {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Acceleration initialization failed\n");
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration disabled\n");
- info->accelOn = FALSE;
- }
- } else {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration disabled\n");
- info->accelOn = FALSE;
- }
-}
-
/* Called at the start of each server generation. */
Bool R128ScreenInit(SCREEN_INIT_ARGS_DECL)
{
@@ -1684,40 +1757,22 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DEC
R128InfoPtr info = R128PTR(pScrn);
BoxRec MemBox;
int width_bytes = (pScrn->displayWidth *
- info->CurrentLayout.pixel_bytes);
- int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
- Bool noAccel;
+ info->CurrentLayout.pixel_bytes);
+ int scanlines;
+ int total = info->FbMapSize;
+ FBAreaPtr fbarea = NULL;
+#ifdef R128DRI
+ int cpp = info->CurrentLayout.pixel_bytes;
+ int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
#ifdef USE_EXA
ExaOffscreenArea* osArea = NULL;
-#else
- void* osArea = NULL;
-#endif
- char *optstr;
-
- R128TRACE(("R128ScreenInit %x %d\n", pScrn->memPhysBase, pScrn->fbOffset));
- info->useEXA = FALSE;
-#ifdef USE_EXA
-#ifndef HAVE_XAA_H
- info->useEXA = TRUE;
-#endif
-#endif
+#endif /* USE_EXA */
+#endif /* R128DRI */
-#ifdef USE_EXA
- optstr = (char *)xf86GetOptValString(info->Options, OPTION_ACCELMETHOD);
- if (optstr != NULL) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AccelMethod option found\n");
- if (xf86NameCmp(optstr, "EXA") == 0) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "AccelMethod is set to EXA, turning EXA on\n");
- info->useEXA = TRUE;
- }
- }
-#ifdef RENDER
- info->RenderAccel = xf86ReturnOptValBool(info->Options, OPTION_RENDERACCEL, TRUE);
- if (info->RenderAccel)
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Acceleration of RENDER operations will be enabled "
- "upon successful loading of DRI and EXA\n");
-#endif
-#endif
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s %lx %lx\n",
+ __func__,
+ pScrn->memPhysBase, pScrn->fbOffset));
#ifdef R128DRI
/* Turn off the CCE for now. */
@@ -1747,22 +1802,17 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DEC
pScrn->defaultVisual)) return FALSE;
miSetPixmapDepths ();
- noAccel = xf86ReturnOptValBool(info->Options, OPTION_NOACCEL, FALSE);
- if (noAccel) info->useEXA = FALSE;
-
#ifdef R128DRI
/* Setup DRI after visuals have been
established, but before fbScreenInit is
- called. fbScreenInit will eventually
- call the driver's InitGLXVisuals call
- back. */
+ called. */
{
/* FIXME: When we move to dynamic allocation of back and depth
buffers, we will want to revisit the following check for 3
times the virtual size of the screen below. */
int maxy = info->FbMapSize / width_bytes;
- if (noAccel) {
+ if (info->noAccel) {
xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
"Acceleration disabled, not initializing the DRI\n");
info->directRenderingEnabled = FALSE;
@@ -1809,11 +1859,8 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DEC
/* Memory manager setup */
#ifdef R128DRI
if (info->directRenderingEnabled) {
- FBAreaPtr fbarea = NULL;
- int cpp = info->CurrentLayout.pixel_bytes;
int bufferSize = pScrn->virtualY * width_bytes;
- int l, total;
- int scanlines;
+ int l;
switch (info->CCEMode) {
case R128_DEFAULT_CCE_PIO_MODE:
@@ -1873,19 +1920,26 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DEC
info->textureSize = 0;
}
- total = info->FbMapSize - info->textureSize;
- scanlines = total / width_bytes;
- if (scanlines > 8191) scanlines = 8191;
+ total = info->FbMapSize - info->textureSize;
+ }
+#endif /* R128DRI */
- /* Recalculate the texture offset and size to accomodate any
- * rounding to a whole number of scanlines.
- */
- info->textureOffset = scanlines * width_bytes;
+ scanlines = total / width_bytes;
+ if (scanlines > 8191) scanlines = 8191;
- MemBox.x1 = 0;
- MemBox.y1 = 0;
- MemBox.x2 = pScrn->displayWidth;
- MemBox.y2 = scanlines;
+#ifdef R128DRI
+ if (info->directRenderingEnabled)
+ /*
+ * Recalculate the texture offset and size to accomodate any
+ * rounding to a whole number of scanlines.
+ */
+ info->textureOffset = scanlines * width_bytes;
+#endif /* R128DRI */
+
+ MemBox.x1 = 0;
+ MemBox.y1 = 0;
+ MemBox.x2 = pScrn->displayWidth;
+ MemBox.y2 = scanlines;
if (!info->useEXA) {
if (!xf86InitFBManager(pScreen, &MemBox)) {
@@ -1916,28 +1970,45 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DEC
width, height);
}
- R128VerboseInitAccel(noAccel, pScreen);
- }
- }
+ if (!info->noAccel) {
+ if (R128XAAAccelInit(pScreen)) {
+ info->accelOn = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "XAA acceleration enabled.\n");
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Acceleration disabled.\n");
+ }
+ }
+ }
+ }
#ifdef USE_EXA
- else {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Filling in EXA memory info\n");
-
- R128VerboseInitAccel(noAccel, pScreen);
- info->ExaDriver->offScreenBase = pScrn->virtualY * width_bytes;
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Filled in offs\n");
+ else {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Filling in EXA memory info\n");
- /* Don't give EXA the true full memory size, because the
- textureSize sized chunk on the end is handled by DRI */
- info->ExaDriver->memorySize = total;
- R128VerboseInitEXA(pScreen);
- }
+ /*
+ * Don't give EXA the true full memory size, because
+ * the textureSize sized chunk on the end is handled
+ * by DRI.
+ */
+ if (R128EXAInit(pScreen, total)) {
+ info->accelOn = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "EXA Acceleration enabled.\n");
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "EXA Acceleration initialization "
+ "failed.\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Acceleration disabled.\n");
+ }
+ }
#endif
+#ifdef R128DRI
+ if (info->directRenderingEnabled) {
/* Allocate the shared back buffer */
if(!info->useEXA) {
fbarea = xf86AllocateOffscreenArea(pScreen,
@@ -2047,67 +2118,7 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DEC
"Reserved %d kb for textures at offset 0x%x\n",
info->textureSize/1024, info->textureOffset);
}
- else
#endif /* R128DRI */
- {
- MemBox.x1 = 0;
- MemBox.y1 = 0;
- MemBox.x2 = pScrn->displayWidth;
- y2 = (info->FbMapSize
- / (pScrn->displayWidth *
- info->CurrentLayout.pixel_bytes));
- /* The acceleration engine uses 14 bit
- signed coordinates, so we can't have any
- drawable caches beyond this region. */
- if (y2 > 8191) y2 = 8191;
- MemBox.y2 = y2;
-
- if (!info->useEXA) {
- if (!xf86InitFBManager(pScreen, &MemBox)) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Memory manager initialization to (%d,%d) (%d,%d) failed\n",
- MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
- return FALSE;
- } else {
- int width, height;
- FBAreaPtr fbarea;
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Memory manager initialized to (%d,%d) (%d,%d)\n",
- MemBox.x1, MemBox.y1, MemBox.x2, MemBox.y2);
- if ((fbarea = xf86AllocateOffscreenArea(pScreen, pScrn->displayWidth, 2, 0, NULL, NULL, NULL))) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Reserved area from (%d,%d) to (%d,%d)\n",
- fbarea->box.x1, fbarea->box.y1,
- fbarea->box.x2, fbarea->box.y2);
- } else {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to reserve area\n");
- }
- if (xf86QueryLargestOffscreenArea(pScreen, &width, &height, 0, 0, 0)) {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Largest offscreen area available: %d x %d\n",
- width, height);
- }
-
- R128VerboseInitAccel(noAccel, pScreen);
- }
- }
-#ifdef USE_EXA
- else {
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Filling in EXA memory info\n");
-
- R128VerboseInitAccel(noAccel, pScreen);
- info->ExaDriver->offScreenBase = pScrn->virtualY * width_bytes;
-
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Filled in offs\n");
-
- info->ExaDriver->memorySize = info->FbMapSize;
- R128VerboseInitEXA(pScreen);
- }
-#endif
- }
pScrn->vtSema = TRUE;
/* xf86CrtcRotate accesses pScrn->pScreen */
@@ -2141,7 +2152,7 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DEC
miDCInitialize(pScreen, xf86GetPointerScreenFuncs());
/* Hardware cursor setup */
- if (!xf86ReturnOptValBool(info->Options, OPTION_SW_CURSOR, FALSE)) {
+ if (!info->swCursor) {
if (R128CursorInit(pScreen)) {
int width, height;
@@ -2244,54 +2255,6 @@ void R128RestoreCommonRegisters(ScrnInfo
OUTREG(R128_CONFIG_CNTL, restore->config_cntl);
}
-/* Write CRTC registers. */
-void R128RestoreCrtcRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
-{
- R128InfoPtr info = R128PTR(pScrn);
- unsigned char *R128MMIO = info->MMIO;
-
- OUTREG(R128_CRTC_GEN_CNTL, restore->crtc_gen_cntl);
-
- OUTREGP(R128_CRTC_EXT_CNTL, restore->crtc_ext_cntl,
- R128_CRTC_VSYNC_DIS | R128_CRTC_HSYNC_DIS | R128_CRTC_DISPLAY_DIS);
-
- OUTREG(R128_CRTC_H_TOTAL_DISP, restore->crtc_h_total_disp);
- OUTREG(R128_CRTC_H_SYNC_STRT_WID, restore->crtc_h_sync_strt_wid);
- OUTREG(R128_CRTC_V_TOTAL_DISP, restore->crtc_v_total_disp);
- OUTREG(R128_CRTC_V_SYNC_STRT_WID, restore->crtc_v_sync_strt_wid);
- OUTREG(R128_CRTC_OFFSET, restore->crtc_offset);
- OUTREG(R128_CRTC_OFFSET_CNTL, restore->crtc_offset_cntl);
- OUTREG(R128_CRTC_PITCH, restore->crtc_pitch);
-}
-
-/* Write CRTC2 registers. */
-void R128RestoreCrtc2Registers(ScrnInfoPtr pScrn, R128SavePtr restore)
-{
- R128InfoPtr info = R128PTR(pScrn);
- unsigned char *R128MMIO = info->MMIO;
-
- OUTREGP(R128_CRTC2_GEN_CNTL, restore->crtc2_gen_cntl,
- R128_CRTC2_DISP_DIS);
-
- OUTREG(R128_CRTC2_H_TOTAL_DISP, restore->crtc2_h_total_disp);
- OUTREG(R128_CRTC2_H_SYNC_STRT_WID, restore->crtc2_h_sync_strt_wid);
- OUTREG(R128_CRTC2_V_TOTAL_DISP, restore->crtc2_v_total_disp);
- OUTREG(R128_CRTC2_V_SYNC_STRT_WID, restore->crtc2_v_sync_strt_wid);
- OUTREG(R128_CRTC2_OFFSET, restore->crtc2_offset);
- OUTREG(R128_CRTC2_OFFSET_CNTL, restore->crtc2_offset_cntl);
- OUTREG(R128_CRTC2_PITCH, restore->crtc2_pitch);
-}
-
-/* Write DAC registers */
-void R128RestoreDACRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
-{
- R128InfoPtr info = R128PTR(pScrn);
- unsigned char *R128MMIO = info->MMIO;
-
- OUTREGP(R128_DAC_CNTL, restore->dac_cntl,
- R128_DAC_RANGE_CNTL | R128_DAC_BLANKING);
-}
-
/* Write RMX registers */
void R128RestoreRMXRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
{
@@ -2347,181 +2310,6 @@ void R128RestoreLVDSRegisters(ScrnInfoPt
}
}
-static void R128PLLWaitForReadUpdateComplete(ScrnInfoPtr pScrn)
-{
- while (INPLL(pScrn, R128_PPLL_REF_DIV) & R128_PPLL_ATOMIC_UPDATE_R);
-}
-
-static void R128PLLWriteUpdate(ScrnInfoPtr pScrn)
-{
- R128InfoPtr info = R128PTR(pScrn);
- unsigned char *R128MMIO = info->MMIO;
-
- while (INPLL(pScrn, R128_PPLL_REF_DIV) & R128_PPLL_ATOMIC_UPDATE_R);
-
- OUTPLLP(pScrn, R128_PPLL_REF_DIV, R128_PPLL_ATOMIC_UPDATE_W,
- ~R128_PPLL_ATOMIC_UPDATE_W);
-
-}
-
-static void R128PLL2WaitForReadUpdateComplete(ScrnInfoPtr pScrn)
-{
- while (INPLL(pScrn, R128_P2PLL_REF_DIV) & R128_P2PLL_ATOMIC_UPDATE_R);
-}
-
-static void R128PLL2WriteUpdate(ScrnInfoPtr pScrn)
-{
- R128InfoPtr info = R128PTR(pScrn);
- unsigned char *R128MMIO = info->MMIO;
-
- while (INPLL(pScrn, R128_P2PLL_REF_DIV) & R128_P2PLL_ATOMIC_UPDATE_R);
-
- OUTPLLP(pScrn, R128_P2PLL_REF_DIV,
- R128_P2PLL_ATOMIC_UPDATE_W,
- ~(R128_P2PLL_ATOMIC_UPDATE_W));
-}
-
-/* Write PLL registers. */
-void R128RestorePLLRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
-{
- R128InfoPtr info = R128PTR(pScrn);
- unsigned char *R128MMIO = info->MMIO;
-
-
- OUTPLLP(pScrn, R128_VCLK_ECP_CNTL,
- R128_VCLK_SRC_SEL_CPUCLK,
- ~(R128_VCLK_SRC_SEL_MASK));
-
- OUTPLLP(pScrn,
- R128_PPLL_CNTL,
- R128_PPLL_RESET
- | R128_PPLL_ATOMIC_UPDATE_EN
- | R128_PPLL_VGA_ATOMIC_UPDATE_EN,
- ~(R128_PPLL_RESET
- | R128_PPLL_ATOMIC_UPDATE_EN
- | R128_PPLL_VGA_ATOMIC_UPDATE_EN));
-
- OUTREGP(R128_CLOCK_CNTL_INDEX, R128_PLL_DIV_SEL, ~(R128_PLL_DIV_SEL));
-
-/* R128PLLWaitForReadUpdateComplete(pScrn);*/
- OUTPLLP(pScrn, R128_PPLL_REF_DIV,
- restore->ppll_ref_div, ~R128_PPLL_REF_DIV_MASK);
-/* R128PLLWriteUpdate(pScrn);
-
- R128PLLWaitForReadUpdateComplete(pScrn);*/
- OUTPLLP(pScrn, R128_PPLL_DIV_3,
- restore->ppll_div_3, ~R128_PPLL_FB3_DIV_MASK);
-/* R128PLLWriteUpdate(pScrn);*/
- OUTPLLP(pScrn, R128_PPLL_DIV_3,
- restore->ppll_div_3, ~R128_PPLL_POST3_DIV_MASK);
-
- R128PLLWriteUpdate(pScrn);
- R128PLLWaitForReadUpdateComplete(pScrn);
-
- OUTPLLP(pScrn, R128_PPLL_DIV_0,
- restore->ppll_div_0, ~R128_PPLL_FB0_DIV_MASK);
-/* R128PLLWriteUpdate(pScrn);*/
- OUTPLLP(pScrn, R128_PPLL_DIV_0,
- restore->ppll_div_0, ~R128_PPLL_POST0_DIV_MASK);
-
- R128PLLWriteUpdate(pScrn);
- R128PLLWaitForReadUpdateComplete(pScrn);
-
- OUTPLL(R128_HTOTAL_CNTL, restore->htotal_cntl);
-/* R128PLLWriteUpdate(pScrn);*/
-
- OUTPLLP(pScrn, R128_PPLL_CNTL, 0, ~(R128_PPLL_RESET
- | R128_PPLL_SLEEP
- | R128_PPLL_ATOMIC_UPDATE_EN
- | R128_PPLL_VGA_ATOMIC_UPDATE_EN));
-
- R128TRACE(("Wrote: 0x%08x 0x%08x 0x%08x (0x%08x)\n",
- restore->ppll_ref_div,
- restore->ppll_div_3,
- restore->htotal_cntl,
- INPLL(pScrn, R128_PPLL_CNTL)));
- R128TRACE(("Wrote: rd=%d, fd=%d, pd=%d\n",
- restore->ppll_ref_div & R128_PPLL_REF_DIV_MASK,
- restore->ppll_div_3 & R128_PPLL_FB3_DIV_MASK,
- (restore->ppll_div_3 & R128_PPLL_POST3_DIV_MASK) >> 16));
-
- usleep(5000); /* let the clock lock */
-
- OUTPLLP(pScrn, R128_VCLK_ECP_CNTL,
- R128_VCLK_SRC_SEL_PPLLCLK,
- ~(R128_VCLK_SRC_SEL_MASK));
-
-}
-
-/* Write PLL2 registers. */
-void R128RestorePLL2Registers(ScrnInfoPtr pScrn, R128SavePtr restore)
-{
- R128InfoPtr info = R128PTR(pScrn);
- unsigned char *R128MMIO = info->MMIO;
-
- OUTPLLP(pScrn, R128_V2CLK_VCLKTV_CNTL,
- R128_V2CLK_SRC_SEL_CPUCLK,
- ~R128_V2CLK_SRC_SEL_MASK);
-
- OUTPLLP(pScrn,
- R128_P2PLL_CNTL,
- R128_P2PLL_RESET
- | R128_P2PLL_ATOMIC_UPDATE_EN
- | R128_P2PLL_VGA_ATOMIC_UPDATE_EN,
- ~(R128_P2PLL_RESET
- | R128_P2PLL_ATOMIC_UPDATE_EN
- | R128_P2PLL_VGA_ATOMIC_UPDATE_EN));
-
-#if 1
- OUTREGP(R128_CLOCK_CNTL_INDEX, 0, R128_PLL2_DIV_SEL_MASK);
-#endif
-
- /*R128PLL2WaitForReadUpdateComplete(pScrn);*/
-
- OUTPLLP(pScrn, R128_P2PLL_REF_DIV, restore->p2pll_ref_div, ~R128_P2PLL_REF_DIV_MASK);
-
-/* R128PLL2WriteUpdate(pScrn);
- R128PLL2WaitForReadUpdateComplete(pScrn);*/
-
- OUTPLLP(pScrn, R128_P2PLL_DIV_0,
- restore->p2pll_div_0, ~R128_P2PLL_FB0_DIV_MASK);
-
-/* R128PLL2WriteUpdate(pScrn);
- R128PLL2WaitForReadUpdateComplete(pScrn);*/
-
- OUTPLLP(pScrn, R128_P2PLL_DIV_0,
- restore->p2pll_div_0, ~R128_P2PLL_POST0_DIV_MASK);
-
- R128PLL2WriteUpdate(pScrn);
- R128PLL2WaitForReadUpdateComplete(pScrn);
-
- OUTPLL(R128_HTOTAL2_CNTL, restore->htotal_cntl2);
-
-/* R128PLL2WriteUpdate(pScrn);*/
-
- OUTPLLP(pScrn, R128_P2PLL_CNTL, 0, ~(R128_P2PLL_RESET
- | R128_P2PLL_SLEEP
- | R128_P2PLL_ATOMIC_UPDATE_EN
- | R128_P2PLL_VGA_ATOMIC_UPDATE_EN));
-
- R128TRACE(("Wrote: 0x%08x 0x%08x 0x%08x (0x%08x)\n",
- restore->p2pll_ref_div,
- restore->p2pll_div_0,
- restore->htotal_cntl2,
- INPLL(pScrn, R128_P2PLL_CNTL)));
- R128TRACE(("Wrote: rd=%d, fd=%d, pd=%d\n",
- restore->p2pll_ref_div & R128_P2PLL_REF_DIV_MASK,
- restore->p2pll_div_0 & R128_P2PLL_FB0_DIV_MASK,
- (restore->p2pll_div_0 & R128_P2PLL_POST0_DIV_MASK) >>16));
-
- usleep(5000); /* Let the clock to lock */
-
- OUTPLLP(pScrn, R128_V2CLK_VCLKTV_CNTL,
- R128_V2CLK_SRC_SEL_P2PLLCLK,
- ~R128_V2CLK_SRC_SEL_MASK);
-
-}
-
/* Write DDA registers. */
void R128RestoreDDARegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
{
@@ -2625,14 +2413,17 @@ static void R128SavePLLRegisters(ScrnInf
save->ppll_div_0 = INPLL(pScrn, R128_PPLL_DIV_0);
save->htotal_cntl = INPLL(pScrn, R128_HTOTAL_CNTL);
- R128TRACE(("Read: 0x%08x 0x%08x 0x%08x\n",
- save->ppll_ref_div,
- save->ppll_div_3,
- save->htotal_cntl));
- R128TRACE(("Read: rd=%d, fd=%d, pd=%d\n",
- save->ppll_ref_div & R128_PPLL_REF_DIV_MASK,
- save->ppll_div_3 & R128_PPLL_FB3_DIV_MASK,
- (save->ppll_div_3 & R128_PPLL_POST3_DIV_MASK) >> 16));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Read: 0x%08x 0x%08x 0x%08x\n",
+ save->ppll_ref_div,
+ save->ppll_div_3,
+ save->htotal_cntl));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Read: rd=%d, fd=%d, pd=%d\n",
+ save->ppll_ref_div & R128_PPLL_REF_DIV_MASK,
+ save->ppll_div_3 & R128_PPLL_FB3_DIV_MASK,
+ (save->ppll_div_3 &
+ R128_PPLL_POST3_DIV_MASK) >> 16));
}
/* Read PLL2 registers. */
@@ -2642,14 +2433,17 @@ static void R128SavePLL2Registers(ScrnIn
save->p2pll_div_0 = INPLL(pScrn, R128_P2PLL_DIV_0);
save->htotal_cntl2 = INPLL(pScrn, R128_HTOTAL2_CNTL);
- R128TRACE(("Read: 0x%08x 0x%08x 0x%08x\n",
- save->p2pll_ref_div,
- save->p2pll_div_0,
- save->htotal_cntl2));
- R128TRACE(("Read: rd=%d, fd=%d, pd=%d\n",
- save->p2pll_ref_div & R128_P2PLL_REF_DIV_MASK,
- save->p2pll_div_0 & R128_P2PLL_FB0_DIV_MASK,
- (save->p2pll_div_0 & R128_P2PLL_POST0_DIV_MASK) >> 16));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Read: 0x%08x 0x%08x 0x%08x\n",
+ save->p2pll_ref_div,
+ save->p2pll_div_0,
+ save->htotal_cntl2));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Read: rd=%d, fd=%d, pd=%d\n",
+ save->p2pll_ref_div & R128_P2PLL_REF_DIV_MASK,
+ save->p2pll_div_0 & R128_P2PLL_FB0_DIV_MASK,
+ (save->p2pll_div_0 &
+ R128_P2PLL_POST0_DIV_MASK) >> 16));
}
/* Read DDA registers. */
@@ -2694,7 +2488,8 @@ static void R128SaveMode(ScrnInfoPtr pSc
R128InfoPtr info = R128PTR(pScrn);
R128EntPtr pR128Ent = R128EntPriv(pScrn);
- R128TRACE(("R128SaveMode(%p)\n", save));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s(%p)\n", __func__, save));
R128SaveCommonRegisters(pScrn, save);
R128SaveCrtcRegisters(pScrn, save);
@@ -2710,7 +2505,8 @@ static void R128SaveMode(ScrnInfoPtr pSc
}
R128SavePalette(pScrn, save);
- R128TRACE(("R128SaveMode returns %p\n", save));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s returns %p\n", __func__, save));
}
/* Save everything needed to restore the original VC state. */
@@ -2720,8 +2516,9 @@ static void R128Save(ScrnInfoPtr pScrn)
unsigned char *R128MMIO = info->MMIO;
R128SavePtr save = &info->SavedReg;
- R128TRACE(("R128Save\n"));
#ifndef AVOID_FBDEV
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s\n", __func__));
if (info->FBDev) {
fbdevHWSave(pScrn);
return;
@@ -2765,8 +2562,9 @@ static void R128Restore(ScrnInfoPtr pScr
unsigned char *R128MMIO = info->MMIO;
R128SavePtr restore = &info->SavedReg;
- R128TRACE(("R128Restore\n"));
#ifndef AVOID_FBDEV
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s\n", __func__));
if (info->FBDev) {
fbdevHWRestore(pScrn);
return;
@@ -2847,266 +2645,6 @@ void R128InitCommonRegisters(R128SavePtr
save->bus_cntl |= R128_BUS_RD_DISCARD_EN | R128_BUS_RD_ABORT_EN;
}
-Bool R128InitCrtcBase(xf86CrtcPtr crtc, R128SavePtr save, int x, int y)
-{
- ScrnInfoPtr pScrn = crtc->scrn;
- R128InfoPtr info = R128PTR(pScrn);
- int offset = y * info->CurrentLayout.displayWidth + x;
- int Base = pScrn->fbOffset;
-
- switch (info->CurrentLayout.pixel_code) {
- case 15:
- case 16: offset *= 2; break;
- case 24: offset *= 3; break;
- case 32: offset *= 4; break;
- }
- Base += offset;
-
- if (crtc->rotatedData != NULL)
- Base = pScrn->fbOffset + (char *)crtc->rotatedData - (char *)info->FB;
-
- Base &= ~7; /* 3 lower bits are always 0 */
- if (info->CurrentLayout.pixel_code == 24)
- Base += 8 * (Base % 3); /* Must be multiple of 8 and 3 */
-
- save->crtc_offset = Base;
- save->crtc_offset_cntl = 0;
-
- return TRUE;
-}
-
-Bool R128InitCrtc2Base(xf86CrtcPtr crtc, R128SavePtr save, int x, int y)
-{
- ScrnInfoPtr pScrn = crtc->scrn;
- R128InfoPtr info = R128PTR(pScrn);
- int offset = y * info->CurrentLayout.displayWidth + x;
- int Base = pScrn->fbOffset;
-
- switch (info->CurrentLayout.pixel_code) {
- case 15:
- case 16: offset *= 2; break;
- case 24: offset *= 3; break;
- case 32: offset *= 4; break;
- }
- Base += offset;
-
- if (crtc->rotatedData != NULL)
- Base = pScrn->fbOffset + (char *)crtc->rotatedData - (char *)info->FB;
-
- Base &= ~7; /* 3 lower bits are always 0 */
- if (info->CurrentLayout.pixel_code == 24)
- Base += 8 * (Base % 3); /* Must be multiple of 8 and 3 */
-
- save->crtc2_offset = Base;
- save->crtc2_offset_cntl = 0;
-
- return TRUE;
-}
-
-/* Define CRTC registers for requested video mode. */
-Bool R128InitCrtcRegisters(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode)
-{
- ScrnInfoPtr pScrn = crtc->scrn;
- R128InfoPtr info = R128PTR(pScrn);
- xf86OutputPtr output = R128FirstOutput(crtc);
- R128OutputPrivatePtr r128_output = output->driver_private;
-
- int format;
- int hsync_start;
- int hsync_wid;
- int hsync_fudge;
- int vsync_wid;
- int hsync_fudge_default[] = { 0x00, 0x12, 0x09, 0x09, 0x06, 0x05 };
- int hsync_fudge_fp[] = { 0x12, 0x11, 0x09, 0x09, 0x05, 0x05 };
-// int hsync_fudge_fp_crt[] = { 0x12, 0x10, 0x08, 0x08, 0x04, 0x04 };
-
- switch (info->CurrentLayout.pixel_code) {
- case 4: format = 1; break;
- case 8: format = 2; break;
- case 15: format = 3; break; /* 555 */
- case 16: format = 4; break; /* 565 */
- case 24: format = 5; break; /* RGB */
- case 32: format = 6; break; /* xRGB */
- default:
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Unsupported pixel depth (%d)\n",
- info->CurrentLayout.bitsPerPixel);
- return FALSE;
- }
-
- if (r128_output->MonType == MT_LCD || r128_output->MonType == MT_DFP)
- hsync_fudge = hsync_fudge_fp[format-1];
- else
- hsync_fudge = hsync_fudge_default[format-1];
-
- save->crtc_gen_cntl = (R128_CRTC_EXT_DISP_EN
- | R128_CRTC_EN
- | (format << 8)
- | ((mode->Flags & V_DBLSCAN)
- ? R128_CRTC_DBL_SCAN_EN
- : 0)
- | ((mode->Flags & V_INTERLACE)
- ? R128_CRTC_INTERLACE_EN
- : 0)
- | ((mode->Flags & V_CSYNC)
- ? R128_CRTC_CSYNC_EN
- : 0));
-
- if (r128_output->MonType == MT_LCD || r128_output->MonType == MT_DFP)
- save->crtc_gen_cntl &= ~(R128_CRTC_DBL_SCAN_EN | R128_CRTC_INTERLACE_EN);
-
- save->crtc_ext_cntl |= R128_VGA_ATI_LINEAR | R128_XCRT_CNT_EN;
-
- save->crtc_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0xffff)
- | (((mode->CrtcHDisplay / 8) - 1) << 16));
-
- hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
- if (!hsync_wid) hsync_wid = 1;
- if (hsync_wid > 0x3f) hsync_wid = 0x3f;
-
- hsync_start = mode->CrtcHSyncStart - 8 + hsync_fudge;
-
- save->crtc_h_sync_strt_wid = ((hsync_start & 0xfff)
- | (hsync_wid << 16)
- | ((mode->Flags & V_NHSYNC)
- ? R128_CRTC_H_SYNC_POL
- : 0));
-
-#if 1
- /* This works for double scan mode. */
- save->crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
- | ((mode->CrtcVDisplay - 1) << 16));
-#else
- /* This is what cce/nbmode.c example code
- does -- is this correct? */
- save->crtc_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
- | ((mode->CrtcVDisplay
- * ((mode->Flags & V_DBLSCAN) ? 2 : 1) - 1)
- << 16));
-#endif
-
- vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
- if (!vsync_wid) vsync_wid = 1;
- if (vsync_wid > 0x1f) vsync_wid = 0x1f;
-
- save->crtc_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
- | (vsync_wid << 16)
- | ((mode->Flags & V_NVSYNC)
- ? R128_CRTC_V_SYNC_POL
- : 0));
- save->crtc_pitch = info->CurrentLayout.displayWidth / 8;
-
- R128TRACE(("Pitch = %d bytes (virtualX = %d, displayWidth = %d)\n",
- save->crtc_pitch, pScrn->virtualX, info->CurrentLayout.displayWidth));
-
-#if X_BYTE_ORDER == X_BIG_ENDIAN
- /* Change the endianness of the aperture */
- switch (info->CurrentLayout.pixel_code) {
- case 15:
- case 16: save->config_cntl |= APER_0_BIG_ENDIAN_16BPP_SWAP; break;
- case 32: save->config_cntl |= APER_0_BIG_ENDIAN_32BPP_SWAP; break;
- default: break;
- }
-#endif
-
- return TRUE;
-}
-
-/* Define CRTC2 registers for requested video mode. */
-Bool R128InitCrtc2Registers(xf86CrtcPtr crtc, R128SavePtr save, DisplayModePtr mode)
-{
- ScrnInfoPtr pScrn = crtc->scrn;
- R128InfoPtr info = R128PTR(pScrn);
-
- int format;
- int hsync_start;
- int hsync_wid;
- int hsync_fudge;
- int vsync_wid;
- int hsync_fudge_default[] = { 0x00, 0x12, 0x09, 0x09, 0x06, 0x05 };
-
- switch (info->CurrentLayout.pixel_code) {
- case 4: format = 1; break;
- case 8: format = 2; break;
- case 15: format = 3; break; /* 555 */
- case 16: format = 4; break; /* 565 */
- case 24: format = 5; break; /* RGB */
- case 32: format = 6; break; /* xRGB */
- default:
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Unsupported pixel depth (%d)\n", info->CurrentLayout.bitsPerPixel);
- return FALSE;
- }
-
- hsync_fudge = hsync_fudge_default[format-1];
-
- save->crtc2_gen_cntl = (R128_CRTC2_EN
- | (format << 8)
- | ((mode->Flags & V_DBLSCAN)
- ? R128_CRTC2_DBL_SCAN_EN
- : 0));
-/*
- save->crtc2_gen_cntl &= ~R128_CRTC_EXT_DISP_EN;
- save->crtc2_gen_cntl |= (1 << 21);
-*/
- save->crtc2_h_total_disp = ((((mode->CrtcHTotal / 8) - 1) & 0xffff)
- | (((mode->CrtcHDisplay / 8) - 1) << 16));
-
- hsync_wid = (mode->CrtcHSyncEnd - mode->CrtcHSyncStart) / 8;
- if (!hsync_wid) hsync_wid = 1;
- if (hsync_wid > 0x3f) hsync_wid = 0x3f;
-
- hsync_start = mode->CrtcHSyncStart - 8 + hsync_fudge;
-
- save->crtc2_h_sync_strt_wid = ((hsync_start & 0xfff)
- | (hsync_wid << 16)
- | ((mode->Flags & V_NHSYNC)
- ? R128_CRTC2_H_SYNC_POL
- : 0));
-
-#if 1
- /* This works for double scan mode. */
- save->crtc2_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
- | ((mode->CrtcVDisplay - 1) << 16));
-#else
- /* This is what cce/nbmode.c example code
- does -- is this correct? */
- save->crtc2_v_total_disp = (((mode->CrtcVTotal - 1) & 0xffff)
- | ((mode->CrtcVDisplay
- * ((mode->Flags & V_DBLSCAN) ? 2 : 1) - 1)
- << 16));
-#endif
-
- vsync_wid = mode->CrtcVSyncEnd - mode->CrtcVSyncStart;
- if (!vsync_wid) vsync_wid = 1;
- if (vsync_wid > 0x1f) vsync_wid = 0x1f;
-
- save->crtc2_v_sync_strt_wid = (((mode->CrtcVSyncStart - 1) & 0xfff)
- | (vsync_wid << 16)
- | ((mode->Flags & V_NVSYNC)
- ? R128_CRTC2_V_SYNC_POL
- : 0));
- save->crtc2_pitch = info->CurrentLayout.displayWidth / 8;
-
- R128TRACE(("Pitch = %d bytes (virtualX = %d, displayWidth = %d)\n",
- save->crtc2_pitch, pScrn->virtualX,
- info->CurrentLayout.displayWidth));
- return TRUE;
-}
-
-/* Define DAC registers for the requested video mode. */
-void R128InitDACRegisters(R128SavePtr orig, R128SavePtr save, xf86OutputPtr output)
-{
- ScrnInfoPtr pScrn = output->scrn;
- R128InfoPtr info = R128PTR(pScrn);
- xf86CrtcPtr crtc = output->crtc;
- R128CrtcPrivatePtr r128_crtc = crtc->driver_private;
-
- save->dac_cntl = (R128_DAC_MASK_ALL | R128_DAC_VGA_ADR_EN |
- (!r128_crtc->crtc_id ? 0 : R128_DAC_CRT_SEL_CRTC2) |
- (info->dac6bits ? 0 : R128_DAC_8BIT_EN));
-}
-
/* Define RMX registers for the requested video mode. */
void R128InitRMXRegisters(R128SavePtr orig, R128SavePtr save,
xf86OutputPtr output, DisplayModePtr mode)
@@ -3210,265 +2748,6 @@ void R128InitLVDSRegisters(R128SavePtr o
save->lvds_gen_cntl &= ~R128_LVDS_SEL_CRTC2;
}
-/* Define PLL registers for requested video mode. */
-void R128InitPLLRegisters(xf86CrtcPtr crtc, R128SavePtr save,
- R128PLLPtr pll, double dot_clock)
-{
-#if R128_DEBUG
- ScrnInfoPtr pScrn = crtc->scrn;
-#endif
- unsigned long freq = dot_clock * 100;
- struct {
- int divider;
- int bitvalue;
- } *post_div,
- post_divs[] = {
- /* From RAGE 128 VR/RAGE 128 GL Register
- Reference Manual (Technical Reference
- Manual P/N RRG-G04100-C Rev. 0.04), page
- 3-17 (PLL_DIV_[3:0]). */
- { 1, 0 }, /* VCLK_SRC */
- { 2, 1 }, /* VCLK_SRC/2 */
- { 4, 2 }, /* VCLK_SRC/4 */
- { 8, 3 }, /* VCLK_SRC/8 */
-
- { 3, 4 }, /* VCLK_SRC/3 */
- /* bitvalue = 5 is reserved */
- { 6, 6 }, /* VCLK_SRC/6 */
- { 12, 7 }, /* VCLK_SRC/12 */
- { 0, 0 }
- };
-
- if (freq > pll->max_pll_freq) freq = pll->max_pll_freq;
- if (freq * 12 < pll->min_pll_freq) freq = pll->min_pll_freq / 12;
-
- for (post_div = &post_divs[0]; post_div->divider; ++post_div) {
- save->pll_output_freq = post_div->divider * freq;
- if (save->pll_output_freq >= pll->min_pll_freq
- && save->pll_output_freq <= pll->max_pll_freq) break;
- }
-
- save->dot_clock_freq = freq;
- save->feedback_div = R128Div(pll->reference_div * save->pll_output_freq,
- pll->reference_freq);
- save->post_div = post_div->divider;
-
- R128TRACE(("dc=%d, of=%d, fd=%d, pd=%d\n",
- save->dot_clock_freq,
- save->pll_output_freq,
- save->feedback_div,
- save->post_div));
-
- save->ppll_ref_div = pll->reference_div;
- save->ppll_div_3 = (save->feedback_div | (post_div->bitvalue << 16));
- save->htotal_cntl = 0;
-
-}
-
-/* Define PLL2 registers for requested video mode. */
-void R128InitPLL2Registers(xf86CrtcPtr crtc, R128SavePtr save,
- R128PLLPtr pll, double dot_clock)
-{
-#if R128_DEBUG
- ScrnInfoPtr pScrn = crtc->scrn;
-#endif
- unsigned long freq = dot_clock * 100;
- struct {
- int divider;
- int bitvalue;
- } *post_div,
- post_divs[] = {
- /* From RAGE 128 VR/RAGE 128 GL Register
- Reference Manual (Technical Reference
- Manual P/N RRG-G04100-C Rev. 0.04), page
- 3-17 (PLL_DIV_[3:0]). */
- { 1, 0 }, /* VCLK_SRC */
- { 2, 1 }, /* VCLK_SRC/2 */
- { 4, 2 }, /* VCLK_SRC/4 */
- { 8, 3 }, /* VCLK_SRC/8 */
-
- { 3, 4 }, /* VCLK_SRC/3 */
- /* bitvalue = 5 is reserved */
- { 6, 6 }, /* VCLK_SRC/6 */
- { 12, 7 }, /* VCLK_SRC/12 */
- { 0, 0 }
- };
-
- if (freq > pll->max_pll_freq) freq = pll->max_pll_freq;
- if (freq * 12 < pll->min_pll_freq) freq = pll->min_pll_freq / 12;
-
- for (post_div = &post_divs[0]; post_div->divider; ++post_div) {
- save->pll_output_freq_2 = post_div->divider * freq;
- if (save->pll_output_freq_2 >= pll->min_pll_freq
- && save->pll_output_freq_2 <= pll->max_pll_freq) break;
- }
-
- save->dot_clock_freq_2 = freq;
- save->feedback_div_2 = R128Div(pll->reference_div
- * save->pll_output_freq_2,
- pll->reference_freq);
- save->post_div_2 = post_div->divider;
-
- R128TRACE(("dc=%d, of=%d, fd=%d, pd=%d\n",
- save->dot_clock_freq_2,
- save->pll_output_freq_2,
- save->feedback_div_2,
- save->post_div_2));
-
- save->p2pll_ref_div = pll->reference_div;
- save->p2pll_div_0 = (save->feedback_div_2 | (post_div->bitvalue<<16));
- save->htotal_cntl2 = 0;
-}
-
-/* Define DDA registers for requested video mode. */
-Bool R128InitDDARegisters(xf86CrtcPtr crtc, R128SavePtr save,
- R128PLLPtr pll, DisplayModePtr mode)
-{
- ScrnInfoPtr pScrn = crtc->scrn;
- R128InfoPtr info = R128PTR(pScrn);
- xf86OutputPtr output = R128FirstOutput(crtc);
- R128OutputPrivatePtr r128_output = output->driver_private;
-
- int DisplayFifoWidth = 128;
- int DisplayFifoDepth = 32;
- int XclkFreq;
- int VclkFreq;
- int XclksPerTransfer;
- int XclksPerTransferPrecise;
- int UseablePrecision;
- int Roff;
- int Ron;
-
- XclkFreq = pll->xclk;
-
- VclkFreq = R128Div(pll->reference_freq * save->feedback_div,
- pll->reference_div * save->post_div);
-
- if (info->isDFP && !info->isPro2 && r128_output->PanelXRes > 0) {
- if (r128_output->PanelXRes != mode->CrtcHDisplay)
- VclkFreq = (VclkFreq * mode->CrtcHDisplay) / r128_output->PanelXRes;
- }
-
- XclksPerTransfer = R128Div(XclkFreq * DisplayFifoWidth,
- VclkFreq * (info->CurrentLayout.pixel_bytes * 8));
-
- UseablePrecision = R128MinBits(XclksPerTransfer) + 1;
-
- XclksPerTransferPrecise = R128Div((XclkFreq * DisplayFifoWidth)
- << (11 - UseablePrecision),
- VclkFreq * (info->CurrentLayout.pixel_bytes * 8));
-
- Roff = XclksPerTransferPrecise * (DisplayFifoDepth - 4);
-
- Ron = (4 * info->ram->MB
- + 3 * MAX(info->ram->Trcd - 2, 0)
- + 2 * info->ram->Trp
- + info->ram->Twr
- + info->ram->CL
- + info->ram->Tr2w
- + XclksPerTransfer) << (11 - UseablePrecision);
-
- if (Ron + info->ram->Rloop >= Roff) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "(Ron = %d) + (Rloop = %d) >= (Roff = %d)\n",
- Ron, info->ram->Rloop, Roff);
- return FALSE;
- }
-
- save->dda_config = (XclksPerTransferPrecise
- | (UseablePrecision << 16)
- | (info->ram->Rloop << 20));
-
- save->dda_on_off = (Ron << 16) | Roff;
-
- R128TRACE(("XclkFreq = %d; VclkFreq = %d; per = %d, %d (useable = %d)\n",
- XclkFreq,
- VclkFreq,
- XclksPerTransfer,
- XclksPerTransferPrecise,
- UseablePrecision));
- R128TRACE(("Roff = %d, Ron = %d, Rloop = %d\n",
- Roff, Ron, info->ram->Rloop));
-
- return TRUE;
-}
-
-/* Define DDA2 registers for requested video mode. */
-Bool R128InitDDA2Registers(xf86CrtcPtr crtc, R128SavePtr save,
- R128PLLPtr pll, DisplayModePtr mode)
-{
- ScrnInfoPtr pScrn = crtc->scrn;
- R128InfoPtr info = R128PTR(pScrn);
- xf86OutputPtr output = R128FirstOutput(crtc);
- R128OutputPrivatePtr r128_output = output->driver_private;
-
- int DisplayFifoWidth = 128;
- int DisplayFifoDepth = 32;
- int XclkFreq;
- int VclkFreq;
- int XclksPerTransfer;
- int XclksPerTransferPrecise;
- int UseablePrecision;
- int Roff;
- int Ron;
-
- XclkFreq = pll->xclk;
-
- VclkFreq = R128Div(pll->reference_freq * save->feedback_div_2,
- pll->reference_div * save->post_div_2);
-
- if (info->isDFP && !info->isPro2 && r128_output->PanelXRes > 0) {
- if (r128_output->PanelXRes != mode->CrtcHDisplay)
- VclkFreq = (VclkFreq * mode->CrtcHDisplay) / r128_output->PanelXRes;
- }
-
- XclksPerTransfer = R128Div(XclkFreq * DisplayFifoWidth,
- VclkFreq * (info->CurrentLayout.pixel_bytes * 8));
-
- UseablePrecision = R128MinBits(XclksPerTransfer) + 1;
-
- XclksPerTransferPrecise = R128Div((XclkFreq * DisplayFifoWidth)
- << (11 - UseablePrecision),
- VclkFreq * (info->CurrentLayout.pixel_bytes * 8));
-
- Roff = XclksPerTransferPrecise * (DisplayFifoDepth - 4);
-
- Ron = (4 * info->ram->MB
- + 3 * MAX(info->ram->Trcd - 2, 0)
- + 2 * info->ram->Trp
- + info->ram->Twr
- + info->ram->CL
- + info->ram->Tr2w
- + XclksPerTransfer) << (11 - UseablePrecision);
-
-
- if (Ron + info->ram->Rloop >= Roff) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "(Ron = %d) + (Rloop = %d) >= (Roff = %d)\n",
- Ron, info->ram->Rloop, Roff);
- return FALSE;
- }
-
- save->dda2_config = (XclksPerTransferPrecise
- | (UseablePrecision << 16)
- | (info->ram->Rloop << 20));
-
- /*save->dda2_on_off = (Ron << 16) | Roff;*/
- /* shift most be 18 otherwise there's corruption on crtc2 */
- save->dda2_on_off = (Ron << 18) | Roff;
-
- R128TRACE(("XclkFreq = %d; VclkFreq = %d; per = %d, %d (useable = %d)\n",
- XclkFreq,
- VclkFreq,
- XclksPerTransfer,
- XclksPerTransferPrecise,
- UseablePrecision));
- R128TRACE(("Roff = %d, Ron = %d, Rloop = %d\n",
- Roff, Ron, info->ram->Rloop));
-
- return TRUE;
-}
-
#if 0
/* Define initial palette for requested video mode. This doesn't do
anything for XFree86 4.0. */
@@ -3628,7 +2907,8 @@ Bool R128EnterVT(VT_FUNC_ARGS_DECL)
SCRN_INFO_PTR(arg);
R128InfoPtr info = R128PTR(pScrn);
- R128TRACE(("R128EnterVT\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s\n", __func__));
pScrn->vtSema = TRUE;
#ifndef AVOID_FBDEV
@@ -3670,7 +2950,8 @@ void R128LeaveVT(VT_FUNC_ARGS_DECL)
R128InfoPtr info = R128PTR(pScrn);
R128SavePtr save = &info->ModeReg;
- R128TRACE(("R128LeaveVT\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s\n", __func__));
#ifdef R128DRI
if (info->directRenderingEnabled) {
DRILock(pScrn->pScreen, 0);
@@ -3700,7 +2981,8 @@ static Bool R128CloseScreen(CLOSE_SCREEN
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
- R128TRACE(("R128CloseScreen\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s\n", __func__));
#ifdef R128DRI
/* Disable direct rendering */
@@ -3749,7 +3031,8 @@ void R128FreeScreen(FREE_SCREEN_ARGS_DEC
SCRN_INFO_PTR(arg);
R128InfoPtr info = R128PTR(pScrn);
- R128TRACE(("R128FreeScreen\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s\n", __func__));
if (info == NULL)
return;
#ifdef WITH_VGAHW
Index: xsrc/external/mit/xf86-video-r128/dist/src/r128_exa.c
diff -u xsrc/external/mit/xf86-video-r128/dist/src/r128_exa.c:1.2 xsrc/external/mit/xf86-video-r128/dist/src/r128_exa.c:1.3
--- xsrc/external/mit/xf86-video-r128/dist/src/r128_exa.c:1.2 Fri Sep 9 22:40:01 2016
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128_exa.c Sun Dec 30 06:46:48 2018
@@ -36,31 +36,10 @@
#include "exa.h"
#include "r128_reg.h"
+#include "r128_rop.h"
#include "xf86.h"
-static struct {
- int rop;
- int pattern;
-} R128_ROP[] = {
- { R128_ROP3_ZERO, R128_ROP3_ZERO }, /* GXclear */
- { R128_ROP3_DSa, R128_ROP3_DPa }, /* Gxand */
- { R128_ROP3_SDna, R128_ROP3_PDna }, /* GXandReverse */
- { R128_ROP3_S, R128_ROP3_P }, /* GXcopy */
- { R128_ROP3_DSna, R128_ROP3_DPna }, /* GXandInverted */
- { R128_ROP3_D, R128_ROP3_D }, /* GXnoop */
- { R128_ROP3_DSx, R128_ROP3_DPx }, /* GXxor */
- { R128_ROP3_DSo, R128_ROP3_DPo }, /* GXor */
- { R128_ROP3_DSon, R128_ROP3_DPon }, /* GXnor */
- { R128_ROP3_DSxn, R128_ROP3_PDxn }, /* GXequiv */
- { R128_ROP3_Dn, R128_ROP3_Dn }, /* GXinvert */
- { R128_ROP3_SDno, R128_ROP3_PDno }, /* GXorReverse */
- { R128_ROP3_Sn, R128_ROP3_Pn }, /* GXcopyInverted */
- { R128_ROP3_DSno, R128_ROP3_DPno }, /* GXorInverted */
- { R128_ROP3_DSan, R128_ROP3_DPan }, /* GXnand */
- { R128_ROP3_ONE, R128_ROP3_ONE } /* GXset */
-};
-
/* Assumes that depth 15 and 16 can be used as depth 16, which is okay since we
* require src and dest datatypes to be equal.
*/
@@ -92,12 +71,14 @@ static Bool R128GetOffsetPitch(PixmapPtr
R128InfoPtr info = R128PTR(pScrn);
if (pitch > 16320 || pitch % info->ExaDriver->pixmapPitchAlign != 0) {
- R128TRACE(("Bad pitch 0x%08x\n", pitch));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Bad pitch 0x%08x\n", pitch));
return FALSE;
}
if (offset % info->ExaDriver->pixmapOffsetAlign != 0) {
- R128TRACE(("Bad offset 0x%08x\n", offset));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Bad offset 0x%08x\n", offset));
return FALSE;
}
@@ -143,7 +124,7 @@ static void Emit2DState(ScrnInfoPtr pScr
}
#ifdef R128DRI
-static void EmitCCE2DState(ScrnInfoPtr pScrn)
+void EmitCCE2DState(ScrnInfoPtr pScrn)
{
R128InfoPtr info = R128PTR(pScrn);
int has_src = info->state_2d.src_pitch_offset;
@@ -182,11 +163,13 @@ R128PrepareSolid(PixmapPtr pPixmap, int
uint32_t datatype, dst_pitch_offset;
if (!R128GetDatatypeBpp(bpp, &datatype)) {
- R128TRACE(("R128GetDatatypeBpp failed\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "R128GetDatatypeBpp failed\n"));
return FALSE;
}
if (!R128GetPixmapOffsetPitch(pPixmap, &dst_pitch_offset)) {
- R128TRACE(("R128GetPixmapOffsetPitch failed\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "R128GetPixmapOffsetPitch failed\n"));
return FALSE;
}
if (info->state_2d.in_use) return FALSE;
@@ -282,15 +265,19 @@ R128PrepareCopy(PixmapPtr pSrcPixmap, Pi
uint32_t datatype, src_pitch_offset, dst_pitch_offset;
if (!R128GetDatatypeBpp(bpp, &datatype)) {
- R128TRACE(("R128GetDatatypeBpp failed\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "R128GetDatatypeBpp failed\n"));
return FALSE;
}
if (!R128GetPixmapOffsetPitch(pSrcPixmap, &src_pitch_offset)) {
- R128TRACE(("R128GetPixmapOffsetPitch source failed\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "R128GetPixmapOffsetPitch source "
+ "failed\n"));
return FALSE;
}
if (!R128GetPixmapOffsetPitch(pDstPixmap, &dst_pitch_offset)) {
- R128TRACE(("R128GetPixmapOffsetPitch dest failed\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "R128GetPixmapOffsetPitch dest failed\n"));
return FALSE;
}
if (info->state_2d.in_use) return FALSE;
@@ -329,7 +316,7 @@ R128Sync(ScreenPtr pScreen, int marker)
R128WaitForIdle(xf86ScreenToScrn(pScreen));
}
-static void
+void
R128Done(PixmapPtr pPixmap)
{
ScreenPtr pScreen = pPixmap->drawable.pScreen;
@@ -406,10 +393,6 @@ R128CCESync(ScreenPtr pScreen, int marke
R128CCEWaitForIdle(xf86ScreenToScrn(pScreen));
}
-#ifdef RENDER
-#include "r128_exa_render.c"
-#endif
-
#endif
/*
@@ -538,15 +521,26 @@ R128DownloadFromScreen(PixmapPtr pSrc, i
}
Bool
-R128EXAInit(ScreenPtr pScreen)
+R128EXAInit(ScreenPtr pScreen, int total)
{
ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen);
R128InfoPtr info = R128PTR(pScrn);
+ info->ExaDriver = exaDriverAlloc();
+ if (!info->ExaDriver) {
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Could not allocate EXA driver...\n");
+ return FALSE;
+ }
+
info->ExaDriver->exa_major = EXA_VERSION_MAJOR;
info->ExaDriver->exa_minor = EXA_VERSION_MINOR;
info->ExaDriver->memoryBase = info->FB + pScrn->fbOffset;
+ info->ExaDriver->offScreenBase = pScrn->virtualY *
+ (pScrn->displayWidth *
+ info->CurrentLayout.pixel_bytes);
+ info->ExaDriver->memorySize = total;
info->ExaDriver->flags = EXA_OFFSCREEN_PIXMAPS;
#if EXA_VERSION_MAJOR > 2 || (EXA_VERSION_MAJOR == 2 && EXA_VERSION_MINOR >= 3)
@@ -611,7 +605,7 @@ R128EXAInit(ScreenPtr pScreen)
}
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Initalizing 2D acceleration engine...\n");
+ "Initializing 2D acceleration engine...\n");
R128EngineInit(pScrn);
Index: xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c
diff -u xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c:1.6 xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c:1.7
--- xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c:1.6 Sun Mar 5 01:32:03 2017
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c Sun Dec 30 06:46:48 2018
@@ -58,6 +58,29 @@
static void R128ConnectorFindMonitor(ScrnInfoPtr pScrn, xf86OutputPtr output);
+/* Define DAC registers for the requested video mode. */
+void R128InitDACRegisters(R128SavePtr orig, R128SavePtr save, xf86OutputPtr output)
+{
+ ScrnInfoPtr pScrn = output->scrn;
+ R128InfoPtr info = R128PTR(pScrn);
+ xf86CrtcPtr crtc = output->crtc;
+ R128CrtcPrivatePtr r128_crtc = crtc->driver_private;
+
+ save->dac_cntl = (R128_DAC_MASK_ALL | R128_DAC_VGA_ADR_EN |
+ (!r128_crtc->crtc_id ? 0 : R128_DAC_CRT_SEL_CRTC2) |
+ (info->dac6bits ? 0 : R128_DAC_8BIT_EN));
+}
+
+/* Write DAC registers */
+void R128RestoreDACRegisters(ScrnInfoPtr pScrn, R128SavePtr restore)
+{
+ R128InfoPtr info = R128PTR(pScrn);
+ unsigned char *R128MMIO = info->MMIO;
+
+ OUTREGP(R128_DAC_CNTL, restore->dac_cntl,
+ R128_DAC_RANGE_CNTL | R128_DAC_BLANKING);
+}
+
static void r128_dpms(xf86OutputPtr output, int mode)
{
switch(mode) {
@@ -308,10 +331,10 @@ static R128MonitorType R128DisplayDDCCon
if (r128_output->pI2CBus) {
R128I2CBusPtr pR128I2CBus = &(r128_output->ddc_i2c);
- /* XXX: Radeon does something here to appease old monitors. */
- OUTREG(pR128I2CBus->ddc_reg, INREG(pR128I2CBus->ddc_reg) | mask1);
- OUTREG(pR128I2CBus->ddc_reg, INREG(pR128I2CBus->ddc_reg) & ~mask2);
- *MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), r128_output->pI2CBus);
+ /* XXX: Radeon does something here to appease old monitors. */
+ OUTREG(pR128I2CBus->ddc_reg, INREG(pR128I2CBus->ddc_reg) | mask1);
+ OUTREG(pR128I2CBus->ddc_reg, INREG(pR128I2CBus->ddc_reg) & ~mask2);
+ *MonInfo = xf86DoEDID_DDC2(XF86_SCRN_ARG(pScrn), r128_output->pI2CBus);
} else {
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "DDC2/I2C is not properly initialized\n");
return MT_NONE;
@@ -325,7 +348,7 @@ static R128MonitorType R128DisplayDDCCon
MonType = MT_DFP;
else
MonType = MT_CRT;
- }
+ }
}
return MonType;
@@ -371,8 +394,8 @@ DisplayModePtr R128ProbeOutputModes(xf86
}
}
- xf86SetModeCrtc(mode, INTERLACE_HALVE_V);
- if (mode->status == MODE_OK)
+ xf86SetModeCrtc(mode, INTERLACE_HALVE_V);
+ if (mode->status == MODE_OK)
mode->status = R128DoValidMode(output, mode, MODECHECK_FINAL);
}
@@ -441,40 +464,47 @@ static Bool R128I2CInit(xf86OutputPtr ou
return TRUE;
}
-void R128SetupGenericConnectors(ScrnInfoPtr pScrn, R128OutputType *otypes)
-{
- R128InfoPtr info = R128PTR(pScrn);
- R128EntPtr pR128Ent = R128EntPriv(pScrn);
-
- if (!pR128Ent->HasCRTC2 && !info->isDFP) {
- otypes[0] = OUTPUT_VGA;
- otypes[1] = OUTPUT_NONE;
- return;
- } else if (!pR128Ent->HasCRTC2) {
- otypes[0] = OUTPUT_DVI;
- otypes[1] = OUTPUT_NONE;
- return;
- }
-
- otypes[0] = OUTPUT_LVDS;
- otypes[1] = OUTPUT_VGA;
-}
-
void R128GetConnectorInfoFromBIOS(ScrnInfoPtr pScrn, R128OutputType *otypes)
{
R128InfoPtr info = R128PTR(pScrn);
- uint16_t bios_header;
- int offset;
+ uint16_t bios_header, offset;
+ uint32_t i;
- /* XXX: Currently, this function only finds VGA ports misidentified as DVI. */
- if (!info->VBIOS || otypes[0] != OUTPUT_DVI) return;
+ for (i = 0; i < R128_MAX_BIOS_CONNECTOR; i++) {
+ otypes[i] = OUTPUT_NONE;
+ }
+
+ /* non-x86 platform */
+ if (!info->VBIOS) {
+ otypes[0] = OUTPUT_VGA;
+ }
bios_header = R128_BIOS16(0x48);
- offset = R128_BIOS16(bios_header + 0x60);
+ offset = R128_BIOS16(bios_header + 0x40);
+ if (offset) {
+ otypes[0] = OUTPUT_LVDS;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Found FP table, assuming FP connector.\n");
+ } else {
+ bios_header = R128_BIOS16(0x48);
+ offset = R128_BIOS16(bios_header + 0x34);
+ if (offset) {
+ otypes[0] = OUTPUT_DVI;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Found DVI table, assuming DVI connector.\n");
+ }
+ }
+ offset = R128_BIOS16(bios_header + 0x2e);
if (offset) {
- otypes[0] = OUTPUT_VGA;
- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Found CRT table, assuming VGA connector\n");
+ if (otypes[0] == OUTPUT_NONE) {
+ otypes[0] = OUTPUT_VGA;
+ } else {
+ otypes[1] = OUTPUT_VGA;
+ }
+
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Found CRT table, assuming VGA connector.\n");
}
}
@@ -489,7 +519,6 @@ Bool R128SetupConnectors(ScrnInfoPtr pSc
int num_dvi = 0;
int i;
- R128SetupGenericConnectors(pScrn, otypes);
R128GetConnectorInfoFromBIOS(pScrn, otypes);
for (i = 0; i < R128_MAX_BIOS_CONNECTOR; i++) {
@@ -502,7 +531,7 @@ Bool R128SetupConnectors(ScrnInfoPtr pSc
for (i = 0; i < R128_MAX_BIOS_CONNECTOR; i++) {
if (otypes[i] == OUTPUT_NONE) continue;
- R128I2CBusRec i2c;
+ R128I2CBusRec i2c;
R128OutputPrivatePtr r128_output;
r128_output = xnfcalloc(sizeof(R128OutputPrivateRec), 1);
@@ -524,11 +553,11 @@ Bool R128SetupConnectors(ScrnInfoPtr pSc
output->interlaceAllowed = TRUE;
output->doubleScanAllowed = TRUE;
output->driver_private = r128_output;
- output->possible_clones = 0;
- if (otypes[i] == OUTPUT_LVDS || !pR128Ent->HasCRTC2)
- output->possible_crtcs = 1;
- else
- output->possible_crtcs = 2;
+ output->possible_clones = 0;
+ if (otypes[i] == OUTPUT_LVDS || !pR128Ent->HasCRTC2)
+ output->possible_crtcs = 1;
+ else
+ output->possible_crtcs = 2;
if (otypes[i] != OUTPUT_LVDS && info->DDC) {
i2c.ddc_reg = R128_GPIO_MONID;