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"