xserver-xorg-video-mga: Changes to 'debian-unstable'
ChangeLog | 37 ++++++++++++
debian/changelog | 12 +++
man/Makefile.am | 4 -
man/mga.man | 1
src/binding.h | 1
src/mga.h | 10 ++-
src/mga_common.h | 2
src/mga_dacG.c | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++---
src/mga_dri.h | 2
src/mga_dripriv.h | 2
src/mga_driver.c | 67 ++++++++++++++++------
src/mga_macros.h | 2
src/mga_merge.c | 2
src/mga_reg.h | 13 +---
src/mga_sarea.h | 2
src/mga_storm.c | 1
src/mgareg_flags.h | 1
util/stormdwg.c | 5 -
18 files changed, 269 insertions(+), 55 deletions(-)
New commits:
commit b331bd47b60670988b7d65287e564f16fdeea2d2
Author: Tormod Volden <debian.tormod@gmail.com>
Date: Mon Feb 21 21:09:01 2011 +0100
New upstream snapshot, bump changelogs.
diff --git a/ChangeLog b/ChangeLog
index 8036354..53ef9fe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,40 @@
+commit 5f1b04e86e79938c8158055a777280a649f95510
+Author: Yannick Heneault <yheneaul@matrox.com>
+Date: Fri Dec 17 09:00:46 2010 -0500
+
+ added support for G200ER.
+
+commit f7a2ef60e18e2cc464f69c1cad4681096c645651
+Author: Alan Coopersmith <alan.coopersmith@oracle.com>
+Date: Sat Oct 30 09:38:31 2010 -0700
+
+ Sun's copyrights now belong to Oracle
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 636c3c88e7e9cb30010fe1731cd7356849f3f172
+Author: Adam Jackson <ajax@redhat.com>
+Date: Thu Oct 14 14:36:06 2010 -0400
+
+ Don't allow the config file to override BIOS location
+
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+
+commit 0bd44fad450843b7f1c35c70ab356a2b250d107d
+Author: Jesse Adkins <jesserayadkins@gmail.com>
+Date: Tue Sep 28 13:29:51 2010 -0700
+
+ Purge cvs tags.
+
+ Signed-off-by: Jesse Adkins <jesserayadkins@gmail.com>
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+
+commit 951474c7fcd1b28d3178a6644d58958cb3bdf5a8
+Author: Yannick Heneault <yheneaul@matrox.com>
+Date: Wed Aug 25 11:16:27 2010 -0400
+
+ modified G200SE conditionnal statement about revision register for products compatibility.
+
commit c08b112bfe14fbfe713e4757eb0b704c8ed1f339
Author: Adam Jackson <ajax@redhat.com>
Date: Tue Aug 10 10:58:41 2010 -0400
diff --git a/debian/changelog b/debian/changelog
index 76a9311..41fae66 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+xserver-xorg-video-mga (1:1.4.13+git20110221.5f1b04e.dfsg-1) UNRELEASED; urgency=low
+
+ * New upstream snapshot
+ - 5f1b04e... added support for G200ER.
+ - f7a2ef6... Sun's copyrights now belong to Oracle
+ - 636c3c8... Don't allow the config file to override BIOS location
+ - 0bd44fa... Purge cvs tags.
+ - 951474c... modified G200SE conditionnal statement about revision
+ register for products compatibility.
+
+ -- Tormod Volden <debian.tormod@gmail.com> Mon, 21 Feb 2011 20:45:57 +0100
+
xserver-xorg-video-mga (1:1.4.13.dfsg-2) unstable; urgency=low
* Switch to dh:
commit 5f1b04e86e79938c8158055a777280a649f95510
Author: Yannick Heneault <yheneaul@matrox.com>
Date: Fri Dec 17 09:00:46 2010 -0500
added support for G200ER.
diff --git a/src/mga.h b/src/mga.h
index 7725b56..c520e86 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -136,6 +136,10 @@ void MGAdbg_outreg32(ScrnInfoPtr, int,int, char*);
#define PCI_CHIP_MGAG200_EH_PCI 0x0533
#endif
+#ifndef PCI_CHIP_MGAG200_ER_PCI
+#define PCI_CHIP_MGAG200_ER_PCI 0x0534
+#endif
+
/*
* Read/write to the DAC via MMIO
*/
@@ -199,7 +203,9 @@ void MGAdbg_outreg32(ScrnInfoPtr, int,int, char*);
typedef struct {
unsigned char ExtVga[6];
unsigned char DacClk[6];
- unsigned char * DacRegs;
+ unsigned char ExtVga_Index24;
+ unsigned char Dac_Index90;
+ unsigned char * DacRegs;
unsigned long crtc2[0x58];
unsigned char dac2[0x21];
CARD32 Option;
@@ -478,6 +484,7 @@ typedef struct {
int is_G200WB:1;
int is_G200EV:1;
int is_G200EH:1;
+ int is_G200ER:1;
int KVM;
diff --git a/src/mga_dacG.c b/src/mga_dacG.c
index df00765..fca1031 100644
--- a/src/mga_dacG.c
+++ b/src/mga_dacG.c
@@ -444,6 +444,116 @@ MGAG200WBPIXPLLSET(ScrnInfoPtr pScrn, MGARegPtr mgaReg)
outMGAdac(MGA1064_REMHEADCTL, ucTempByte);
}
+#define G200ER_PLLREF 48000
+#define G200ER_VCOMIN 1056000
+#define G200ER_VCOMAX 1488000
+
+static void MGAG200ERComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *piM, int *piN, int *piP)
+{
+
+ int ulM;
+ int ulN;
+ int ulO;
+ int ulR;
+
+ CARD32 ulComputedFo;
+ CARD32 ulVco;
+ CARD32 ulFDelta;
+ CARD32 ulFTmpDelta;
+
+ CARD32 aulMDivValue[] = {1, 2, 4, 8};
+
+ CARD32 ulFo = lFo;
+
+ ulFDelta = 0xFFFFFFFF;
+
+ for (ulR = 0; ulR < 4; ulR++)
+ {
+ if(ulFDelta==0) break;
+ for (ulN = 5; (ulN <= 128) ; ulN++)
+ {
+ if(ulFDelta==0) break;
+ for (ulM = 3; ulM >= 0; ulM--)
+ {
+ if(ulFDelta==0) break;
+ for (ulO = 5; ulO <= 32; ulO++)
+ {
+ ulVco = (G200ER_PLLREF * (ulN+1)) / (ulR+1);
+ // Validate vco
+ if (ulVco < G200ER_VCOMIN) continue;
+ if (ulVco > G200ER_VCOMAX) continue;
+ ulComputedFo = ulVco / (aulMDivValue[ulM] * (ulO+1));
+
+ if (ulComputedFo > ulFo)
+ {
+ ulFTmpDelta = ulComputedFo - ulFo;
+ }
+ else
+ {
+ ulFTmpDelta = ulFo - ulComputedFo;
+ }
+
+ if (ulFTmpDelta < ulFDelta)
+ {
+ ulFDelta = ulFTmpDelta;
+ // XG200ERPIXPLLCM M<1:0> O<7:3>
+ *piM = (CARD8)ulM | (CARD8)(ulO<<3);
+ //
+ // XG200ERPIXPLLCN N<6:0>
+ *piN = (CARD8)ulN;
+ //
+ // XG200ERPIXPLLCP R<1:0> cg<7:4> (Use R value)
+ *piP = (CARD8)ulR | (CARD8)(ulR<<3);
+
+ // Test
+ int ftest = (G200ER_PLLREF * (ulN+1)) / ((ulR+1) * aulMDivValue[ulM] * (ulO+1));
+ ftest=ftest;
+ }
+ } // End O Loop
+ } // End M Loop
+ } // End N Loop
+ } // End R Loop
+}
+
+static void
+MGAG200ERPIXPLLSET(ScrnInfoPtr pScrn, MGARegPtr mgaReg)
+{
+ //TODO G200ER Validate sequence
+ CARD8 ucPixCtrl, ucTempByte;
+ MGAPtr pMga = MGAPTR(pScrn);
+
+
+ // Set pixclkdis to 1
+ ucPixCtrl = inMGAdac(MGA1064_PIX_CLK_CTL);
+ ucPixCtrl |= MGA1064_PIX_CLK_CTL_CLK_DIS;
+ outMGAdac(MGA1064_PIX_CLK_CTL, ucPixCtrl);
+
+ ucTempByte = inMGAdac(MGA1064_REMHEADCTL);
+ ucTempByte |= MGA1064_REMHEADCTL_CLKDIS;
+ outMGAdac(MGA1064_REMHEADCTL, ucTempByte);
+
+ // Select PLL Set C
+ ucTempByte = INREG8(MGAREG_MEM_MISC_READ);
+ ucTempByte |= (0x3<<2) | 0xc0; //select MGA pixel clock
+ OUTREG8(MGAREG_MEM_MISC_WRITE, ucTempByte);
+
+ ucPixCtrl &= ~MGA1064_PIX_CLK_CTL_CLK_DIS;
+ ucPixCtrl |= MGA1064_PIX_CLK_CTL_CLK_POW_DOWN;
+ outMGAdac(MGA1064_PIX_CLK_CTL, ucPixCtrl);
+
+ // Wait 500 us
+ usleep(500);
+
+ // Program the Pixel PLL Register
+ outMGAdac(MGA1064_ER_PIX_PLLC_N, mgaReg->PllN);
+ outMGAdac(MGA1064_ER_PIX_PLLC_M, mgaReg->PllM);
+ outMGAdac(MGA1064_ER_PIX_PLLC_P, mgaReg->PllP);
+
+ // Wait 50 us
+ usleep(50);
+
+}
+
static void
MGAG200WBPrepareForModeSwitch(ScrnInfoPtr pScrn)
{
@@ -768,8 +878,13 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_out )
pReg->PllM = m;
pReg->PllN = n;
- pReg->PllP = p;
- } else {
+ pReg->PllP = p;
+ } else if (pMga->is_G200ER) {
+ MGAG200ERComputePLLParam(pScrn, f_out, &m, &n, &p);
+ pReg->PllM = m;
+ pReg->PllN = n;
+ pReg->PllP = p;
+ } else {
/* Do the calculations for m, n, p and s */
MGAGCalcClock( pScrn, f_out, &m, &n, &p, &s );
@@ -966,6 +1081,10 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
pReg->Option2 = 0x0000b000;
break;
+ case PCI_CHIP_MGAG200_ER_PCI:
+ pReg->Dac_Index90 = 0;
+ break;
+
case PCI_CHIP_MGAG200_EH_PCI:
pReg->DacRegs[MGA1064_MISC_CTL] =
MGA1064_MISC_CTL_VGA8 |
@@ -1088,6 +1207,7 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
if (pMga->is_G200WB){
pReg->ExtVga[1] |= 0x88;
}
+ pReg->ExtVga_Index24 = 0x05;
pVga->CRTC[0] = ht - 4;
pVga->CRTC[1] = hd;
@@ -1327,10 +1447,15 @@ MGA_NOT_HAL(
if ( (pMga->is_G200EV || pMga->is_G200WB || pMga->is_G200EH) &&
(i >= 0x44) && (i <= 0x4E))
continue;
-
+
outMGAdac(i, mgaReg->DacRegs[i]);
}
+ if (pMga->is_G200ER)
+ {
+ outMGAdac(0x90, mgaReg->Dac_Index90);
+ }
+
if (!MGAISGx50(pMga)) {
/* restore pci_option register */
#ifdef XSERVER_LIBPCIACCESS
@@ -1361,7 +1486,9 @@ MGA_NOT_HAL(
#endif
}
- if (pMga->is_G200EV) {
+ if (pMga->is_G200ER) {
+ MGAG200ERPIXPLLSET(pScrn, mgaReg);
+ } else if (pMga->is_G200EV) {
MGAG200EVPIXPLLSET(pScrn, mgaReg);
} else if (pMga->is_G200WB) {
MGAG200WBPIXPLLSET(pScrn, mgaReg);
@@ -1388,6 +1515,11 @@ MGA_NOT_HAL(
for (i = 0; i < 6; i++)
OUTREG16(MGAREG_CRTCEXT_INDEX, (mgaReg->ExtVga[i] << 8) | i);
+ if (pMga->is_G200ER) {
+ OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
+ OUTREG8(MGAREG_CRTCEXT_DATA, mgaReg->ExtVga_Index24);
+ }
+
/* This handles restoring the generic VGA registers. */
if (pMga->is_G200SE) {
MGAG200SERestoreMode(pScrn, vgaReg);
@@ -1404,7 +1536,7 @@ MGA_NOT_HAL(
OUTREG16(MGAREG_CRTCEXT_INDEX, 6);
OUTREG16(MGAREG_CRTCEXT_DATA, 0);
}
-
+
/*
* this is needed to properly restore start address
*/
@@ -1555,6 +1687,11 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, MGARegPtr mgaReg,
mgaReg->PllM = inMGAdac(MGA1064_EH_PIX_PLLC_M);
mgaReg->PllN = inMGAdac(MGA1064_EH_PIX_PLLC_N);
mgaReg->PllP = inMGAdac(MGA1064_EH_PIX_PLLC_P);
+ } else if (pMga->is_G200ER) {
+ mgaReg->PllM = inMGAdac(MGA1064_ER_PIX_PLLC_M);
+ mgaReg->PllN = inMGAdac(MGA1064_ER_PIX_PLLC_N);
+ mgaReg->PllP = inMGAdac(MGA1064_ER_PIX_PLLC_P);
+ mgaReg->Dac_Index90 = inMGAdac(0x90);
}
mgaReg->PIXPLLCSaved = TRUE;
@@ -1583,6 +1720,11 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, MGARegPtr mgaReg,
OUTREG8(MGAREG_CRTCEXT_INDEX, i);
mgaReg->ExtVga[i] = INREG8(MGAREG_CRTCEXT_DATA);
}
+ if (pMga->is_G200ER)
+ {
+ OUTREG8(MGAREG_CRTCEXT_INDEX, 0x24);
+ mgaReg->ExtVga_Index24 = INREG8(MGAREG_CRTCEXT_DATA);
+ }
#ifdef DEBUG
ErrorF("Saved values:\nDAC:");
@@ -1737,7 +1879,7 @@ static const struct mgag_i2c_private {
{ (1 << 0), (1 << 2) },
{ (1 << 4), (1 << 5) },
{ (1 << 0), (1 << 1) }, /* G200SE, G200EV and G200WB I2C bits */
- { (1 << 1), (1 << 0) }, /* G200EH I2C bits */
+ { (1 << 1), (1 << 0) }, /* G200EH, G200ER I2C bits */
};
@@ -1750,7 +1892,7 @@ MGAG_ddc1Read(ScrnInfoPtr pScrn)
if (pMga->is_G200SE || pMga->is_G200WB || pMga->is_G200EV)
i2c_index = 3;
- else if (pMga->is_G200EH)
+ else if (pMga->is_G200EH || pMga->is_G200ER)
i2c_index = 4;
else
i2c_index = 0;
@@ -1851,7 +1993,7 @@ MGAG_i2cInit(ScrnInfoPtr pScrn)
if (pMga->is_G200SE || pMga->is_G200WB || pMga->is_G200EV)
i2c_index = 3;
- else if (pMga->is_G200EH)
+ else if (pMga->is_G200EH || pMga->is_G200ER)
i2c_index = 4;
else
i2c_index = 0;
@@ -1976,7 +2118,7 @@ void MGAGSetupFuncs(ScrnInfoPtr pScrn)
pMga->Save = MGAGSave;
pMga->Restore = MGAGRestore;
pMga->ModeInit = MGAGInit;
- if (!pMga->is_G200WB){
+ if ((!pMga->is_G200WB) && (!pMga->is_G200ER)) {
pMga->ddc1Read = MGAG_ddc1Read;
/* vgaHWddc1SetSpeed will only work if the card is in VGA mode */
pMga->DDC1SetSpeed = vgaHWddc1SetSpeedWeak();
diff --git a/src/mga_driver.c b/src/mga_driver.c
index 37bf847..7232c73 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -403,6 +403,21 @@ static const struct mga_device_attributes attribs[] = {
8192, 0x4000, /* Memory probe size & offset values */
},
+ /* G200ER */
+ [15] = { 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 */
+ }
};
#ifdef XSERVER_LIBPCIACCESS
@@ -432,6 +447,8 @@ static const struct pci_id_match mga_device_match[] = {
MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EH_PCI, 14 ),
+ MGA_DEVICE_MATCH(PCI_CHIP_MGAG200_ER_PCI, 15 ),
+
{ 0, 0, 0 },
};
#endif
@@ -449,6 +466,7 @@ static SymTabRec MGAChipsets[] = {
{ PCI_CHIP_MGAG200_SE_A_PCI, "mgag200 SE A PCI" },
{ PCI_CHIP_MGAG200_SE_B_PCI, "mgag200 SE B PCI" },
{ 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_EH_PCI, "mgag200eH" },
{ PCI_CHIP_MGAG400, "mgag400" },
@@ -471,6 +489,8 @@ static PciChipsets MGAPciChipsets[] = {
RES_SHARED_VGA },
{ PCI_CHIP_MGAG200_EV_PCI, PCI_CHIP_MGAG200_EV_PCI,
RES_SHARED_VGA },
+ { PCI_CHIP_MGAG200_ER_PCI, PCI_CHIP_MGAG200_ER_PCI,
+ RES_SHARED_VGA },
{ PCI_CHIP_MGAG200_WINBOND_PCI, PCI_CHIP_MGAG200_WINBOND_PCI,
RES_SHARED_VGA },
{ PCI_CHIP_MGAG200_EH_PCI, PCI_CHIP_MGAG200_EH_PCI,
@@ -912,6 +932,11 @@ MGAProbe(DriverPtr drv, int flags)
case PCI_CHIP_MGAG200_EH_PCI:
attrib_no = 14;
break;
+
+ case PCI_CHIP_MGAG200_ER_PCI:
+ attrib_no = 15;
+ break;
+
default:
return FALSE;
@@ -1285,6 +1310,11 @@ MGAdoDDC(ScrnInfoPtr pScrn)
MGASave(pScrn);
/* It is now safe to talk to the card */
+ /* Allow access to DDC */
+ if (pMga->is_G200ER) {
+ CARD8 ucData = inMGAdac(MGA1064_GEN_IO_CTL2);
+ outMGAdac(MGA1064_GEN_IO_CTL2, ucData | 1);
+ }
/* Initialize I2C buses - used by DDC if available */
if (pMga->i2cInit) {
@@ -1326,6 +1356,12 @@ MGAdoDDC(ScrnInfoPtr pScrn)
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "end of monitor info\n");
}
+ /* Remove access to DDC */
+ if (pMga->is_G200ER) {
+ CARD8 ucData = inMGAdac(MGA1064_GEN_IO_CTL2);
+ outMGAdac(MGA1064_GEN_IO_CTL2, ucData & ~1);
+ }
+
/* Restore previous state and unmap MGA memory and MMIO areas */
MGARestore(pScrn);
MGAUnmapMem(pScrn);
@@ -1619,6 +1655,7 @@ 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->is_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI);
+ pMga->is_G200ER = (pMga->Chipset == PCI_CHIP_MGAG200_ER_PCI);
#ifdef USEMGAHAL
if (pMga->chip_attribs->HAL_chipset) {
@@ -1782,14 +1819,14 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
* use the VGA default.
*/
- /* details: rombase sdk pp 4-15 */
- if (pMga->PciInfo->biosBase != 0) {
- pMga->BiosAddress = pMga->PciInfo->biosBase & 0xffff0000;
- pMga->BiosFrom = X_PROBED;
- } else if (pMga->Primary) {
- pMga->BiosAddress = 0xc0000;
- pMga->BiosFrom = X_DEFAULT;
- }
+ /* details: rombase sdk pp 4-15 */
+ if (pMga->PciInfo->biosBase != 0) {
+ pMga->BiosAddress = pMga->PciInfo->biosBase & 0xffff0000;
+ pMga->BiosFrom = X_PROBED;
+ } else if (pMga->Primary) {
+ pMga->BiosAddress = 0xc0000;
+ pMga->BiosFrom = X_DEFAULT;
+ }
if (pMga->BiosAddress) {
xf86DrvMsg(pScrn->scrnIndex, pMga->BiosFrom, "BIOS at 0x%lX\n",
(unsigned long)pMga->BiosAddress);
@@ -2134,6 +2171,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
case PCI_CHIP_MGAG200_WINBOND_PCI:
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_ER_PCI:
case PCI_CHIP_MGAG400:
case PCI_CHIP_MGAG550:
MGAGSetupFuncs(pScrn);
@@ -2247,6 +2285,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
case PCI_CHIP_MGAG200_WINBOND_PCI:
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_ER_PCI:
pMga->SrcOrg = 0;
pMga->DstOrg = 0;
break;
@@ -2424,16 +2463,17 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
maxPitch = 2048;
break;
case PCI_CHIP_MGAG200_SE_A_PCI:
- if (pScrn->videoRam < 2048){
+ if (pScrn->videoRam < 2048){
maxPitch = 1280;
- }
- break;
+ }
+ break;
case PCI_CHIP_MGAG200:
case PCI_CHIP_MGAG200_PCI:
case PCI_CHIP_MGAG200_SE_B_PCI:
case PCI_CHIP_MGAG200_WINBOND_PCI:
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_ER_PCI:
case PCI_CHIP_MGAG400:
case PCI_CHIP_MGAG550:
maxPitch = 4096;
@@ -4332,10 +4372,13 @@ MGAValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
return MODE_BANDWIDTH;
} else if (pMga->is_G200EV
&& (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 327)) {
- return MODE_BANDWIDTH;
+ return MODE_BANDWIDTH;
} else if (pMga->is_G200EH
&& (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 375)) {
return MODE_BANDWIDTH;
+ } else if (pMga->is_G200ER
+ && (xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 550)) {
+ return MODE_BANDWIDTH;
}
lace = 1 + ((mode->Flags & V_INTERLACE) != 0);
diff --git a/src/mga_merge.c b/src/mga_merge.c
index 753f752..1fd0572 100644
--- a/src/mga_merge.c
+++ b/src/mga_merge.c
@@ -363,6 +363,7 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags)
case PCI_CHIP_MGAG200_WINBOND_PCI:
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_ER_PCI:
case PCI_CHIP_MGAG400:
case PCI_CHIP_MGAG550:
MGAGSetupFuncs(pScrn);
@@ -518,6 +519,7 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags)
case PCI_CHIP_MGAG200_WINBOND_PCI:
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_ER_PCI:
case PCI_CHIP_MGAG400:
case PCI_CHIP_MGAG550:
maxPitch = 4096;
diff --git a/src/mga_reg.h b/src/mga_reg.h
index ffe4723..5a37db6 100644
--- a/src/mga_reg.h
+++ b/src/mga_reg.h
@@ -369,6 +369,7 @@
#define MGA1064_MISC_CTL_VGA8 ( 0x01 << 3 )
#define MGA1064_MISC_CTL_DAC_RAM_CS ( 0x01 << 4 )
+#define MGA1064_GEN_IO_CTL2 0x29
#define MGA1064_GEN_IO_CTL 0x2a
#define MGA1064_GEN_IO_DATA 0x2b
#define MGA1064_SYS_PLL_M 0x2c
@@ -429,6 +430,10 @@
#define MGA1064_EH_PIX_PLLC_N 0xb7
#define MGA1064_EH_PIX_PLLC_P 0xb8
+/* Modified PLL for G200 Maxim (G200ER) */
+#define MGA1064_ER_PIX_PLLC_M 0xb7
+#define MGA1064_ER_PIX_PLLC_N 0xb6
+#define MGA1064_ER_PIX_PLLC_P 0xb8
#define MGA1064_DISP_CTL 0x8a
#define MGA1064_DISP_CTL_DAC1OUTSEL_MASK 0x01
diff --git a/src/mga_storm.c b/src/mga_storm.c
index 87473c8..db7fae7 100644
--- a/src/mga_storm.c
+++ b/src/mga_storm.c
@@ -1131,6 +1131,7 @@ void MGAStormEngineInit( ScrnInfoPtr pScrn )
case PCI_CHIP_MGAG200_WINBOND_PCI:
case PCI_CHIP_MGAG200_EV_PCI:
case PCI_CHIP_MGAG200_EH_PCI:
+ case PCI_CHIP_MGAG200_ER_PCI:
pMga->SrcOrg = 0;
OUTREG(MGAREG_SRCORG, pMga->realSrcOrg);
OUTREG(MGAREG_DSTORG, pMga->DstOrg);
commit f7a2ef60e18e2cc464f69c1cad4681096c645651
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Sat Oct 30 09:38:31 2010 -0700
Sun's copyrights now belong to Oracle
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
diff --git a/man/Makefile.am b/man/Makefile.am
index b3688ce..1ea26b3 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -1,5 +1,5 @@
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
@@ -19,7 +19,7 @@
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
-#
+#
drivermandir = $(DRIVER_MAN_DIR)
commit 636c3c88e7e9cb30010fe1731cd7356849f3f172
Author: Adam Jackson <ajax@redhat.com>
Date: Thu Oct 14 14:36:06 2010 -0400
Don't allow the config file to override BIOS location
Signed-off-by: Adam Jackson <ajax@redhat.com>
diff --git a/src/mga_driver.c b/src/mga_driver.c
index 72e7acc..37bf847 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -1779,23 +1779,16 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
#ifndef XSERVER_LIBPCIACCESS
/*
* Find the BIOS base. Get it from the PCI config if possible. Otherwise
- * use the VGA default. Allow the config file to override this.
+ * use the VGA default.
*/
- pMga->BiosFrom = X_NONE;
- if (pMga->device->BiosBase != 0) {
- /* XXX This isn't used */
- pMga->BiosAddress = pMga->device->BiosBase;
- pMga->BiosFrom = X_CONFIG;
- } else {
- /* details: rombase sdk pp 4-15 */
- if (pMga->PciInfo->biosBase != 0) {
- pMga->BiosAddress = pMga->PciInfo->biosBase & 0xffff0000;
- pMga->BiosFrom = X_PROBED;
- } else if (pMga->Primary) {
- pMga->BiosAddress = 0xc0000;
- pMga->BiosFrom = X_DEFAULT;
- }
+ /* details: rombase sdk pp 4-15 */
+ if (pMga->PciInfo->biosBase != 0) {
+ pMga->BiosAddress = pMga->PciInfo->biosBase & 0xffff0000;
+ pMga->BiosFrom = X_PROBED;
+ } else if (pMga->Primary) {
+ pMga->BiosAddress = 0xc0000;
+ pMga->BiosFrom = X_DEFAULT;
}
if (pMga->BiosAddress) {
xf86DrvMsg(pScrn->scrnIndex, pMga->BiosFrom, "BIOS at 0x%lX\n",
commit 0bd44fad450843b7f1c35c70ab356a2b250d107d
Author: Jesse Adkins <jesserayadkins@gmail.com>
Date: Tue Sep 28 13:29:51 2010 -0700
Purge cvs tags.
Signed-off-by: Jesse Adkins <jesserayadkins@gmail.com>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
diff --git a/man/mga.man b/man/mga.man
index 3a7a9f8..e1e674f 100644
--- a/man/mga.man
+++ b/man/mga.man
@@ -1,4 +1,3 @@
-.\" $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.man,v 1.7 2003/04/03 07:11:03 herrb Exp $
.\" shorthand for double quote that works everywhere.
.ds q \N'34'
.TH mga __drivermansuffix__ __vendorversion__
diff --git a/src/binding.h b/src/binding.h
index 6dcd1e9..57e9b92 100644
--- a/src/binding.h
+++ b/src/binding.h
@@ -13,7 +13,6 @@
@end
***************************************************************************************/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/HALlib/binding.h,v 1.3 2000/10/24 22:45:08 dawes Exp $ */
#ifndef _BINDING
#define _BINDING
diff --git a/src/mga.h b/src/mga.h
index 2cb3d88..7725b56 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga.h,v 1.87tsi Exp $ */
/*
* MGA Millennium (MGA2064W) functions
*
diff --git a/src/mga_common.h b/src/mga_common.h
index 90f6b37..81be2bc 100644
--- a/src/mga_common.h
+++ b/src/mga_common.h
@@ -25,8 +25,6 @@
* Converted to common header format:
* Jens Owen <jens@tungstengraphics.com>
*
- * $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_common.h,v 1.2 2002/12/16 16:19:18 dawes Exp $
- *
*/
#ifndef _MGA_COMMON_H_
diff --git a/src/mga_dri.h b/src/mga_dri.h
index f1afb5d..1984b9c 100644
--- a/src/mga_dri.h
+++ b/src/mga_dri.h
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.h,v 1.6 2001/04/10 16:08:01 dawes Exp $ */
-
/*
* Copyright 2000 VA Linux Systems Inc., Fremont, California.
* All Rights Reserved.
diff --git a/src/mga_dripriv.h b/src/mga_dripriv.h
index 3ddd133..feca134 100644
--- a/src/mga_dripriv.h
+++ b/src/mga_dripriv.h
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dripriv.h,v 1.4 2001/04/10 16:08:01 dawes Exp $ */
-
/*
* Copyright 2000 VA Linux Systems Inc., Fremont, California.
* All Rights Reserved.
diff --git a/src/mga_driver.c b/src/mga_driver.c
index 83649ee..72e7acc 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -1,4 +1,3 @@
-/* $XConsortium: mga_driver.c /main/12 1996/10/28 05:13:26 kaleb $ */
/*
* MGA Millennium (MGA2064W) with Ti3026 RAMDAC driver v.1.1
*
diff --git a/src/mga_macros.h b/src/mga_macros.h
index 69dc8e3..bffd063 100644
--- a/src/mga_macros.h
+++ b/src/mga_macros.h
@@ -1,5 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_macros.h,v 1.21 2001/09/26 12:59:17 alanh Exp $ */
-
#ifndef _MGA_MACROS_H_
#define _MGA_MACROS_H_
diff --git a/src/mga_reg.h b/src/mga_reg.h
index 6251976..ffe4723 100644
--- a/src/mga_reg.h
+++ b/src/mga_reg.h
@@ -1,11 +1,3 @@
-/* $XConsortium: mgareg.h /main/2 1996/10/25 10:33:21 kaleb $ */
-
-
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mga_reg.h,v 1.18 2001/09/26 12:59:18 alanh Exp $ */
-
-
-
/*
* MGA Millennium (MGA2064W) functions
* MGA Mystique (MGA1064SG) functions
diff --git a/src/mga_sarea.h b/src/mga_sarea.h
index c5ffbbc..16fc9ce 100644
--- a/src/mga_sarea.h
+++ b/src/mga_sarea.h
@@ -1,5 +1,3 @@
-/* $XFree86$ */
-
/*
* Copyright 2000 Gareth Hughes
* All Rights Reserved.
diff --git a/src/mgareg_flags.h b/src/mgareg_flags.h
index 69050fc..548af86 100644
--- a/src/mgareg_flags.h
+++ b/src/mgareg_flags.h
@@ -19,7 +19,6 @@
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/mgareg_flags.h,v 1.2 2003/01/12 03:55:47 tsi Exp $ */
#ifndef _MGAREGS_H_
#define _MGAREGS_H_
diff --git a/util/stormdwg.c b/util/stormdwg.c
index 99f76cc..b43cc32 100644
--- a/util/stormdwg.c
+++ b/util/stormdwg.c
@@ -1,8 +1,3 @@
-/* $XConsortium: dwg.c /main/2 1996/10/28 06:57:55 kaleb $ */
-
-
-
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/mga/util/stormdwg.c,v 1.1 1997/04/12 14:11:29 hohndel Exp $ */
#include <stdio.h>
#include <stdlib.h>
commit 951474c7fcd1b28d3178a6644d58958cb3bdf5a8
Author: Yannick Heneault <yheneaul@matrox.com>
Date: Wed Aug 25 11:16:27 2010 -0400
modified G200SE conditionnal statement about revision register for products compatibility.
diff --git a/src/mga_driver.c b/src/mga_driver.c
index 5a1e9b4..83649ee 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -1081,7 +1081,7 @@ MGACountRam(ScrnInfoPtr pScrn)
if (pMga->is_G200SE)
pMga->reg_1e24 = INREG(0x1e24); /* stash the model for later */
- if (pMga->reg_1e24 == 0x01) {
+ if (pMga->reg_1e24 >= 0x01) {
MGAUnmapMem(pScrn);
ProbeSize = 16384;
ProbeSizeOffset = 0x10000;
@@ -3253,7 +3253,7 @@ MGA_HAL(
MGA_NOT_HAL(
if (pMga->is_G200SE) {
OUTREG8(0x1FDE, 0x06);
- if (pMga->reg_1e24 == 0x01)
+ if (pMga->reg_1e24 >= 0x01)
OUTREG8(0x1FDF, 0x03);
else
OUTREG8(0x1FDF, 0x14);
@@ -4326,7 +4326,7 @@ MGAValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
return MODE_VIRTUAL_X;
if (mode->VDisplay > 1200)
return MODE_VIRTUAL_Y;
- if (pMga->reg_1e24 == 0x01 &&
+ if (pMga->reg_1e24 >= 0x01 &&
xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 244)
return MODE_BANDWIDTH;
} else if (pMga->is_G200WB){
Reply to: