Module Name:    xsrc
Committed By:   mrg
Date:           Sun Mar  5 01:32:03 UTC 2017

Modified Files:
        xsrc/external/mit/xf86-video-chips/dist/src: ct_accel.c
        xsrc/external/mit/xf86-video-glint/dist/src: glint_driver.c pm2_dac.c
        xsrc/external/mit/xf86-video-glint/include: config.h
        xsrc/external/mit/xf86-video-mga/dist/src: mga_dac3026.c mga_dacG.c
            mga_driver.c mga_exa.c mga_merge.c mga_storm.c
        xsrc/external/mit/xf86-video-r128/dist/src: r128_driver.c r128_output.c

Log Message:
merge xf86-video-chips 1.2.7, xf86-video-glint 1.2.9, xf86-video-mga 1.6.5,
and xf86-video-r128 6.10.2.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
    xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c
cvs rdiff -u -r1.11 -r1.12 \
    xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c
cvs rdiff -u -r1.4 -r1.5 \
    xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c
cvs rdiff -u -r1.5 -r1.6 xsrc/external/mit/xf86-video-glint/include/config.h
cvs rdiff -u -r1.7 -r1.8 \
    xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c
cvs rdiff -u -r1.4 -r1.5 xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c
cvs rdiff -u -r1.3 -r1.4 \
    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.17 -r1.18 \
    xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c
cvs rdiff -u -r1.5 -r1.6 \
    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-chips/dist/src/ct_accel.c
diff -u xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c:1.4 xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c:1.5
--- xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c:1.4	Sat Aug 20 16:21:08 2016
+++ xsrc/external/mit/xf86-video-chips/dist/src/ct_accel.c	Sun Mar  5 01:32:02 2017
@@ -25,8 +25,6 @@
 #include "config.h"
 #endif
 
-#ifdef HAVE_XAA_H
-
 /*
  * When monochrome tiles/stipples are cached on the HiQV chipsets the
  * pitch of the monochrome data is the displayWidth. The HiQV manuals
@@ -69,6 +67,8 @@
 #define CTNAME(subname) CATNAME(CHIPS,subname)
 #endif
 
+#ifdef HAVE_XAA_H
+
 #ifdef DEBUG
 # define DEBUG_P(x) ErrorF(x"\n");
 #elif defined X_DEBUG
@@ -164,7 +164,7 @@ static void  CTNAME(ReadPixmap)(ScrnInfo
 # define BE_SWAPON(pScrn,cPtr)
 # define BE_SWAPOFF(pScrn,cPtr)
 #endif
-
+#endif
 Bool 
 CTNAME(AccelInit)(ScreenPtr pScreen)
 {
@@ -1741,8 +1741,6 @@ CTNAME(ReadPixmap)(ScrnInfoPtr pScrn, in
 }
 #endif /* ReadPixmap */
 
-#endif /* writepixmap */
-
 #endif
 
-#endif /* HAVE_XAA_H */
+#endif

Index: xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c
diff -u xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c:1.11 xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c:1.12
--- xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c:1.11	Fri Dec 23 06:52:17 2016
+++ xsrc/external/mit/xf86-video-glint/dist/src/glint_driver.c	Sun Mar  5 01:32:02 2017
@@ -947,7 +947,9 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flag
     if (FBDevProbed) {
 	int default_depth, fbbpp;
 	
-	if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(pGlint->pEnt->device->options,"fbdev"))) {
+	if (!fbdevHWInit(pScrn, pGlint->PciInfo,
+			 xf86FindOptionValue(pGlint->pEnt->device->options,
+					     "fbdev"))) {
 		xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbdevHWInit failed!\n");	
 		return FALSE;
 	}
@@ -1086,7 +1088,9 @@ GLINTPreInit(ScrnInfoPtr pScrn, int flag
 		return FALSE;
 	}
 
-	if (!fbdevHWInit(pScrn,NULL,xf86FindOptionValue(pGlint->pEnt->device->options,"fbdev")))
+	if (!fbdevHWInit(pScrn, pGlint->PciInfo,
+			 xf86FindOptionValue(pGlint->pEnt->device->options,
+					     "fbdev")))
 	{
 		xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "fbdevHWInit failed!\n");
 		return FALSE;

Index: xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c
diff -u xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c:1.4 xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c:1.5
--- xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c:1.4	Fri Dec  9 23:13:14 2016
+++ xsrc/external/mit/xf86-video-glint/dist/src/pm2_dac.c	Sun Mar  5 01:32:02 2017
@@ -477,14 +477,9 @@ Permedia2I2CPutBits(I2CBusPtr b, int scl
 {
     GLINTPtr pGlint = (GLINTPtr) b->DriverPrivate.ptr;
     int r = (pGlint->DDCBus == b) ? PMDDCData : VSSerialBusControl;
-/*
-    This is bogus.
-    All this line does is to preserve the USE_MONID bit if set which prevents
-    the i2c bits from doing anything
-    CARD32 v = GLINT_READ_REG(r) & ~(ClkOut | DataOut);
-*/
+
     CARD32 v = 0;
-   
+
     if (scl > 0) v |= ClkOut;
     if (sda > 0) v |= DataOut;
 

Index: xsrc/external/mit/xf86-video-glint/include/config.h
diff -u xsrc/external/mit/xf86-video-glint/include/config.h:1.5 xsrc/external/mit/xf86-video-glint/include/config.h:1.6
--- xsrc/external/mit/xf86-video-glint/include/config.h:1.5	Sun Jun  2 07:41:11 2013
+++ xsrc/external/mit/xf86-video-glint/include/config.h	Sun Mar  5 01:32:02 2017
@@ -53,7 +53,7 @@
 #define PACKAGE_NAME "xf86-video-glint"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "xf86-video-glint 1.2.8"
+#define PACKAGE_STRING "xf86-video-glint 1.2.9"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "xf86-video-glint"
@@ -62,7 +62,7 @@
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "1.2.8"
+#define PACKAGE_VERSION "1.2.9"
 
 /* Major version of this package */
 #define PACKAGE_VERSION_MAJOR 1
@@ -71,10 +71,10 @@
 #define PACKAGE_VERSION_MINOR 2
 
 /* Patch version of this package */
-#define PACKAGE_VERSION_PATCHLEVEL 8
+#define PACKAGE_VERSION_PATCHLEVEL 9
 
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
 
 /* Version number of package */
-#define VERSION "1.2.8"
+#define VERSION "1.2.9"

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.7 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.7	Sat Aug 20 00:27:21 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_dac3026.c	Sun Mar  5 01:32:02 2017
@@ -854,7 +854,7 @@ MGA3026Save(ScrnInfoPtr pScrn, vgaRegPtr
 #ifdef XSERVER_LIBPCIACCESS
     {
 	uint32_t Option;
-	pci_device_cfg_read_u32(pMga->PciInfo, & Option, 
+	pci_device_cfg_read_u32(pMga->PciInfo, & Option,
 				PCI_OPTION_REG);
         mgaReg->Option = Option;
     }

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.4 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.4	Thu Sep 22 17:11:58 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_dacG.c	Sun Mar  5 01:32:02 2017
@@ -51,6 +51,75 @@ static Bool MGAGInit(ScrnInfoPtr, Displa
 static void MGAGLoadPalette(ScrnInfoPtr, int, int*, LOCO*, VisualPtr);
 static Bool MGAG_i2cInit(ScrnInfoPtr pScrn);
 
+#define P_ARRAY_SIZE 9
+
+void
+MGAG200E4ComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
+{
+    unsigned int ulComputedFo;
+    unsigned int ulFDelta;
+    unsigned int ulFPermitedDelta;
+    unsigned int ulFTmpDelta;
+    unsigned int ulVCOMax, ulVCOMin;
+    unsigned int ulTestP;
+    unsigned int ulTestM;
+    unsigned int ulTestN;
+    unsigned int ulFoInternal;
+    unsigned int ulPLLFreqRef;
+    unsigned int pulPValues[P_ARRAY_SIZE] = {16, 14, 12, 10, 8, 6, 4, 2, 1};
+    unsigned int i;
+    unsigned int ulVCO;
+    unsigned int ulFVV;
+
+    ulVCOMax        = 1600000;
+    ulVCOMin        = 800000;
+    ulPLLFreqRef    = 25000;
+
+    if(lFo < 25000)
+        lFo = 25000;
+
+    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++)
+    {
+        ulTestP = pulPValues[i];
+
+        if ((ulFoInternal * ulTestP) > ulVCOMax) continue;
+        if ((ulFoInternal * ulTestP) < ulVCOMin) continue;
+
+        for (ulTestN = 50; ulTestN <= 256; ulTestN++) {
+            for (ulTestM = 1; ulTestM <= 32; ulTestM++) {
+                ulComputedFo = (ulPLLFreqRef * ulTestN) / (ulTestM * ulTestP);
+                if (ulComputedFo > ulFoInternal)
+                    ulFTmpDelta = ulComputedFo - ulFoInternal;
+                else
+                    ulFTmpDelta = ulFoInternal - ulComputedFo;
+
+                if (ulFTmpDelta < ulFDelta) {
+                    ulFDelta = ulFTmpDelta;
+                    *M = ulTestM - 1;
+                    *N = ulTestN - 1;
+                    *P = ulTestP - 1;
+                }
+            }
+        }
+    }
+                                                                                                                    
+    ulVCO = ulPLLFreqRef * ((*N)+1) / ((*M)+1);
+    ulFVV = (ulVCO - 800000) / 50000;
+
+    if (ulFVV > 15)
+        ulFVV = 15;
+
+    *P |= (ulFVV << 4);                                                                                             
+
+    *M |= 0x80;
+}
+
 static void
 MGAG200SEComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
 {
@@ -207,6 +276,74 @@ MGAG200WBComputePLLParam(ScrnInfoPtr pSc
 #endif
 }
 
+void
+MGAG200EW3ComputePLLParam(ScrnInfoPtr pScrn ,long lFo, int *M, int *N, int *P)
+{
+    unsigned int ulComputedFo;
+    unsigned int ulFDelta;
+    unsigned int ulFPermitedDelta;
+    unsigned int ulFTmpDelta;
+    unsigned int ulVCOMax, ulVCOMin;
+    unsigned int ulTestP1;
+    unsigned int ulTestP2;
+    unsigned int ulTestM;
+    unsigned int ulTestN;
+    unsigned int ulPLLFreqRef;
+    unsigned int ulTestP1Start;
+    unsigned int ulTestP1End;
+    unsigned int ulTestP2Start;
+    unsigned int ulTestP2End;
+    unsigned int ulTestMStart;
+    unsigned int ulTestMEnd;
+    unsigned int ulTestNStart;
+    unsigned int ulTestNEnd;
+
+    ulVCOMax        = 800000;
+    ulVCOMin        = 400000;
+    ulPLLFreqRef    = 25000;
+    ulTestP1Start   = 1;
+    ulTestP1End     = 8;
+    ulTestP2Start   = 1;
+    ulTestP2End     = 8;
+    ulTestMStart    = 1;
+    ulTestMEnd      = 26;
+    ulTestNStart    = 32;
+    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++) {
+        for (ulTestP2 = ulTestP2Start; ulTestP2 < ulTestP2End; ulTestP2++) {
+            if (ulTestP1 < ulTestP2) continue;
+            if ((lFo * ulTestP1 * ulTestP2) > ulVCOMax) continue;
+            if ((lFo * ulTestP1 * ulTestP2) < ulVCOMin) continue;
+
+            for (ulTestM = ulTestMStart; ulTestM < ulTestMEnd; ulTestM++) {
+                for (ulTestN = ulTestNStart; ulTestN < ulTestNEnd; ulTestN++) {
+                    ulComputedFo = (ulPLLFreqRef * ulTestN) / (ulTestM * ulTestP1 * ulTestP2);
+                    if (ulComputedFo > lFo)
+                        ulFTmpDelta = ulComputedFo - lFo;
+                    else
+                        ulFTmpDelta = lFo - ulComputedFo;
+
+                    if (ulFTmpDelta < ulFDelta) {
+                        ulFDelta = ulFTmpDelta;
+                        *M = (CARD8)((ulTestN & 0x100) >> 1) | 
+                             (CARD8)(ulTestM);
+                        *N = (CARD8)(ulTestN & 0xFF);
+                        *P = (CARD8)((ulTestN & 0x600) >> 3) | 
+                             (CARD8)(ulTestP2 << 3) | 
+                             (CARD8)ulTestP1;
+                    }
+                }
+            }
+        }
+    }
+}
+
 static void
 MGAG200EHComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
 {
@@ -892,7 +1029,11 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_o
 	}
 
 	if (pMga->is_G200SE) {
-	    MGAG200SEComputePLLParam(pScrn, f_out, &m, &n, &p);
+            if (pMga->reg_1e24 >= 0x04) {
+                MGAG200E4ComputePLLParam(pScrn, f_out, &m, &n, &p);
+            } else {
+                MGAG200SEComputePLLParam(pScrn, f_out, &m, &n, &p);
+            }
 
 	    pReg->DacRegs[ MGA1064_PIX_PLLC_M ] = m;
 	    pReg->DacRegs[ MGA1064_PIX_PLLC_N ] = n;
@@ -904,7 +1045,14 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_o
 	    pReg->PllN = n;
 	    pReg->PllP = p;
 	} else if (pMga->is_G200WB) {
-	    MGAG200WBComputePLLParam(pScrn, f_out, &m, &n, &p);
+            if (pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI)
+            {
+                 MGAG200EW3ComputePLLParam(pScrn, f_out, &m, &n, &p);
+            }
+            else
+            {
+	         MGAG200WBComputePLLParam(pScrn, f_out, &m, &n, &p);
+            }
 
 	    pReg->PllM = m;
 	    pReg->PllN = n;
@@ -1094,6 +1242,7 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModeP
 		break;
 
         case PCI_CHIP_MGAG200_WINBOND_PCI:
+        case PCI_CHIP_MGAG200_EW3_PCI:
                 pReg->DacRegs[MGA1064_VREF_CTL] = 0x07;
                 pReg->Option = 0x41049120;
                 pReg->Option2 = 0x0000b000;
@@ -1234,7 +1383,7 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModeP
         if (pMga->is_G200WB){
             pReg->ExtVga[1] |= 0x88;
         }
-	pReg->ExtVga_Index24 = 0x05;
+	pReg->ExtVga_MgaReq = 0x05;
 		
 	pVga->CRTC[0]	= ht - 4;
 	pVga->CRTC[1]	= hd;
@@ -1483,7 +1632,12 @@ MGA_NOT_HAL(
         {
 			outMGAdac(0x90, mgaReg->Dac_Index90);
         }
-   
+           if (pMga->is_G200SE && (pMga->reg_1e24 >= 0x04)) {
+              outMGAdac( 0x1a, 0x09);
+              usleep(500);
+              outMGAdac( 0x1a, 0x01);
+           }
+    
 	   if (!MGAISGx50(pMga)) {
 	       /* restore pci_option register */
 #ifdef XSERVER_LIBPCIACCESS
@@ -1530,7 +1684,15 @@ MGA_NOT_HAL(
 
            if (pMga->is_G200ER) {
                OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
-               OUTREG8(MGAREG_CRTCEXT_DATA,  mgaReg->ExtVga_Index24);			   
+               OUTREG8(MGAREG_CRTCEXT_DATA,  mgaReg->ExtVga_MgaReq);			   
+           }
+
+           if (pMga->is_G200WB) {
+               if(pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI)
+               {
+                   OUTREG8(MGAREG_CRTCEXT_INDEX, 0x34);
+                   OUTREG8(MGAREG_CRTCEXT_DATA,  mgaReg->ExtVga_MgaReq);
+               } 
            }
 
 	   /* This handles restoring the generic VGA registers. */
@@ -1719,8 +1881,16 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vg
 	if (pMga->is_G200ER)
 	{
 		OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
-		mgaReg->ExtVga_Index24 = INREG8(MGAREG_CRTCEXT_DATA);
-	}
+		mgaReg->ExtVga_MgaReq = INREG8(MGAREG_CRTCEXT_DATA);
+ 	}
+        if (pMga->is_G200WB) 
+        {
+            if(pMga->Chipset == PCI_CHIP_MGAG200_EW3_PCI)
+            {
+                OUTREG8(MGAREG_CRTCEXT_INDEX, 0x34);
+                mgaReg->ExtVga_MgaReq = INREG8(MGAREG_CRTCEXT_DATA);                
+            }
+        }
 
 #ifdef DEBUG		
 	ErrorF("Saved values:\nDAC:");

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.3 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.3	Sat Aug 20 00:27:21 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_driver.c	Sun Mar  5 01:32:02 2017
@@ -315,7 +315,7 @@ static const struct mga_device_attribute
     },
 
     /* G200SE A PCI */
-    [10] = { 0, 1, 0, 0, 1, 0, 0, 1, new_BARs,
+    [10] = { 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 */
@@ -331,7 +331,7 @@ static const struct mga_device_attribute
     },
 
     /* G200SE B PCI */
-    [11] = { 0, 1, 0, 0, 1, 0, 0, 1, new_BARs,
+    [11] = { 0, 1, 0, 0, 1, 0, 0, 0, new_BARs,
             (TRANSC_SOLID_FILL | TWO_PASS_COLOR_EXPAND | USE_LINEAR_EXPANSION),
 	{
 	    { 50000, 114000 }, /* System VCO frequencies */
@@ -408,6 +408,22 @@ static const struct mga_device_attribute
 	},
 
 	16384, 0x4000,          /* Memory probe size & offset values */
+    },
+
+    /* G200WB */
+    [16] = { 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 */
     }
 };
 
@@ -438,7 +454,9 @@ static const struct pci_id_match mga_dev
 
     MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EH_PCI, 14 ),
 
-	MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_ER_PCI, 15 ),
+    MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_ER_PCI, 15 ),
+
+    MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EW3_PCI, 16 ),
 
     { 0, 0, 0 },
 };
@@ -459,6 +477,7 @@ static SymTabRec MGAChipsets[] = {
     { PCI_CHIP_MGAG200_EV_PCI,	"mgag200 EV Maxim" },
     { PCI_CHIP_MGAG200_ER_PCI,	"mgag200 ER SH7757" },	
     { PCI_CHIP_MGAG200_WINBOND_PCI,	"mgag200 eW Nuvoton" },
+    { PCI_CHIP_MGAG200_EW3_PCI,	"mgag200 eW3 Nuvoton" },
     { PCI_CHIP_MGAG200_EH_PCI,	"mgag200eH" },
     { PCI_CHIP_MGAG400,		"mgag400" },
     { PCI_CHIP_MGAG550,		"mgag550" },
@@ -484,6 +503,8 @@ static PciChipsets MGAPciChipsets[] = {
 	RES_SHARED_VGA },
     { PCI_CHIP_MGAG200_WINBOND_PCI, PCI_CHIP_MGAG200_WINBOND_PCI,
 	RES_SHARED_VGA },
+    { PCI_CHIP_MGAG200_EW3_PCI, PCI_CHIP_MGAG200_EW3_PCI,
+	RES_SHARED_VGA },
     { PCI_CHIP_MGAG200_EH_PCI, PCI_CHIP_MGAG200_EH_PCI,
 	RES_SHARED_VGA },
     { PCI_CHIP_MGAG400,	    PCI_CHIP_MGAG400,	RES_SHARED_VGA },
@@ -923,6 +944,9 @@ MGAProbe(DriverPtr drv, int flags)
                 attrib_no = 15;
                 break;
 				
+            case PCI_CHIP_MGAG200_EW3_PCI:
+                attrib_no = 16;
+                break;
 
 	    default:
 		return FALSE;
@@ -1541,7 +1565,8 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
     pMga->is_G200SE = (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI)
 	|| (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI);
     pMga->is_G200EV = (pMga->Chipset == PCI_CHIP_MGAG200_EV_PCI);
-    pMga->is_G200WB = (pMga->Chipset == PCI_CHIP_MGAG200_WINBOND_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_G200ER = (pMga->Chipset == PCI_CHIP_MGAG200_ER_PCI);
 
@@ -2049,6 +2074,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
     case PCI_CHIP_MGAG200_SE_A_PCI:
     case PCI_CHIP_MGAG200_SE_B_PCI:
     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_ER_PCI:	
@@ -2163,8 +2189,9 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
 	  case PCI_CHIP_MGAG200_SE_A_PCI:
 	  case PCI_CHIP_MGAG200_SE_B_PCI:
           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_ER_PCI:	  
 	    pMga->SrcOrg = 0;
 	    pMga->DstOrg = 0;
@@ -2347,6 +2374,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
 	case PCI_CHIP_MGAG200_PCI:
 	case PCI_CHIP_MGAG200_SE_B_PCI:
         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_ER_PCI:	
@@ -2594,7 +2622,8 @@ MGAMapMem(ScrnInfoPtr pScrn)
 	pciaddr_t fbsize = pMga->FbMapSize;
 	err = pci_device_map_range(dev,
 				   fbaddr, fbsize,
-				   PCI_DEV_MAP_FLAG_WRITABLE,
+				   PCI_DEV_MAP_FLAG_WRITABLE |
+				   PCI_DEV_MAP_FLAG_WRITE_COMBINE,
 				   (void **)&pMga->FbBase);
 
 	if (err) {
@@ -3825,7 +3854,7 @@ MGAValidMode(SCRN_ARG_TYPE arg, DisplayM
 	        if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 244)
 	            return MODE_BANDWIDTH;
         } else {
-            if (pMga->reg_1e24 >= 0x02) {
+            if (pMga->reg_1e24 == 0x02) {
 	            if (mode->HDisplay > 1920)
 	                return MODE_VIRTUAL_X;
 	            if (mode->VDisplay > 1200)
@@ -3837,12 +3866,15 @@ MGAValidMode(SCRN_ARG_TYPE arg, DisplayM
     } else if (pMga->is_G200WB){
         if (mode->Flags & V_DBLSCAN)
             return MODE_NO_DBLESCAN;
-	if (pMga->KVM && mode->HDisplay > 1280)
-	    return MODE_VIRTUAL_X;
-	if (pMga->KVM && mode->VDisplay > 1024)
-	    return MODE_VIRTUAL_Y;
-	if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 318.77)
-	    return MODE_BANDWIDTH;
+        if (pMga->Chipset != PCI_CHIP_MGAG200_EW3_PCI)
+        {
+	    if (pMga->KVM && mode->HDisplay > 1280)
+	        return MODE_VIRTUAL_X;
+	    if (pMga->KVM && mode->VDisplay > 1024)
+	        return MODE_VIRTUAL_Y;
+	    if (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 318.77)
+	        return MODE_BANDWIDTH;
+        }
     } else if (pMga->is_G200EV
 	       && (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 327)) {
 	return MODE_BANDWIDTH;
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.3 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.3	Fri Aug 19 20:45:16 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_exa.c	Sun Mar  5 01:32:02 2017
@@ -34,7 +34,6 @@
 #include "config.h"
 #endif
 
-#include "xorg-server.h"
 #include "xf86.h"
 
 #include "mga.h"
@@ -319,6 +318,11 @@ mgaGetTexFormat(PicturePtr pPict)
 static Bool
 mgaCheckSourceTexture(int tmu, PicturePtr pPict)
 {
+    if (!pPict->pDrawable) {
+        DEBUG_MSG(("Solid / gradient pictures not supported\n"));
+        return FALSE;
+    }
+
     int w = pPict->pDrawable->width;
     int h = pPict->pDrawable->height;
 
@@ -355,7 +359,7 @@ static Bool
 mgaCheckComposite(int op, PicturePtr pSrcPict, PicturePtr pMaskPict,
                   PicturePtr pDstPict)
 {
-    MGAPtr pMga = xf86ScreenToScrn(pSrcPict->pDrawable->pScreen)->driverPrivate;
+    MGAPtr pMga = xf86ScreenToScrn(pDstPict->pDrawable->pScreen)->driverPrivate;
 
     if (op >= sizeof(mgaBlendOp) / sizeof(mgaBlendOp[0])) {
         DEBUG_MSG(("unsupported op %x\n", op));
@@ -522,6 +526,7 @@ mgaPrepareComposite(int op, PicturePtr p
 {
     PMGA(pDst);
     CARD32 fcol = 0xff000000, ds0 = 0, ds1 = 0, cmd, blendcntl;
+    if (!pSrc || !pSrcPict->pDrawable) return FALSE;
 
     mgaSetup(pMga, pDst, pDstPict, 2);
     OUTREG(MGAREG_DSTORG, exaGetPixmapOffset(pDst));
@@ -724,31 +729,6 @@ mgaUploadToScreen(PixmapPtr pDst, int x,
     return TRUE;
 }
 
-static Bool
-mgaDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h,
-                      char *dst, int dst_pitch)
-{
-    PMGA(pSrc);
-
-    char *src = (char *)(unsigned long) exaGetPixmapFirstPixel(pSrc);
-    int src_pitch = exaGetPixmapPitch(pSrc);
-
-    int cpp = (pSrc->drawable.bitsPerPixel + 7) / 8;
-    int bytes = w * cpp;
-
-    src += y * src_pitch + x * cpp;
-
-    QUIESCE_DMA(pSrc);
-
-    while (h--) {
-	memcpy (dst, src, bytes);
-	src += src_pitch;
-	dst += dst_pitch;
-    }
-
-    return TRUE;
-}
-
 static void
 mgaWaitMarker(ScreenPtr pScreen, int marker)
 {
@@ -896,7 +876,6 @@ mgaExaInit(ScreenPtr pScreen)
     }
 
     pExa->UploadToScreen = mgaUploadToScreen;
-    pExa->DownloadFromScreen = mgaDownloadFromScreen;
 
 #ifdef MGADRI
     if (pMga->directRenderingEnabled)
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.3 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.3	Sat Aug 20 00:27:22 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_merge.c	Sun Mar  5 01:32:02 2017
@@ -353,9 +353,10 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, i
     case PCI_CHIP_MGAG200_SE_A_PCI:
     case PCI_CHIP_MGAG200_SE_B_PCI:
     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_ER_PCI:
+    case PCI_CHIP_MGAG200_ER_PCI:
     case PCI_CHIP_MGAG400:
     case PCI_CHIP_MGAG550:
 	MGAGSetupFuncs(pScrn);
@@ -505,6 +506,7 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, i
 	case PCI_CHIP_MGAG200_SE_A_PCI:
 	case PCI_CHIP_MGAG200_SE_B_PCI:
         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_ER_PCI:		
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.3 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.3	Sat Aug 20 00:27:22 2016
+++ xsrc/external/mit/xf86-video-mga/dist/src/mga_storm.c	Sun Mar  5 01:32:02 2017
@@ -1148,6 +1148,7 @@ void MGAStormEngineInit( ScrnInfoPtr pSc
     case PCI_CHIP_MGAG200_SE_A_PCI:
     case PCI_CHIP_MGAG200_SE_B_PCI:
     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_ER_PCI:	

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.17 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.17	Tue Aug 16 08:09:12 2016
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128_driver.c	Sun Mar  5 01:32:03 2017
@@ -1516,10 +1516,6 @@ Bool R128PreInit(ScrnInfoPtr pScrn, int 
     if (info->MMIO) R128UnmapMMIO(pScrn);
     info->MMIO = NULL;
 
-    xf86DrvMsg(pScrn->scrnIndex, X_NOTICE,
-	"For information on using the multimedia capabilities\n\tof this"
-	" adapter, please see http://gatos.sf.net.\n";);
-
     return TRUE;
 
   fail:

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.5 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.5	Tue Aug 16 08:09:12 2016
+++ xsrc/external/mit/xf86-video-r128/dist/src/r128_output.c	Sun Mar  5 01:32:03 2017
@@ -35,7 +35,13 @@
 
 #include "xf86.h"
 #include "xf86Modes.h"
+
+#ifdef HAVE_XEXTPROTO_71
 #include "X11/extensions/dpmsconst.h"
+#else
+#define DPMS_SERVER
+#include "X11/extensions/dpms.h"
+#endif
 
 #include "r128.h"
 #include "r128_probe.h"

Reply via email to