[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-mga: Changes to 'upstream-experimental'



Rebased ref, commits from common ancestor:
commit c08b112bfe14fbfe713e4757eb0b704c8ed1f339
Author: Adam Jackson <ajax@redhat.com>
Date:   Tue Aug 10 10:58:41 2010 -0400

    xf86-video-mga 1.4.13
    
    Signed-off-by: Adam Jackson <ajax@redhat.com>

diff --git a/configure.ac b/configure.ac
index 900e1fa..540c390 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-mga],
-        [1.4.12],
+        [1.4.13],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-mga])
 AC_CONFIG_SRCDIR([Makefile.am])

commit 411570523550e1997bbd83815990bdda8cfd129c
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Wed Jul 21 16:49:04 2010 -0400

    config: add comments for main statements

diff --git a/configure.ac b/configure.ac
index dbbb430..900e1fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,13 +20,12 @@
 #
 # Process this file with autoconf to produce a configure script
 
+# Initialize Autoconf
 AC_PREREQ([2.60])
-
 AC_INIT([xf86-video-mga],
         [1.4.12],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-mga])
-
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_HEADERS([config.h])
 
@@ -38,16 +37,17 @@ XORG_DEFAULT_OPTIONS
 
 AC_CONFIG_AUX_DIR(.)
 
+# Initialize Automake
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
-
 AM_MAINTAINER_MODE
 
