Makefile.am           |    2 
 README_HALLIB         |  209 -----
 configure.ac          |    4 
 man/mga.man           |   11 
 src/Makefile.am       |   17 
 src/binding.h         |  254 -------
 src/client.h          |   68 -
 src/clientlx.c        |  848 -----------------------
 src/mga.h             |  214 +----
 src/mga_2064_crtc.c   |  951 ++++++++++++++++++++++++++
 src/mga_2064_output.c |  196 +++++
 src/mga_bios.c        |   10 
 src/mga_dac3026.c     |  843 -----------------------
 src/mga_dac3026.h     |   30 
 src/mga_dacG.c        | 1023 ----------------------------
 src/mga_dacG.h        |   12 
 src/mga_dh.c          |  451 ------------
 src/mga_dri.c         |   86 --
 src/mga_driver.c      | 1801 +++++++-------------------------------------------
 src/mga_esc.c         |  795 ----------------------
 src/mga_g450pll.c     |   61 -
 src/mga_g_crtc.c      |  929 +++++++++++++++++++++++++
 src/mga_g_crtc2.c     |  388 ++++++++++
 src/mga_g_output.c    |  526 ++++++++++++++
 src/mga_halmod.c      |   42 -
 src/mga_macros.h      |   16 
 src/mga_merge.c       |  977 ---------------------------
 src/mga_merge.h       |   19 
 src/mga_reg.h         |   20 
 src/mga_vga.c         |   90 +-
 30 files changed, 3539 insertions(+), 7354 deletions(-)

New commits:
commit 94ed9651ebb2da7b845f836aee3a294adba37ad9
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Sat Sep 15 00:36:12 2007 +0200

    Bumped the xorg-server requirement to 1.3.

diff --git a/configure.ac b/configure.ac
index 9d97c71..ec72bc1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -68,7 +68,7 @@ XORG_DRIVER_CHECK_EXT(XV, videoproto)
 XORG_DRIVER_CHECK_EXT(DPMSExtension, xextproto)
 
 # Checks for pkg-config packages
-PKG_CHECK_MODULES(XORG, [xorg-server >= 1.1.0 xproto fontsproto 
$REQUIRED_MODULES])
+PKG_CHECK_MODULES(XORG, [xorg-server >= 1.3.0 xproto fontsproto 
$REQUIRED_MODULES])
 sdkdir=$(pkg-config --variable=sdkdir xorg-server)
 
 # Checks for libraries.

commit 74876b21c9393020a3c2ffe5db6e3305e54c068d
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Sat Sep 15 00:31:35 2007 +0200

    Distribute mga_dac3026.h and mga_dacG.h

diff --git a/src/Makefile.am b/src/Makefile.am
index 61c2b26..1d42c2e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -34,7 +34,9 @@ mga_drv_la_SOURCES = \
          mga_bios.c \
          mga_common.h \
          mga_dac3026.c \
+         mga_dac3026.h \
          mga_dacG.c \
+         mga_dacG.h \
          mga_dga.c \
          mga_driver.c \
          mga_g450pll.c \

commit 7e31991c28e9a1e26ff78d3426b90f4213626a0a
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Sat Sep 15 00:19:51 2007 +0200

    Bumped version to 1.9.99.

diff --git a/configure.ac b/configure.ac
index 9f8f1a7..9d97c71 100644
--- a/configure.ac
+++ b/configure.ac
@@ -24,7 +24,7 @@ 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.7,
+        1.9.99,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-video-mga)
 

commit 10d452ad86b4798f3ded6c4c2446f08aaab6af00
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Sat Sep 15 00:16:16 2007 +0200

    Oops, don't access the "memory" field in struct pci_mem_region either.

diff --git a/src/mga_driver.c b/src/mga_driver.c
index 1ec20dd..c881b9d 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -2776,18 +2776,22 @@ MGAMapMem(ScrnInfoPtr pScrn)
 #ifdef XSERVER_LIBPCIACCESS
     struct pci_device *const dev = pMga->PciInfo;
     struct pci_mem_region *region;
+    void **memory[2];
     int i, err;
 #endif
 
 
     if (!pMga->FBDev) {
 #ifdef XSERVER_LIBPCIACCESS
+        memory[pMga->io_bar] = &pMga->IOBase;
+        memory[pMga->framebuffer_bar] = &pMga->FbBase;
+
         for (i = 0; i < 2; i++) {
             region = &dev->regions[i];
             err = pci_device_map_range(dev,
                                        region->base_addr, region->size,
                                        PCI_DEV_MAP_FLAG_WRITABLE,
-                                       &region->memory);
+                                       memory[i]);
 
             if (err) {
                 xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
@@ -2796,9 +2800,6 @@ MGAMapMem(ScrnInfoPtr pScrn)
                 return FALSE;
             }
         }
-
-       pMga->IOBase = dev->regions[ pMga->io_bar ].memory;
-       pMga->FbBase = dev->regions[ pMga->framebuffer_bar ].memory;
 #else
        /*
         * For Alpha, we need to map SPARSE memory, since we need
@@ -2843,15 +2844,13 @@ MGAMapMem(ScrnInfoPtr pScrn)
         err = pci_device_map_range(dev,
                                    region->base_addr, region->size,
                                    PCI_DEV_MAP_FLAG_WRITABLE,
-                                   &region->memory);
+                                   (void *) &pMga->ILOADBase);
        if (err) {
            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                       "Unable to map BAR 2 (ILOAD region).  %s (%d)\n",
                       strerror(err), err);
            return FALSE;
        }
-
-       pMga->ILOADBase = dev->regions[pMga->iload_bar].memory;
 #else
        pMga->ILOADBase = xf86MapPciMem(pScrn->scrnIndex,
                                        VIDMEM_MMIO | VIDMEM_MMIO_32BIT |
@@ -2876,17 +2875,13 @@ MGAUnmapMem(ScrnInfoPtr pScrn)
     MGAPtr pMga = MGAPTR(pScrn);
 #ifdef XSERVER_LIBPCIACCESS
     struct pci_device * const dev = pMga->PciInfo;
-    struct pci_mem_region *region;
-    int i;
 #endif
 
     
     if (!pMga->FBDev) {
 #ifdef XSERVER_LIBPCIACCESS
-        for (i = 0; i < 2; i++) {
-            region = &dev->regions[i];
-            pci_device_unmap_range(dev, region->memory, region->size);
-        }
+        pci_device_unmap_range(dev, pMga->IOBase, 0x4000);
+        pci_device_unmap_range(dev, pMga->FbBase, pMga->FbMapSize);
 #else
        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->IOBase, 0x4000);
        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->FbBase, 
pMga->FbMapSize);
@@ -2897,16 +2892,9 @@ MGAUnmapMem(ScrnInfoPtr pScrn)
        fbdevHWUnmapMMIO(pScrn);
     }
 
-    if ((pMga->iload_bar != -1)
-#ifdef XSERVER_LIBPCIACCESS
-        && (dev->regions[pMga->iload_bar].memory != NULL)
-#else
-        && (pMga->ILOADBase != NULL)
-#endif
-       ) {
+    if ((pMga->iload_bar != -1) && (pMga->ILOADBase != NULL)) {
 #ifdef XSERVER_LIBPCIACCESS
-        region = &dev->regions[pMga->iload_bar];
-        pci_device_unmap_range(dev, region->memory, region->size);
+        pci_device_unmap_range(dev, pMga->ILOADBase, 0x800000);
 #else
        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->ILOADBase, 0x800000);
 #endif

commit 485fb9aa1e5d90c75d763db4b7bf5a80e51e83e9
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Fri Sep 14 23:10:09 2007 +0200

    Use pci_device_map_range() instead of pci_device_map_region().
    
    Likewise for pci_device_unmap_region().

diff --git a/src/mga_driver.c b/src/mga_driver.c
index d9b786f..1ec20dd 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -2775,27 +2775,27 @@ MGAMapMem(ScrnInfoPtr pScrn)
     MGAPtr pMga = MGAPTR(pScrn);
 #ifdef XSERVER_LIBPCIACCESS
     struct pci_device *const dev = pMga->PciInfo;
-    int err;
+    struct pci_mem_region *region;
+    int i, err;
 #endif
 
 
     if (!pMga->FBDev) {
 #ifdef XSERVER_LIBPCIACCESS
-       err = pci_device_map_region(dev, 0, TRUE);
-       if (err) {
-           xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                      "Unable to map BAR 0.  %s (%d)\n",
-                      strerror(err), err);
-           return FALSE;
-       }
-
-       err = pci_device_map_region(dev, 1, TRUE);
-       if (err) {
-           xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                      "Unable to map BAR 1.  %s (%d)\n",
-                      strerror(err), err);
-           return FALSE;
-       }
+        for (i = 0; i < 2; i++) {
+            region = &dev->regions[i];
+            err = pci_device_map_range(dev,
+                                       region->base_addr, region->size,
+                                       PCI_DEV_MAP_FLAG_WRITABLE,
+                                       &region->memory);
+
+            if (err) {
+                xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                           "Unable to map BAR %i.  %s (%d)\n",
+                           i, strerror(err), err);
+                return FALSE;
+            }
+        }
 
        pMga->IOBase = dev->regions[ pMga->io_bar ].memory;
        pMga->FbBase = dev->regions[ pMga->framebuffer_bar ].memory;
@@ -2839,7 +2839,11 @@ MGAMapMem(ScrnInfoPtr pScrn)
     pMga->ILOADBase = NULL;
     if (pMga->iload_bar != -1) {
 #ifdef XSERVER_LIBPCIACCESS
-       err = pci_device_map_region(dev, pMga->iload_bar, TRUE);
+        region = &dev->regions[pMga->iload_bar];
+        err = pci_device_map_range(dev,
+                                   region->base_addr, region->size,
+                                   PCI_DEV_MAP_FLAG_WRITABLE,
+                                   &region->memory);
        if (err) {
            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
                       "Unable to map BAR 2 (ILOAD region).  %s (%d)\n",
@@ -2872,13 +2876,17 @@ MGAUnmapMem(ScrnInfoPtr pScrn)
     MGAPtr pMga = MGAPTR(pScrn);
 #ifdef XSERVER_LIBPCIACCESS
     struct pci_device * const dev = pMga->PciInfo;
+    struct pci_mem_region *region;
+    int i;
 #endif
 
     
     if (!pMga->FBDev) {
 #ifdef XSERVER_LIBPCIACCESS
-       pci_device_unmap_region(dev, 0);
-       pci_device_unmap_region(dev, 1);
+        for (i = 0; i < 2; i++) {
+            region = &dev->regions[i];
+            pci_device_unmap_range(dev, region->memory, region->size);
+        }
 #else
        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->IOBase, 0x4000);
        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->FbBase, 
pMga->FbMapSize);
@@ -2897,7 +2905,8 @@ MGAUnmapMem(ScrnInfoPtr pScrn)
 #endif
        ) {
 #ifdef XSERVER_LIBPCIACCESS
-       pci_device_unmap_region(dev, pMga->iload_bar);
+        region = &dev->regions[pMga->iload_bar];
+        pci_device_unmap_range(dev, region->memory, region->size);
 #else
        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->ILOADBase, 0x800000);
 #endif

commit c9fb0e6de97f55f50bf0a63faa8da47d007e9c34
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Fri Sep 14 22:42:08 2007 +0200

    Added missing libpciaccess bits.

diff --git a/src/mga_2064_crtc.c b/src/mga_2064_crtc.c
index 1230420..0277172 100644
--- a/src/mga_2064_crtc.c
+++ b/src/mga_2064_crtc.c
@@ -729,8 +729,13 @@ state_restore(xf86CrtcPtr crtc, MgaCrtcStatePtr state,
     for (i = 0; i < 6; i++)
         OUTREG16(0x1FDE, (state->ExtVga[i] << 8) | i);
 
+#ifdef XSERVER_LIBPCIACCESS
+    pci_device_cfg_write_bits(pMga->PciInfo, OPTION_MASK,
+                              state->Option, PCI_OPTION_REG);
+#else
     pciSetBitsLong(pMga->PciTag, PCI_OPTION_REG, OPTION_MASK,
                    state->Option);
+#endif
 
     /* select pixel clock PLL as clock source */
     outTi3026(TVP3026_CLK_SEL, 0, state->DacRegs[3]);
@@ -837,7 +842,11 @@ state_save(xf86CrtcPtr crtc, MgaCrtcStatePtr state, int 
vga_flags)
     for (i = 0; i < DACREGSIZE; i++)
         state->DacRegs[i] = inTi3026(MGADACregs[i]);
 
+#ifdef XSERVER_LIBPCIACCESS
+    pci_device_cfg_read_u32(pMga->PciInfo, &state->Option, PCI_OPTION_REG);
+#else
     state->Option = pciReadLong(pMga->PciTag, PCI_OPTION_REG);
+#endif
 
 #ifdef DEBUG
     ErrorF("read: %02X %02X %02X       %02X %02X %02X  %08lX\n",
diff --git a/src/mga_g_crtc.c b/src/mga_g_crtc.c
index 030a6bd..e6ef324 100644
--- a/src/mga_g_crtc.c
+++ b/src/mga_g_crtc.c
@@ -678,6 +678,18 @@ state_restore(xf86CrtcPtr crtc, MgaCrtcStatePtr state,
 
     if (!MGAISGx50(pMga)) {
         /* restore pci_option register */
+#ifdef XSERVER_LIBPCIACCESS
+        pci_device_cfg_write_bits(pMga->PciInfo, optionMask,
+                                  state->Option, PCI_OPTION_REG);
+
+        if (pMga->Chipset != PCI_CHIP_MGA1064)
+            pci_device_cfg_write_bits(pMga->PciInfo, OPTION2_MASK,
+                                      state->Option2, PCI_MGA_OPTION2);
+
+        if (pMga->Chipset == PCI_CHIP_MGAG400 || pMga->Chipset == 
PCI_CHIP_MGAG550)
+            pci_device_cfg_write_bits(pMga->PciInfo, OPTION3_MASK,
+                                      state->Option3, PCI_MGA_OPTION3);
+#else
         pciSetBitsLong(pMga->PciTag, PCI_OPTION_REG, optionMask,
                        state->Option);
 
@@ -688,6 +700,7 @@ state_restore(xf86CrtcPtr crtc, MgaCrtcStatePtr state,
         if (pMga->Chipset == PCI_CHIP_MGAG400 || pMga->Chipset == 
PCI_CHIP_MGAG550)
             pciSetBitsLong(pMga->PciTag, PCI_MGA_OPTION3, OPTION3_MASK,
                            state->Option3);
+#endif
     }
 
     /* restore CRTCEXT regs */
@@ -767,11 +780,23 @@ state_save(xf86CrtcPtr crtc, MgaCrtcStatePtr state, int 
vga_flags)
 
     state->PIXPLLCSaved = TRUE;
 
+
+#ifdef XSERVER_LIBPCIACCESS
+    pci_device_cfg_read_u32(pMga->PciInfo, &state->Option,
+                            PCI_OPTION_REG);
+    pci_device_cfg_read_u32(pMga->PciInfo, &state->Option2,
+                            PCI_MGA_OPTION2);
+
+    if (pMga->Chipset == PCI_CHIP_MGAG400 || pMga->Chipset == PCI_CHIP_MGAG550)
+        pci_device_cfg_read_u32(pMga->PciInfo, &state->Option3,
+                                PCI_MGA_OPTION3);
+#else
     state->Option = pciReadLong(pMga->PciTag, PCI_OPTION_REG);
     state->Option2 = pciReadLong(pMga->PciTag, PCI_MGA_OPTION2);
 
     if (pMga->Chipset == PCI_CHIP_MGAG400 || pMga->Chipset == PCI_CHIP_MGAG550)
         state->Option3 = pciReadLong(pMga->PciTag, PCI_MGA_OPTION3);
+#endif
 
     for (i = 0; i < 6; i++) {
         OUTREG8(MGAREG_CRTCEXT_INDEX, i);

commit 5fa65b9924fbff1e88c6ec229e8deeb687cc9a7d
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Wed Aug 8 13:35:06 2007 +0200

    Power off the panel(s) when there's no users.

diff --git a/src/mga_g_output.c b/src/mga_g_output.c
index ff8a7e6..a5cf7e0 100644
--- a/src/mga_g_output.c
+++ b/src/mga_g_output.c
@@ -122,6 +122,8 @@ static const xf86OutputFuncsRec output_panel2_funcs = {
     .destroy = output_destroy
 };
 
+static int panel_users = 0;
+
 static void
 output_dac1_dpms(xf86OutputPtr output, int mode)
 {
@@ -230,11 +232,15 @@ output_panel1_dpms(xf86OutputPtr output, int mode)
     pwr_ctl = inMGAdac(MGA1064_PWR_CTL);
     mask = MGA1064_PWR_CTL_PANEL_EN;
 
-    /* we could drop MGA1064_PWR_CTL_PANEL_EN here,
-     * but since that affects _both_ panels, it's somewhat useless.
-     */
-    if (mode == DPMSModeOn)
+    if (mode == DPMSModeOn) {
+        panel_users |= 1;
         outMGAdac(MGA1064_PWR_CTL, pwr_ctl | mask);
+    } else {
+        panel_users &= ~1;
+
+        if (!panel_users)
+            outMGAdac(MGA1064_PWR_CTL, pwr_ctl & ~mask);
+    }
 }
 
 static void
@@ -247,13 +253,16 @@ output_panel2_dpms(xf86OutputPtr output, int mode)
     mask = MGA1064_PWR_CTL_PANEL_EN;
 
     if (mode == DPMSModeOn) {
+        panel_users |= 2;
+
         outMGAdac(MGA1064_PWR_CTL, pwr_ctl | mask);
         outMGAdac(MGA1064_DVI_PIPE_CTL, 0x20);
     } else {
-        /* see above
-         *
-         * outMGAdac(MGA1064_PWR_CTL, pwr_ctl & ~mask);
-         */
+        panel_users &= ~2;
+
+        if (!panel_users)
+            outMGAdac(MGA1064_PWR_CTL, pwr_ctl & ~mask);
+
         outMGAdac(MGA1064_DVI_PIPE_CTL, 0x0);
     }
 }

commit 0802b9147ba9f58be5f3122f7ad1f78018b4db94
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Thu Aug 2 16:16:44 2007 +0200

    Removed unused driver options.

diff --git a/src/mga.h b/src/mga.h
index eb371e2..cd69931 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -44,12 +44,10 @@
 #endif
 
 typedef enum {
-    OPTION_SW_CURSOR,
     OPTION_HW_CURSOR,
     OPTION_PCI_RETRY,
     OPTION_SYNC_ON_GREEN,
     OPTION_NOACCEL,
-    OPTION_SHOWCACHE,
     OPTION_OVERLAY,
     OPTION_MGA_SDRAM,
     OPTION_SHADOW_FB,
@@ -59,24 +57,10 @@ typedef enum {
     OPTION_OVERCLOCK_MEM,
     OPTION_VIDEO_KEY,
     OPTION_TEXTURED_VIDEO,
-    OPTION_CRTC2HALF,
-    OPTION_CRTC2RAM,
     OPTION_INT10,
     OPTION_AGP_MODE,
     OPTION_AGP_SIZE,
-    OPTION_DIGITAL1,
-    OPTION_DIGITAL2,
-    OPTION_TV,
-    OPTION_TVSTANDARD,
-    OPTION_CABLETYPE,
-    OPTION_USEIRQZERO,
-    OPTION_SWAPPED_HEAD,
     OPTION_DRI,
-    OPTION_MERGEDFB,
-    OPTION_HSYNC2,
-    OPTION_VREFRESH2,
-    OPTION_MONITOR2POS,
-    OPTION_METAMODES,
     OPTION_OLDDMA,
     OPTION_PCIDMA,
     OPTION_ACCELMETHOD
@@ -402,7 +386,6 @@ typedef struct {
     Bool               Dac6Bit;
     Bool               HWCursor;
     Bool               UsePCIRetry;
-    Bool               ShowCache;
     Bool               Overlay8Plus24;
     Bool               ShadowFB;
     unsigned char *    ShadowPtr;
diff --git a/src/mga_driver.c b/src/mga_driver.c
index fef67df..d859e2e 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -198,12 +198,10 @@ static PciChipsets MGAPciChipsets[] = {
 };
 
 static const OptionInfoRec MGAOptions[] = {
-    { OPTION_SW_CURSOR,                "SWcursor",     OPTV_BOOLEAN,   {0}, 
FALSE },
     { OPTION_HW_CURSOR,                "HWcursor",     OPTV_BOOLEAN,   {0}, 
FALSE },
     { OPTION_PCI_RETRY,                "PciRetry",     OPTV_BOOLEAN,   {0}, 
FALSE },
     { OPTION_SYNC_ON_GREEN,    "SyncOnGreen",  OPTV_BOOLEAN,   {0}, FALSE },
     { OPTION_NOACCEL,          "NoAccel",      OPTV_BOOLEAN,   {0}, FALSE },
-    { OPTION_SHOWCACHE,                "ShowCache",    OPTV_BOOLEAN,   {0}, 
FALSE },
     { OPTION_OVERLAY,          "Overlay",      OPTV_ANYSTR,    {0}, FALSE },
     { OPTION_MGA_SDRAM,                "MGASDRAM",     OPTV_BOOLEAN,   {0}, 
FALSE },
     { OPTION_SHADOW_FB,                "ShadowFB",     OPTV_BOOLEAN,   {0}, 
FALSE },
@@ -213,23 +211,10 @@ static const OptionInfoRec MGAOptions[] = {
     { OPTION_OVERCLOCK_MEM,    "OverclockMem", OPTV_BOOLEAN,   {0}, FALSE },
     { OPTION_VIDEO_KEY,                "VideoKey",     OPTV_INTEGER,   {0}, 
FALSE },
     { OPTION_TEXTURED_VIDEO,   "TexturedVideo",OPTV_BOOLEAN,   {0}, FALSE },
-    { OPTION_CRTC2HALF,                "Crtc2Half",    OPTV_BOOLEAN,   {0}, 
FALSE },
-    { OPTION_CRTC2RAM,         "Crtc2Ram",     OPTV_INTEGER,   {0}, FALSE },
     { OPTION_INT10,            "Int10",        OPTV_BOOLEAN,   {0}, FALSE },
     { OPTION_AGP_MODE,         "AGPMode",      OPTV_INTEGER,   {0}, FALSE },
     { OPTION_AGP_SIZE,         "AGPSize",      OPTV_INTEGER,   {0}, FALSE },
-    { OPTION_DIGITAL1,         "DigitalScreen1",OPTV_BOOLEAN,  {0}, FALSE },
-    { OPTION_DIGITAL2,         "DigitalScreen2",OPTV_BOOLEAN,  {0}, FALSE },
-    { OPTION_TV,               "TV",           OPTV_BOOLEAN,   {0}, FALSE },
-    { OPTION_TVSTANDARD,       "TVStandard",   OPTV_ANYSTR,    {0}, FALSE },
-    { OPTION_CABLETYPE,                "CableType",    OPTV_ANYSTR,    {0}, 
FALSE },
-    { OPTION_SWAPPED_HEAD,     "SwappedHead",  OPTV_BOOLEAN,   {0}, FALSE },
     { OPTION_DRI,              "DRI",          OPTV_BOOLEAN,   {0}, FALSE },
-    { OPTION_MERGEDFB,         "MergedFB",     OPTV_BOOLEAN,   {0}, FALSE },
-    { OPTION_HSYNC2,   "Monitor2HSync",        OPTV_ANYSTR,    {0}, FALSE },
-    { OPTION_VREFRESH2,        "Monitor2VRefresh",     OPTV_ANYSTR,    {0}, 
FALSE },
-    { OPTION_MONITOR2POS,   "Monitor2Position",        OPTV_ANYSTR,    {0}, 
FALSE },
-    { OPTION_METAMODES,   "MetaModes",         OPTV_ANYSTR,    {0}, FALSE },
     { OPTION_OLDDMA,           "OldDmaInit",   OPTV_BOOLEAN,   {0}, FALSE },
     { OPTION_PCIDMA,           "ForcePciDma",  OPTV_BOOLEAN,   {0}, FALSE },
     { OPTION_ACCELMETHOD,      "AccelMethod",  OPTV_ANYSTR,    {0}, FALSE },
@@ -1455,10 +1440,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
        pMga->SyncOnGreen = TRUE;
        xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Sync-on-Green enabled\n");
     }
-    if (xf86ReturnOptValBool(pMga->Options, OPTION_SHOWCACHE, FALSE)) {
-       pMga->ShowCache = TRUE;
-       xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ShowCache enabled\n");
-    }
     if (xf86ReturnOptValBool(pMga->Options, OPTION_MGA_SDRAM, FALSE)) {
        pMga->HasSDRAM = TRUE;
        xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Has SDRAM\n");
@@ -1514,10 +1495,6 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
     if (xf86ReturnOptValBool(pMga->Options, OPTION_TEXTURED_VIDEO, FALSE)) {
        pMga->TexturedVideo = TRUE;
     }
-    if (xf86ReturnOptValBool(pMga->Options, OPTION_MERGEDFB, FALSE)) {
-        xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-                   "\"Merged Framebuffer\" mode not supported.\n");
-    }
     if (pMga->FBDev) {
        /* check for linux framebuffer device */
        if (!xf86LoadSubModule(pScrn, "fbdevhw"))

commit aeda6773a4d92d498fe439716733db5ea189ab0d
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Thu Aug 2 16:06:10 2007 +0200

    Removed documentation for the NoHal option.

diff --git a/man/mga.man b/man/mga.man
index abc9ae0..259b5ec 100644
--- a/man/mga.man
+++ b/man/mga.man
@@ -115,10 +115,6 @@ the Render and Composite extensions, but the rendering 
code for it is newer and
 possibly unstable.  The default is
 .B XAA.
 .TP
-.BI "Option \*qNoHal\*q \*q" boolean \*q
-Disable or enable loading the "mga_hal" module.  Default: the module is
-loaded when available and when using hardware that it supports.
-.TP
 .BI "Option \*qOverclockMem\*q"
 Set clocks to values used by some commercial X Servers (G100, G200 and G400
 only).  Default: off.

commit 2bc283e9fccb3de49ff2a7819f89f6a173af6024
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Thu Aug 2 16:01:14 2007 +0200

    Removed unused MGA_DH_NEEDS_HAL macro.

diff --git a/src/mga_macros.h b/src/mga_macros.h
index 36690d1..404501f 100644
--- a/src/mga_macros.h
+++ b/src/mga_macros.h
@@ -64,7 +64,4 @@ while(INREG(MGAREG_DWGSYNC) != MGA_SYNC_XTAG) ; \
 
 #define MGAISGx50(x) ((x)->is_Gx50)
 
-#define MGA_DH_NEEDS_HAL(x) (((x)->Chipset == PCI_CHIP_MGAG400) && \
-                            ((x)->ChipRev < 0x80))
-
 #endif /* _MGA_MACROS_H_ */

commit 7e0511a17127f1051ee1b5489d292f2ff304ce26
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Thu Aug 2 00:30:17 2007 +0200

    Added (broken) support for the second output on G550 dual-dvi.
    
    This still has the original problem that a horizontal and vertical
    offset is applied to that output.
    
    I also renamed the "Panel" outputs to "DVI".

diff --git a/src/mga.h b/src/mga.h
index 30569c3..eb371e2 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -644,7 +644,8 @@ Bool MgaGCrtc2Init(ScrnInfoPtr pScrn);
 
 xf86OutputPtr MgaGOutputDac1Init(ScrnInfoPtr pScrn, Bool number);
 xf86OutputPtr MgaGOutputDac2Init(ScrnInfoPtr pScrn, Bool number);
-xf86OutputPtr MgaGOutputPanelInit(ScrnInfoPtr pScrn);
+xf86OutputPtr MgaGOutputPanel1Init(ScrnInfoPtr pScrn, Bool number);
+xf86OutputPtr MgaGOutputPanel2Init(ScrnInfoPtr pScrn, Bool number);
 
 static __inline__ void
 MGA_MARK_SYNC(MGAPtr pMga, ScrnInfoPtr pScrn)
diff --git a/src/mga_driver.c b/src/mga_driver.c
index eeca190..fef67df 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -1080,14 +1080,15 @@ setup_g_outputs(ScrnInfoPtr scrn)
 {
     MGAPtr pMga;
     xf86OutputPtr output;
-    Bool number_vga = FALSE;
+    Bool number_vga = FALSE, number_dvi = FALSE;
 
     pMga = MGAPTR(scrn);
 
     /* first output */
     switch (pMga->bios.connector[0]) {
     case MGA_CONNECTOR_DVI:
-        output = MgaGOutputPanelInit (scrn);
+        number_dvi = pMga->bios.connector[1] == MGA_CONNECTOR_DVI;
+        output = MgaGOutputPanel1Init (scrn, number_dvi);
         break;
     default:
         /* in case PInS doesn't contain connector info
@@ -1107,6 +1108,9 @@ setup_g_outputs(ScrnInfoPtr scrn)
     case MGA_CONNECTOR_HD15:
         output = MgaGOutputDac2Init (scrn, number_vga);
         break;
+    case MGA_CONNECTOR_DVI:
+        output = MgaGOutputPanel2Init (scrn, number_dvi);
+        break;
     default:
         output = NULL;
         break;
diff --git a/src/mga_g_output.c b/src/mga_g_output.c
index 0914423..ff8a7e6 100644
--- a/src/mga_g_output.c
+++ b/src/mga_g_output.c
@@ -44,7 +44,8 @@ typedef struct {
 
 static void output_dac1_dpms(xf86OutputPtr output, int mode);
 static void output_dac2_dpms(xf86OutputPtr output, int mode);
-static void output_panel_dpms(xf86OutputPtr output, int mode);
+static void output_panel1_dpms(xf86OutputPtr output, int mode);
+static void output_panel2_dpms(xf86OutputPtr output, int mode);
 static void output_save(xf86OutputPtr output);
 static void output_restore(xf86OutputPtr output);
 static void output_panel_restore(xf86OutputPtr output);
@@ -56,8 +57,10 @@ static void output_mode_set(xf86OutputPtr output, 
DisplayModePtr mode,
                             DisplayModePtr adjusted_mode);
 static void output_dac2_mode_set(xf86OutputPtr output, DisplayModePtr mode,
                                  DisplayModePtr adjusted_mode);
-static void output_panel_mode_set(xf86OutputPtr output, DisplayModePtr mode,
-                                  DisplayModePtr adjusted_mode);
+static void output_panel1_mode_set(xf86OutputPtr output, DisplayModePtr mode,
+                                   DisplayModePtr adjusted_mode);
+static void output_panel2_mode_set(xf86OutputPtr output, DisplayModePtr mode,
+                                   DisplayModePtr adjusted_mode);
 static void output_commit(xf86OutputPtr output);
 static xf86OutputStatus output_detect(xf86OutputPtr output);
 static DisplayModePtr output_get_modes(xf86OutputPtr output);
@@ -91,14 +94,28 @@ static const xf86OutputFuncsRec output_dac2_funcs = {
     .destroy = output_destroy
 };
 
-static const xf86OutputFuncsRec output_panel_funcs = {
-    .dpms = output_panel_dpms,
+static const xf86OutputFuncsRec output_panel1_funcs = {
+    .dpms = output_panel1_dpms,
     .save = output_save,
     .restore = output_panel_restore,
     .mode_valid = output_mode_valid,
     .mode_fixup = output_mode_fixup,
     .prepare = output_prepare,
-    .mode_set = output_panel_mode_set,
+    .mode_set = output_panel1_mode_set,
+    .commit = output_commit,
+    .detect = output_detect,
+    .get_modes = output_get_modes,
+    .destroy = output_destroy
+};
+
+static const xf86OutputFuncsRec output_panel2_funcs = {
+    .dpms = output_panel2_dpms,
+    .save = output_save,
+    .restore = output_panel_restore,
+    .mode_valid = output_mode_valid,
+    .mode_fixup = output_mode_fixup,
+    .prepare = output_prepare,
+    .mode_set = output_panel2_mode_set,
     .commit = output_commit,
     .detect = output_detect,
     .get_modes = output_get_modes,
@@ -205,7 +222,7 @@ output_dac2_dpms(xf86OutputPtr output, int mode)
 }
 
 static void
-output_panel_dpms(xf86OutputPtr output, int mode)
+output_panel1_dpms(xf86OutputPtr output, int mode)
 {
     MGAPtr pMga = MGAPTR(output->scrn);
     CARD8 pwr_ctl, mask;
@@ -221,6 +238,27 @@ output_panel_dpms(xf86OutputPtr output, int mode)
 }
 
 static void
+output_panel2_dpms(xf86OutputPtr output, int mode)
+{
+    MGAPtr pMga = MGAPTR(output->scrn);
+    CARD8 pwr_ctl, mask;
+
+    pwr_ctl = inMGAdac(MGA1064_PWR_CTL);
+    mask = MGA1064_PWR_CTL_PANEL_EN;
+
+    if (mode == DPMSModeOn) {
+        outMGAdac(MGA1064_PWR_CTL, pwr_ctl | mask);
+        outMGAdac(MGA1064_DVI_PIPE_CTL, 0x20);
+    } else {
+        /* see above
+         *
+         * outMGAdac(MGA1064_PWR_CTL, pwr_ctl & ~mask);
+         */
+        outMGAdac(MGA1064_DVI_PIPE_CTL, 0x0);
+    }
+}
+
+static void
 output_save(xf86OutputPtr output)
 {
 }
@@ -320,7 +358,7 @@ get_pan_ctl_value(xf86OutputPtr output, DisplayModePtr mode)
 }
 
 static void
-output_panel_mode_set(xf86OutputPtr output, DisplayModePtr mode,
+output_panel1_mode_set(xf86OutputPtr output, DisplayModePtr mode,
                       DisplayModePtr adjusted_mode)
 {
     MGAPtr pMga = MGAPTR(output->scrn);
@@ -339,7 +377,12 @@ output_panel_mode_set(xf86OutputPtr output, DisplayModePtr 
mode,
         disp_ctl |= MGA1064_DISP_CTL_PANOUTSEL_CRTC2RGB;
 
     outMGAdac(MGA1064_DISP_CTL, disp_ctl);
+}
 
+static void
+output_panel2_mode_set(xf86OutputPtr output, DisplayModePtr mode,
+                      DisplayModePtr adjusted_mode)
+{
 }
 
 static xf86OutputStatus
@@ -424,17 +467,18 @@ MgaGOutputDac2Init(ScrnInfoPtr scrn, Bool number)
 }
 
 xf86OutputPtr
-MgaGOutputPanelInit(ScrnInfoPtr scrn)
+MgaGOutputPanel1Init(ScrnInfoPtr scrn, Bool number)
 {
     MGAPtr pMga = MGAPTR(scrn);
     xf86OutputPtr output;
     MgaOutputDataPtr data;
+    const char *name = number ? "DVI1" : "DVI";
 
     data = xnfcalloc(sizeof(MgaOutputDataRec), 1);
     if (!data)
         return NULL;
 
-    output = xf86OutputCreate(scrn, &output_panel_funcs, "Panel");
+    output = xf86OutputCreate(scrn, &output_panel1_funcs, name);
     if (!output) {
         xfree(data);
         return NULL;
@@ -446,3 +490,28 @@ MgaGOutputPanelInit(ScrnInfoPtr scrn)
 
     return output;
 }
+
+xf86OutputPtr
+MgaGOutputPanel2Init(ScrnInfoPtr scrn, Bool number)
+{
+    MGAPtr pMga = MGAPTR(scrn);
+    xf86OutputPtr output;
+    MgaOutputDataPtr data;
+    const char *name = number ? "DVI2" : "DVI";
+
+    data = xnfcalloc(sizeof(MgaOutputDataRec), 1);
+    if (!data)
+        return NULL;
+
+    output = xf86OutputCreate(scrn, &output_panel2_funcs, name);
+    if (!output) {
+        xfree(data);
+        return NULL;
+    }
+
+    output->driver_private = data;
+
+    data->ddc_bus = pMga->DDC_Bus2;
+
+    return output;
+}

commit 45033be06ccf71dd8db707c8704012102fdef2da
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Wed Aug 1 22:55:05 2007 +0200

    Only number outputs if necessary.

diff --git a/src/mga.h b/src/mga.h
index 7c1eb22..30569c3 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -642,8 +642,8 @@ xf86OutputPtr Mga2064OutputInit(ScrnInfoPtr pScrn);
 Bool MgaGCrtc1Init(ScrnInfoPtr pScrn);
 Bool MgaGCrtc2Init(ScrnInfoPtr pScrn);
 
-xf86OutputPtr MgaGOutputDac1Init(ScrnInfoPtr pScrn);
-xf86OutputPtr MgaGOutputDac2Init(ScrnInfoPtr pScrn);
+xf86OutputPtr MgaGOutputDac1Init(ScrnInfoPtr pScrn, Bool number);
+xf86OutputPtr MgaGOutputDac2Init(ScrnInfoPtr pScrn, Bool number);
 xf86OutputPtr MgaGOutputPanelInit(ScrnInfoPtr pScrn);
 
 static __inline__ void
diff --git a/src/mga_2064_output.c b/src/mga_2064_output.c
index d2d148c..e344b6a 100644
--- a/src/mga_2064_output.c
+++ b/src/mga_2064_output.c
@@ -182,7 +182,7 @@ Mga2064OutputInit(ScrnInfoPtr scrn)
     if (!data)
         return NULL;
 
-    output = xf86OutputCreate(scrn, &output_funcs, "VGA 1");
+    output = xf86OutputCreate(scrn, &output_funcs, "VGA");
     if (!output) {
         xfree(data);
         return NULL;
diff --git a/src/mga_driver.c b/src/mga_driver.c
index ac23634..eeca190 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -1080,6 +1080,7 @@ setup_g_outputs(ScrnInfoPtr scrn)
 {
     MGAPtr pMga;
     xf86OutputPtr output;
+    Bool number_vga = FALSE;
 
     pMga = MGAPTR(scrn);
 
@@ -1093,7 +1094,8 @@ setup_g_outputs(ScrnInfoPtr scrn)
          * or it claims there's no primary output
          * we just assume it's VGA.
          */
-        output = MgaGOutputDac1Init (scrn);
+        number_vga = pMga->bios.connector[1] == MGA_CONNECTOR_HD15;
+        output = MgaGOutputDac1Init (scrn, number_vga);
         break;
     }
 
@@ -1103,7 +1105,7 @@ setup_g_outputs(ScrnInfoPtr scrn)
     /* second output */
     switch (pMga->bios.connector[1]) {
     case MGA_CONNECTOR_HD15:
-        output = MgaGOutputDac2Init (scrn);
+        output = MgaGOutputDac2Init (scrn, number_vga);
         break;
     default:
         output = NULL;
diff --git a/src/mga_g_output.c b/src/mga_g_output.c
index 2234219..0914423 100644
--- a/src/mga_g_output.c
+++ b/src/mga_g_output.c
@@ -374,17 +374,18 @@ output_destroy(xf86OutputPtr output)
 }
 
 xf86OutputPtr
-MgaGOutputDac1Init(ScrnInfoPtr scrn)
+MgaGOutputDac1Init(ScrnInfoPtr scrn, Bool number)
 {
     MGAPtr pMga = MGAPTR(scrn);
     xf86OutputPtr output;
     MgaOutputDataPtr data;
+    const char *name = number ? "VGA1" : "VGA";
 
     data = xnfcalloc(sizeof(MgaOutputDataRec), 1);
     if (!data)
         return NULL;
 
-    output = xf86OutputCreate(scrn, &output_dac1_funcs, "VGA1");
+    output = xf86OutputCreate(scrn, &output_dac1_funcs, name);
     if (!output) {
         xfree(data);
         return NULL;
@@ -398,17 +399,18 @@ MgaGOutputDac1Init(ScrnInfoPtr scrn)
 }
 
 xf86OutputPtr
-MgaGOutputDac2Init(ScrnInfoPtr scrn)
+MgaGOutputDac2Init(ScrnInfoPtr scrn, Bool number)
 {
     MGAPtr pMga = MGAPTR(scrn);
     xf86OutputPtr output;
     MgaOutputDataPtr data;
+    const char *name = number ? "VGA2" : "VGA";
 
     data = xnfcalloc(sizeof(MgaOutputDataRec), 1);
     if (!data)
         return NULL;
 
-    output = xf86OutputCreate(scrn, &output_dac2_funcs, "VGA2");
+    output = xf86OutputCreate(scrn, &output_dac2_funcs, name);
     if (!output) {
         xfree(data);
         return NULL;
@@ -432,7 +434,7 @@ MgaGOutputPanelInit(ScrnInfoPtr scrn)
     if (!data)
         return NULL;
 
-    output = xf86OutputCreate(scrn, &output_panel_funcs, "Panel1");
+    output = xf86OutputCreate(scrn, &output_panel_funcs, "Panel");
     if (!output) {
         xfree(data);
         return NULL;

commit cda9ccbe2723c13052f48aed516f07263a02d347
Author: Tilman Sauerbeck <[EMAIL PROTECTED]>
Date:   Wed Aug 1 22:31:47 2007 +0200

    Fixed CRTC and output instantiation.
    
    Now the G-class crtc and outputs are actually only used on G-class
    cards. Also hooked up the 2064 crtc and output.

diff --git a/src/mga.h b/src/mga.h
index 43595a3..7c1eb22 100644
--- a/src/mga.h
+++ b/src/mga.h
@@ -636,6 +636,9 @@ void MGAG200SESaveMode(ScrnInfoPtr, vgaRegPtr);
 void MGAG200SERestoreMode(ScrnInfoPtr, vgaRegPtr);
 void MGAG200SEHWProtect(ScrnInfoPtr, Bool);
 
+Bool Mga2064CrtcInit(ScrnInfoPtr pScrn);
+xf86OutputPtr Mga2064OutputInit(ScrnInfoPtr pScrn);
+
 Bool MgaGCrtc1Init(ScrnInfoPtr pScrn);
 Bool MgaGCrtc2Init(ScrnInfoPtr pScrn);
 
diff --git a/src/mga_2064_crtc.c b/src/mga_2064_crtc.c
index fa4fb1f..1230420 100644
--- a/src/mga_2064_crtc.c
+++ b/src/mga_2064_crtc.c
@@ -919,3 +919,24 @@ crtc_destroy(xf86CrtcPtr crtc)
     if (crtc->driver_private)
         xfree (crtc->driver_private);
 }
+
+Bool
+Mga2064CrtcInit(ScrnInfoPtr scrn)
+{
+    xf86CrtcPtr crtc;
+    MgaCrtcDataPtr data;
+
+    data = xnfcalloc (sizeof (MgaCrtcDataRec), 1);
+    if (!data)
+        return FALSE;
+
+    crtc = xf86CrtcCreate (scrn, &crtc_funcs);
+    if (!crtc) {


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to