summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac4
-rw-r--r--src/mga.h6
-rw-r--r--src/mga_dacG.c17
-rw-r--r--src/mga_driver.c16
-rw-r--r--src/mga_macros.h3
5 files changed, 24 insertions, 22 deletions
diff --git a/configure.ac b/configure.ac
index 8cddbac..702d9ce 100644
--- a/configure.ac
+++ b/configure.ac
@@ -21,8 +21,10 @@
# Process this file with autoconf to produce a configure script
AC_PREREQ(2.57)
+
+# When the version number is modified here, also modify it in src/mga.h.
AC_INIT([xf86-video-mga],
- 1.4.2,
+ 1.4.4,
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-video-mga)
diff --git a/src/mga.h b/src/mga.h
index f9afea3..a1179f9 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -157,7 +157,7 @@ void MGAdbg_outreg32(ScrnInfoPtr, int,int, char*);
#define MGA_DRIVER_NAME "mga"
#define MGA_MAJOR_VERSION 1
#define MGA_MINOR_VERSION 4
-#define MGA_PATCHLEVEL 1
+#define MGA_PATCHLEVEL 4
typedef struct {
unsigned char ExtVga[6];
@@ -417,6 +417,10 @@ typedef struct {
xf86AccessRec Access;
int Chipset;
int ChipRev;
+
+ int is_Gx50:1;
+ int is_G200SE:1;
+
Bool Primary;
Bool Interleave;
int HwBpp;
diff --git a/src/mga_dacG.c b/src/mga_dacG.c
index 0111a85..c67490a 100644
--- a/src/mga_dacG.c
+++ b/src/mga_dacG.c
@@ -236,8 +236,7 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_out )
return;
}
- if ((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) ||
- (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) {
+ if (pMga->is_G200SE) {
MGAG200SEComputePLLParam(pScrn, f_out, &m, &n, &p);
pReg->DacRegs[ MGA1064_PIX_PLLC_M ] = m;
@@ -755,9 +754,8 @@ MGA_NOT_HAL(
((i == 0x2c) || (i == 0x2d) || (i == 0x2e) ||
(i == 0x4c) || (i == 0x4d) || (i == 0x4e))))
continue;
- if (((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) ||
- (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) &&
- (i == 0x2C) || (i == 0x2D) || (i == 0x2E))
+ if (pMga->is_G200SE
+ && ((i == 0x2C) || (i == 0x2D) || (i == 0x2E)))
continue;
outMGAdac(i, mgaReg->DacRegs[i]);
}
@@ -800,8 +798,7 @@ MGA_NOT_HAL(
OUTREG16(0x1FDE, (mgaReg->ExtVga[i] << 8) | i);
/* This handles restoring the generic VGA registers. */
- if ((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) ||
- (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) {
+ if (pMga->is_G200SE) {
vgaHWRestore(pScrn, vgaReg, VGA_SR_MODE);
if (restoreFonts)
MGAG200SERestoreFonts(pScrn, vgaReg);
@@ -901,8 +898,7 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, MGARegPtr mgaReg,
* This function will handle creating the data structure and filling
* in the generic VGA portion.
*/
- if ((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) ||
- (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) {
+ if (pMga->is_G200SE) {
vgaHWSave(pScrn, vgaReg, VGA_SR_MODE);
if (saveFonts)
MGAG200SESaveFonts(pScrn, vgaReg);
@@ -1117,8 +1113,7 @@ MGAG_ddc1Read(ScrnInfoPtr pScrn)
outMGAdacmsk(MGA1064_GEN_IO_CTL, ~(DDC_P1_SCL_MASK | DDC_P1_SDA_MASK), 0);
/* wait for Vsync */
- if ((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) ||
- (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) {
+ if (pMga->is_G200SE) {
usleep(4);
} else {
while( INREG( MGAREG_Status ) & 0x08 );
diff --git a/src/mga_driver.c b/src/mga_driver.c
index fbaab0c..8fa36ff 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -829,9 +829,7 @@ MGACountRam(ScrnInfoPtr pScrn)
OUTREG8(MGAREG_CRTCEXT_DATA, tmp | 0x80);
/* apparently the G200SE doesn't have a BIOS to read */
- if ((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) ||
- (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) {
-
+ if (pMga->is_G200SE) {
CARD32 MemoryAt0, MemoryAt1, Offset;
CARD32 FirstMemoryVal1, FirstMemoryVal2;
CARD32 SecondMemoryVal1, SecondMemoryVal2;
@@ -1282,6 +1280,12 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
} else {
xf86ErrorF("\n");
}
+
+ pMga->is_Gx50 = ((pMga->Chipset == PCI_CHIP_MGAG400) && (pMga->ChipRev >= 0x80))
+ || (pMga->Chipset == PCI_CHIP_MGAG550);
+ pMga->is_G200SE = (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI)
+ || (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI);
+
#ifdef USEMGAHAL
if (pMga->chip_attribs->HAL_chipset) {
Bool loadHal = TRUE;
@@ -2968,8 +2972,7 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
pMga = MGAPTR(pScrn);
MGAdac = &pMga->Dac;
- if ((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) ||
- (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) {
+ if (pMga->is_G200SE) {
VRTemp = pScrn->videoRam;
FBTemp = pMga->FbMapSize;
pScrn->videoRam = 4096;
@@ -3053,8 +3056,7 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
); /* MGA_HAL */
#endif
}
- if ((pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) ||
- (pMga->Chipset == PCI_CHIP_MGAG200_SE_B_PCI)) {
+ if (pMga->is_G200SE) {
pScrn->videoRam = VRTemp;
pMga->FbMapSize = FBTemp;
}
diff --git a/src/mga_macros.h b/src/mga_macros.h
index b5554b4..1b913a8 100644
--- a/src/mga_macros.h
+++ b/src/mga_macros.h
@@ -75,8 +75,7 @@ while(INREG(MGAREG_DWGSYNC) != MGA_SYNC_XTAG) ; \
#define MGA_NOT_HAL(x) { x; }
#endif
-#define MGAISGx50(x) ( (((x)->Chipset == PCI_CHIP_MGAG400) && ((x)->ChipRev >= 0x80)) || \
- ((x)->Chipset == PCI_CHIP_MGAG550) )
+#define MGAISGx50(x) ((x)->is_Gx50)
#define MGA_DH_NEEDS_HAL(x) (((x)->Chipset == PCI_CHIP_MGAG400) && \
((x)->ChipRev < 0x80))