-# Checks for programs.
+# Initialize libtool
 AC_DISABLE_STATIC
 AC_PROG_LIBTOOL
 
 AH_TOP([#include "xorg-server.h"])
 
+# Define a configure option for an alternate module directory
 AC_ARG_WITH(xorg-module-dir,
             AS_HELP_STRING([--with-xorg-module-dir=DIR],
                            [Default xorg module directory [[default=$libdir/xorg/modules]]]),
@@ -64,19 +64,18 @@ AC_ARG_ENABLE(exa,
               [EXA="$enableval"],
               [EXA=yes])
 
-# Checks for extensions
+# Store the list of server defined optional extensions in REQUIRED_MODULES
 XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
 XORG_DRIVER_CHECK_EXT(RENDER, renderproto)
 XORG_DRIVER_CHECK_EXT(XV, videoproto)
 XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
 
-# Checks for pkg-config packages
+# Obtain compiler/linker options for the driver dependencies
 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.1.0 xproto fontsproto $REQUIRED_MODULES])
 sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
 
 # Checks for libraries.
 
-
 if test "x$DRI" != xno; then
         AC_CHECK_FILE([${sdkdir}/dri.h],
                       [have_dri_h="yes"], [have_dri_h="no"])

commit 99892c4f416e9669a62963d29e7dee760382da95
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Wed Jul 21 16:07:00 2010 -0400

    config: replace deprecated use of AC_OUTPUT with AC_CONFIG_FILES
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index 29a672e..dbbb430 100644
--- a/configure.ac
+++ b/configure.ac
@@ -171,9 +171,10 @@ AC_SUBST([moduledir])
 DRIVER_NAME=mga
 AC_SUBST([DRIVER_NAME])
 
-AC_OUTPUT([
-	Makefile
-	src/Makefile
-	man/Makefile
-	util/Makefile
+AC_CONFIG_FILES([
+                Makefile
+                src/Makefile
+                man/Makefile
+                util/Makefile
 ])
+AC_OUTPUT

commit 1f78a33e576898a0b7fd542f772064ad2f01e2f9
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Wed Jul 21 14:37:41 2010 -0400

    config: replace deprecated AC_HELP_STRING with AS_HELP_STRING
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index 79ff686..29a672e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -49,17 +49,17 @@ AC_PROG_LIBTOOL
 AH_TOP([#include "xorg-server.h"])
 
 AC_ARG_WITH(xorg-module-dir,
-            AC_HELP_STRING([--with-xorg-module-dir=DIR],
+            AS_HELP_STRING([--with-xorg-module-dir=DIR],
                            [Default xorg module directory [[default=$libdir/xorg/modules]]]),
             [moduledir="$withval"],
             [moduledir="$libdir/xorg/modules"])
 
-AC_ARG_ENABLE(dri, AC_HELP_STRING([--disable-dri],
+AC_ARG_ENABLE(dri, AS_HELP_STRING([--disable-dri],
                                   [Disable DRI support [[default=auto]]]),
               [DRI="$enableval"],
               [DRI=auto])
 AC_ARG_ENABLE(exa,
-              AC_HELP_STRING([--disable-exa],
+              AS_HELP_STRING([--disable-exa],
                              [Disable EXA support [[default=enabled]]]),
               [EXA="$enableval"],
               [EXA=yes])

commit fb311dc7e72a956c5a03e63757ec96b6626afb3a
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Wed Jul 21 14:05:22 2010 -0400

    config: replace deprecated AM_CONFIG_HEADER with AC_CONFIG_HEADERS
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index 0b01855..79ff686 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,7 +28,7 @@ AC_INIT([xf86-video-mga],
         [xf86-video-mga])
 
 AC_CONFIG_SRCDIR([Makefile.am])
-AM_CONFIG_HEADER([config.h])
+AC_CONFIG_HEADERS([config.h])
 
 # Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
 m4_ifndef([XORG_MACROS_VERSION],

commit f2c386e5a7b9b5682db40d53e9f7b92e7d41ceba
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Wed Jul 21 09:27:42 2010 -0400

    config: complete AC_INIT m4 quoting
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index 42b71d2..0b01855 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,9 +23,9 @@
 AC_PREREQ([2.60])
 
 AC_INIT([xf86-video-mga],
-        1.4.12,
+        [1.4.12],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
-        xf86-video-mga)
+        [xf86-video-mga])
 
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_CONFIG_HEADER([config.h])

commit 01d47165804c6c3a674fda7a9629e2f1d0f8b2db
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Jul 20 21:54:11 2010 -0400

    config: remove unrequired AC_SUBST([DRI_CFLAGS])
    
    This macro is called by PKG_CHECK_MODULES
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index f48d78e..42b71d2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -166,7 +166,6 @@ CPPFLAGS="$SAVE_CPPFLAGS"
 
 AM_CONDITIONAL(USE_EXA, test "x$USE_EXA" = xyes)
 
-AC_SUBST([DRI_CFLAGS])
 AC_SUBST([moduledir])
 
 DRIVER_NAME=mga

commit b84e08801f18292b3af73ac250788941fa2685a0
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Jul 20 21:44:57 2010 -0400

    config: remove unrequired AC_SUBST([XORG_CFLAGS])
    
    This macro is called by PKG_CHECK_MODULES
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index bd102b7..f48d78e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -167,7 +167,6 @@ CPPFLAGS="$SAVE_CPPFLAGS"
 AM_CONDITIONAL(USE_EXA, test "x$USE_EXA" = xyes)
 
 AC_SUBST([DRI_CFLAGS])
-AC_SUBST([XORG_CFLAGS])
 AC_SUBST([moduledir])
 
 DRIVER_NAME=mga

commit 9d7ae5d171555c22c654b5ef14840f7c8c3d2124
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Jul 20 20:24:42 2010 -0400

    config: remove unrequired AC_HEADER_STDC
    
    Autoconf says:
    "This macro is obsolescent, as current systems have conforming
    header files. New programs need not use this macro".
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index fc1eb9a..bd102b7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -76,8 +76,6 @@ sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
 
 # Checks for libraries.
 
-# Checks for header files.
-AC_HEADER_STDC
 
 if test "x$DRI" != xno; then
         AC_CHECK_FILE([${sdkdir}/dri.h],

commit ac6e0b60b18173598865a66333e0cfa383a61eec
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Jul 20 19:41:31 2010 -0400

    config: remove AC_PROG_CC as it overrides AC_PROG_C_C99
    
    XORG_STRICT_OPTION from XORG_DEFAULT_OPTIONS calls
    AC_PROG_C_C99. This sets gcc with -std=gnu99.
    If AC_PROG_CC macro is called afterwards, it resets CC to gcc.
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index 7e76755..fc1eb9a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -45,7 +45,6 @@ AM_MAINTAINER_MODE
 # Checks for programs.
 AC_DISABLE_STATIC
 AC_PROG_LIBTOOL
-AC_PROG_CC
 
 AH_TOP([#include "xorg-server.h"])
 

commit a84d4a8883c5c853396c644cbc6db0f7f838f6bf
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Jul 20 18:45:19 2010 -0400

    config: update AC_PREREQ statement to 2.60
    
    Unrelated to the previous patches, the new value simply reflects
    the reality that the minimum level for autoconf to configure
    all x.org modules is 2.60 dated June 2006.
    
    ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.60.tar.gz
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index f9b64e0..7e76755 100644
--- a/configure.ac
+++ b/configure.ac
@@ -20,7 +20,7 @@
 #
 # Process this file with autoconf to produce a configure script
 
-AC_PREREQ(2.57)
+AC_PREREQ([2.60])
 
 AC_INIT([xf86-video-mga],
         1.4.12,

commit 3f28d8a8c0c1cf2885475ecd5cad0eb98313ce6f
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Jul 20 16:15:29 2010 -0400

    config: upgrade to util-macros 1.8 for additional man page support
    
    Use MAN_SUBST now supplied in XORG_MANPAGE_SECTIONS
    The value of MAN_SUBST is the same for all X.Org packages.

diff --git a/configure.ac b/configure.ac
index f02c5c9..f9b64e0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -30,10 +30,10 @@ AC_INIT([xf86-video-mga],
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_CONFIG_HEADER([config.h])
 
-# Require xorg-macros: XORG_DEFAULT_OPTIONS
-m4_ifndef([XORG_MACROS_VERSION], 
-          [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])])
-XORG_MACROS_VERSION(1.3)
+# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
+m4_ifndef([XORG_MACROS_VERSION],
+          [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.8)
 XORG_DEFAULT_OPTIONS
 
 AC_CONFIG_AUX_DIR(.)
diff --git a/man/Makefile.am b/man/Makefile.am
index 8f2454b..b3688ce 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -31,25 +31,11 @@ EXTRA_DIST = @DRIVER_NAME@.man
 
 CLEANFILES = $(driverman_DATA)
 
-SED = sed
-
-# Strings to replace in man pages
-XORGRELSTRING = @PACKAGE_STRING@
-  XORGMANNAME = X Version 11
-
-MAN_SUBSTS = \
-	-e 's|__vendorversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-	-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-	-e 's|__xservername__|Xorg|g' \
-	-e 's|__xconfigfile__|xorg.conf|g' \
-	-e 's|__projectroot__|$(prefix)|g' \
-	-e 's|__appmansuffix__|$(APP_MAN_SUFFIX)|g' \
-	-e 's|__drivermansuffix__|$(DRIVER_MAN_SUFFIX)|g' \
-	-e 's|__adminmansuffix__|$(ADMIN_MAN_SUFFIX)|g' \
-	-e 's|__miscmansuffix__|$(MISC_MAN_SUFFIX)|g' \
-	-e 's|__filemansuffix__|$(FILE_MAN_SUFFIX)|g'
+
+# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
+
 
 SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
 
 .man.$(DRIVER_MAN_SUFFIX):
-	sed $(MAN_SUBSTS) < $< > $@
+	$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@

commit 42d54a84a810c156c50b8f6643e4c8f315ed5f3e
Author: Yannick Heneault <yheneaul@matrox.com>
Date:   Thu Jul 22 10:51:15 2010 -0400

    adjusted max bandwith and max pitch values for G200SE

diff --git a/src/mga_driver.c b/src/mga_driver.c
index 6ee4271..5a1e9b4 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -2433,7 +2433,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
 	   break;
 	case PCI_CHIP_MGAG200_SE_A_PCI:
 	   if (pScrn->videoRam < 2048){
-	       maxPitch = 1024;
+               maxPitch = 1280;
 	   }
 	   break;
 	case PCI_CHIP_MGAG200:
@@ -2462,11 +2462,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
 	   xfree(linePitches);
     }
 
-    /* Some X compute displayWidth from inferred virtual without
-       checking pitch limit. */
-    if(pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI && pScrn->videoRam < 2048)
-        pScrn->displayWidth = 1024;
-
     if (i < 1 && pMga->FBDev) {
 	fbdevHWUseBuildinMode(pScrn);
 	pScrn->displayWidth = pScrn->virtualX; /* FIXME: might be wrong */
@@ -4332,7 +4327,7 @@ MGAValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags)
 	if (mode->VDisplay > 1200)
 	    return MODE_VIRTUAL_Y;
 	if (pMga->reg_1e24 == 0x01 &&
-	    xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 256)
+	    xf86ModeBandwidth(mode, pScrn->bitsPerPixel) > 244)
 	    return MODE_BANDWIDTH;
     } else if (pMga->is_G200WB){
         if (mode->Flags & V_DBLSCAN)

commit 306c46f6a627e51b051c55ce3d7ffc9a87d2e452
Author: Adam Jackson <ajax@redhat.com>
Date:   Thu May 13 16:12:34 2010 -0400

    mga 1.4.12
    
    Signed-off-by: Adam Jackson <ajax@redhat.com>

diff --git a/configure.ac b/configure.ac
index e5fe2c5..f02c5c9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 AC_PREREQ(2.57)
 
 AC_INIT([xf86-video-mga],
-        1.4.11,
+        1.4.12,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-video-mga)
 

commit df6014303b6933ae7c4bcbe00762180dfd692598
Author: Yannick Heneault <yheneaul@matrox.com>
Date:   Wed Mar 24 10:05:09 2010 -0400

    Changed probe_size value to detect up to 16Megs of video ram on G200eV.

diff --git a/src/mga_driver.c b/src/mga_driver.c
index 2922d2c..6ee4271 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -369,7 +369,7 @@ static const struct mga_device_attributes attribs[] = {
 	    MGA_HOST_PCI       /* Host interface */
 	},
 
-	8192, 0x4000,          /* Memory probe size & offset values */
+	16384, 0x4000,          /* Memory probe size & offset values */
     },
 
     /* G200WB */

commit 3f215b64889bcc7a656fc36db1eed8276b401a95
Author: Yannick Heneault <yheneaul@matrox.com>
Date:   Thu Feb 11 11:37:36 2010 -0500

    Added support for G200EH

diff --git a/src/mga.h b/src/mga.h
index 18652a8..2cb3d88 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -133,6 +133,10 @@ void MGAdbg_outreg32(ScrnInfoPtr, int,int, char*);
 #define PCI_CHIP_MGAG200_EV_PCI 0x0530
 #endif
 
+#ifndef PCI_CHIP_MGAG200_EH_PCI
+#define PCI_CHIP_MGAG200_EH_PCI 0x0533
+#endif
+
 /*
  * Read/write to the DAC via MMIO 
  */
@@ -474,6 +478,7 @@ typedef struct {
     int is_G200SE:1;
     int is_G200WB:1;
     int is_G200EV:1;
+    int is_G200EH:1;
 
     int KVM;
 
diff --git a/src/mga_dacG.c b/src/mga_dacG.c
index 7d4cbfb..df00765 100644
--- a/src/mga_dacG.c
+++ b/src/mga_dacG.c
@@ -211,6 +211,55 @@ MGAG200WBComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
 }
 
 static void
+MGAG200EHComputePLLParam(ScrnInfoPtr pScrn, long lFo, int *M, int *N, int *P)
+{
+    unsigned int ulComputedFo;
+    unsigned int ulFDelta;
+    unsigned int ulFPermitedDelta;
+    unsigned int ulFTmpDelta;
+    unsigned int ulTestP;
+    unsigned int ulTestM;
+    unsigned int ulTestN;
+    unsigned int ulVCOMax;
+    unsigned int ulVCOMin;
+    unsigned int ulPLLFreqRef;
+
+    ulVCOMax        = 800000;
+    ulVCOMin        = 400000;
+    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) {
+        if ((lFo * ulTestP) > ulVCOMax) continue;
+        if ((lFo * ulTestP) < ulVCOMin) continue;
+
+        for (ulTestM = 1; ulTestM <= 32; ulTestM++) {
+           for (ulTestN = 17; ulTestN <= 256; ulTestN++) {
+               ulComputedFo = (ulPLLFreqRef * ulTestN) / (ulTestM * ulTestP);
+               if (ulComputedFo > lFo)
+		           ulFTmpDelta = ulComputedFo - lFo;
+               else
+                   ulFTmpDelta = lFo - ulComputedFo;
+
+               if (ulFTmpDelta < ulFDelta) {
+                   ulFDelta = ulFTmpDelta;
+                   *M = (CARD8)(ulTestM - 1);
+                   *N = (CARD8)(ulTestN - 1);
+                   *P = (CARD8)(ulTestP - 1);
+               }
+
+               if ((lFo * ulTestP) >= 600000)
+                   *P |= 0x80;
+           }
+        }
+    }
+}
+
+static void
 MGAG200EVPIXPLLSET(ScrnInfoPtr pScrn, MGARegPtr mgaReg)
 {
     MGAPtr pMga = MGAPTR(pScrn);
@@ -483,6 +532,89 @@ MGAG200WBRestoreFromModeSwitch(ScrnInfoPtr pScrn)
     outMGAdac(MGA1064_GEN_IO_DATA, ucTmpData);
 }
 
+static void
+MGAG200EHPIXPLLSET(ScrnInfoPtr pScrn, MGARegPtr mgaReg)
+{
+    MGAPtr pMga = MGAPTR(pScrn);
+
+    unsigned long ulFallBackCounter, 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)
+    {
+        // Set pixclkdis to 1
+        ucPixCtrl = inMGAdac(MGA1064_PIX_CLK_CTL);
+        ucPixCtrl |= MGA1064_PIX_CLK_CTL_CLK_DIS;
+        outMGAdac(MGA1064_PIX_CLK_CTL, ucPixCtrl);
+
+        // Select PLL Set C
+        ucTempByte = INREG8(MGAREG_MEM_MISC_READ);
+        ucTempByte |= 0x3<<2; //select MGA pixel clock
+        OUTREG8(MGAREG_MEM_MISC_WRITE, ucTempByte);
+
+        ucPixCtrl |= MGA1064_PIX_CLK_CTL_CLK_POW_DOWN;
+        ucPixCtrl &= ~0x80;
+        outMGAdac(MGA1064_PIX_CLK_CTL, ucPixCtrl);
+
+        // Wait 500 us
+        usleep(500);
+
+        // Program the Pixel PLL Register
+        outMGAdac(MGA1064_EH_PIX_PLLC_N, mgaReg->PllN);
+        outMGAdac(MGA1064_EH_PIX_PLLC_M, mgaReg->PllM);
+        outMGAdac(MGA1064_EH_PIX_PLLC_P, mgaReg->PllP);
+
+        // Wait 500 us
+        usleep(500);
+
+        // Select the pixel PLL by setting pixclksel to 1
+        ucTempByte = inMGAdac(MGA1064_PIX_CLK_CTL);
+        ucTempByte &= ~MGA1064_PIX_CLK_CTL_SEL_MSK;
+        ucTempByte |= MGA1064_PIX_CLK_CTL_SEL_PLL;
+        outMGAdac(MGA1064_PIX_CLK_CTL, ucTempByte);
+
+        // Reset dotclock rate bit.
+        OUTREG8(MGAREG_SEQ_INDEX, 1);
+        ucTempByte = INREG8(MGAREG_SEQ_DATA);
+        OUTREG8(MGAREG_SEQ_DATA, ucTempByte & ~0x8);
+
+        // Set pixclkdis to 0 and pixplldn to 0
+        ucTempByte = inMGAdac(MGA1064_PIX_CLK_CTL);
+        ucTempByte &= ~MGA1064_PIX_CLK_CTL_CLK_DIS;
+        ucTempByte &= ~MGA1064_PIX_CLK_CTL_CLK_POW_DOWN;
+        outMGAdac(MGA1064_PIX_CLK_CTL, ucTempByte);
+
+        // Poll VCount. If it increments twice inside 150us, 
+        // we assume that the PLL has locked.
+        ulLoopCount = 0;
+        ulVCount = INREG(MGAREG_VCOUNT);
+
+        while(ulLoopCount < 30 && ucPLLLocked == FALSE)
+        {
+            ulTempCount = INREG(MGAREG_VCOUNT);
+
+            if(ulTempCount < ulVCount)
+            {
+                ulVCount = 0;
+            }
+            if ((ucTempByte - ulVCount) > 2)
+            {
+                ucPLLLocked = TRUE;
+            }
+            else
+            {
+                usleep(5);
+            }
+            ulLoopCount++;
+        }
+        ulLockCheckIterations++;
+    }
+}
+
 /**
  * Calculate the PLL settings (m, n, p, s).
  *
@@ -631,6 +763,12 @@ MGAGSetPCLK( ScrnInfoPtr pScrn, long f_out )
 	    pReg->PllM = m;
 	    pReg->PllN = n;
 	    pReg->PllP = p;
+    } else if (pMga->is_G200EH) {
+	    MGAG200EHComputePLLParam(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 );
@@ -828,6 +966,15 @@ MGAGInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
                 pReg->Option2 = 0x0000b000;
                 break;
 
+        case PCI_CHIP_MGAG200_EH_PCI:
+                pReg->DacRegs[MGA1064_MISC_CTL] =
+                    MGA1064_MISC_CTL_VGA8 |
+                    MGA1064_MISC_CTL_DAC_RAM_CS;
+
+                pReg->Option = 0x00000120;
+                pReg->Option2 = 0x0000b000;
+                break;
+
 	case PCI_CHIP_MGAG200:
 	case PCI_CHIP_MGAG200_PCI:
 	default:
@@ -1177,7 +1324,7 @@ MGA_NOT_HAL(
 	      if (pMga->is_G200SE
 		  && ((i == 0x2C) || (i == 0x2D) || (i == 0x2E)))
 	         continue;
-	      if ( (pMga->is_G200EV || pMga->is_G200WB) &&
+	      if ( (pMga->is_G200EV || pMga->is_G200WB || pMga->is_G200EH) &&
 		   (i >= 0x44) && (i <= 0x4E))
 	         continue;
 
@@ -1218,6 +1365,8 @@ MGA_NOT_HAL(
                MGAG200EVPIXPLLSET(pScrn, mgaReg);
            } else if (pMga->is_G200WB) {
                MGAG200WBPIXPLLSET(pScrn, mgaReg);
+           } else if (pMga->is_G200EH) {
+               MGAG200EHPIXPLLSET(pScrn, mgaReg);
            }
 );	/* MGA_NOT_HAL */
 #ifdef USEMGAHAL
@@ -1402,6 +1551,10 @@ MGAGSave(ScrnInfoPtr pScrn, vgaRegPtr vgaReg, MGARegPtr mgaReg,
             mgaReg->PllM = inMGAdac(MGA1064_EV_PIX_PLLC_M);
             mgaReg->PllN = inMGAdac(MGA1064_EV_PIX_PLLC_N);
             mgaReg->PllP = inMGAdac(MGA1064_EV_PIX_PLLC_P);
+        } else if (pMga->is_G200EH) {
+            mgaReg->PllM = inMGAdac(MGA1064_EH_PIX_PLLC_M);
+            mgaReg->PllN = inMGAdac(MGA1064_EH_PIX_PLLC_N);
+            mgaReg->PllP = inMGAdac(MGA1064_EH_PIX_PLLC_P);
         }
 
         mgaReg->PIXPLLCSaved = TRUE;
@@ -1584,6 +1737,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 */
 };
 
 
@@ -1596,6 +1750,8 @@ MGAG_ddc1Read(ScrnInfoPtr pScrn)
 
   if (pMga->is_G200SE || pMga->is_G200WB || pMga->is_G200EV)
     i2c_index = 3;
+  else if (pMga->is_G200EH)
+    i2c_index = 4;
   else
     i2c_index = 0;
 
@@ -1695,6 +1851,8 @@ MGAG_i2cInit(ScrnInfoPtr pScrn)
 
         if (pMga->is_G200SE || pMga->is_G200WB || pMga->is_G200EV)
             i2c_index = 3;
+        else if (pMga->is_G200EH)
+            i2c_index = 4;
         else
             i2c_index = 0;
 
diff --git a/src/mga_driver.c b/src/mga_driver.c
index e0b724b..2922d2c 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -388,6 +388,22 @@ static const struct mga_device_attributes attribs[] = {
 	8192, 0x4000,          /* Memory probe size & offset values */
     },
 
+    /* G200EH */
+    [14] = { 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 */
+	},
+
+	8192, 0x4000,          /* Memory probe size & offset values */
+    },
+
 };
 
 #ifdef XSERVER_LIBPCIACCESS
@@ -415,6 +431,8 @@ static const struct pci_id_match mga_device_match[] = {
 
     MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_WINBOND_PCI, 13 ),
 
+    MGA_DEVICE_MATCH( PCI_CHIP_MGAG200_EH_PCI, 14 ),
+
     { 0, 0, 0 },
 };
 #endif
@@ -433,6 +451,7 @@ static SymTabRec MGAChipsets[] = {
     { PCI_CHIP_MGAG200_SE_B_PCI,	"mgag200 SE B PCI" },
     { PCI_CHIP_MGAG200_EV_PCI,	"mgag200 EV Maxim" },
     { PCI_CHIP_MGAG200_WINBOND_PCI,	"mgag200 eW Nuvoton" },
+    { PCI_CHIP_MGAG200_EH_PCI,	"mgag200eH" },
     { PCI_CHIP_MGAG400,		"mgag400" },
     { PCI_CHIP_MGAG550,		"mgag550" },
     {-1,			NULL }
@@ -455,6 +474,8 @@ static PciChipsets MGAPciChipsets[] = {
 	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,
+	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 }
@@ -889,6 +910,10 @@ MGAProbe(DriverPtr drv, int flags)
                 attrib_no = 13;
                 break;
 
+            case PCI_CHIP_MGAG200_EH_PCI:
+                attrib_no = 14;
+                break;
+
 	    default:
 		return FALSE;
             }
@@ -1112,7 +1137,7 @@ MGACountRam(ScrnInfoPtr pScrn)
 	OUTREG8(MGAREG_CRTCEXT_DATA, tmp | 0x80);
 
 	/* apparently the G200 IP don't have a BIOS to read */
-	if (pMga->is_G200SE || pMga->is_G200EV || pMga->is_G200WB) {
+	if (pMga->is_G200SE || pMga->is_G200EV || pMga->is_G200WB || pMga->is_G200EH) {
 	    CARD32 MemoryAt0, MemoryAt1, Offset;
 	    CARD32 FirstMemoryVal1, FirstMemoryVal2;
 	    CARD32 SecondMemoryVal1, SecondMemoryVal2;
@@ -1594,6 +1619,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
 	|| (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_G200EH = (pMga->Chipset == PCI_CHIP_MGAG200_EH_PCI);
 
 #ifdef USEMGAHAL
     if (pMga->chip_attribs->HAL_chipset) {
@@ -2115,6 +2141,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
     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_MGAG400:
     case PCI_CHIP_MGAG550:
 	MGAGSetupFuncs(pScrn);
@@ -2227,6 +2254,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
 	  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:
 	    pMga->SrcOrg = 0;
 	    pMga->DstOrg = 0;
 	    break;
@@ -2413,6 +2441,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
 	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_MGAG400:
 	case PCI_CHIP_MGAG550:
 	   maxPitch = 4096;
@@ -4316,7 +4345,10 @@ 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;
     }
 
     lace = 1 + ((mode->Flags & V_INTERLACE) != 0);
diff --git a/src/mga_merge.c b/src/mga_merge.c
index 4cfa0a7..753f752 100644
--- a/src/mga_merge.c
+++ b/src/mga_merge.c
@@ -362,6 +362,7 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags)
     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_MGAG400:
     case PCI_CHIP_MGAG550:
 	MGAGSetupFuncs(pScrn);
@@ -516,6 +517,7 @@ MGAPreInitMergedFB(ScrnInfoPtr pScrn1, int flags)
 	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_MGAG400:
 	case PCI_CHIP_MGAG550:
 	   maxPitch = 4096;
diff --git a/src/mga_reg.h b/src/mga_reg.h
index 6450e2f..6251976 100644
--- a/src/mga_reg.h
+++ b/src/mga_reg.h
@@ -432,6 +432,11 @@
 #define MGA1064_EV_PIX_PLLC_N	0xb7
 #define MGA1064_EV_PIX_PLLC_P	0xb8
 
+/* Modified PLL for G200 EH */
+#define MGA1064_EH_PIX_PLLC_M   0xb6
+#define MGA1064_EH_PIX_PLLC_N   0xb7
+#define MGA1064_EH_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 0d04c63..87473c8 100644
--- a/src/mga_storm.c
+++ b/src/mga_storm.c
@@ -1130,6 +1130,7 @@ void MGAStormEngineInit( ScrnInfoPtr pScrn )
     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:
 	pMga->SrcOrg = 0;
 	OUTREG(MGAREG_SRCORG, pMga->realSrcOrg);
 	OUTREG(MGAREG_DSTORG, pMga->DstOrg);

commit 9993ea7479d15daf7cca5aad55d51acd8c19fee1
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date:   Fri Jan 15 15:52:05 2010 -0800

    Update Sun license notices to current X.Org standard form
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>

diff --git a/man/Makefile.am b/man/Makefile.am
index f0eb29b..8f2454b 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -1,27 +1,24 @@
 #
 # Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
-# 
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation.
-# 
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-# OTHER 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.
-# 
-# Except as contained in this notice, the name of the copyright holders shall
-# not be used in advertising or otherwise to promote the sale, use or
-# other dealings in this Software without prior written authorization
-# from the copyright holders.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# 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 feed5306f48b8ebe4ed8be7d3ae63051ae972968
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 15 21:47:12 2009 -0500

    configure.ac: use backticks rather than $() for cmd subs
    
    Use "$PKG_CONFIG" rather than hard coded "pkg-config"
    
    Acked-by: Dan Nicholson <dbn.lists@gmail.com>
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

diff --git a/configure.ac b/configure.ac
index 88bc75b..e5fe2c5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,7 +73,7 @@ XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
 
 # Checks for pkg-config packages
 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.1.0 xproto fontsproto $REQUIRED_MODULES])
-sdkdir=$(pkg-config --variable=sdkdir xorg-server)
+sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
 
 # Checks for libraries.
 

commit 896e4e5a34ee20a289934f9fe42c888bd9bb140c
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Mon Nov 23 09:25:05 2009 -0500

    Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES
    
    Now that the INSTALL file is generated.
    Allows running make maintainer-clean.

diff --git a/Makefile.am b/Makefile.am
index c59834d..75d6898 100644
--- a/Makefile.am


Reply to: