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

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



 Makefile.am                       |   11 
 README.ati                        |  828 -------
 README.ati.sgml                   |  648 -----
 README.r128                       |  160 -
 README.r128.sgml                  |  138 -
 configure.ac                      |   66 
 man/Makefile.am                   |    4 
 man/r128.man                      |  156 -
 man/radeon.man                    |   26 
 src/AtomBios/includes/ObjectID.h  |   36 
 src/AtomBios/includes/atombios.h  |  254 +-
 src/Makefile.am                   |   89 
 src/ati.c                         |  361 ---
 src/ati.h                         |    4 
 src/ati_pciids_gen.h              |    6 
 src/atiadjust.c                   |  134 -
 src/atiadjust.h                   |   31 
 src/atiaudio.c                    |   50 
 src/atiaudio.h                    |   51 
 src/atibank.c                     |  114 
 src/atibank.h                     |   44 
 src/atibus.c                      |  123 -
 src/atibus.h                      |   49 
 src/atichip.c                     |  271 --
 src/atichip.h                     |   94 
 src/aticlock.c                    |  442 ---
 src/aticlock.h                    |   62 
 src/aticonfig.c                   |  527 ----
 src/aticonsole.c                  |  816 ------
 src/aticonsole.h                  |   43 
 src/aticrtc.h                     |   42 
 src/aticursor.h                   |   42 
 src/atidac.c                      |  462 ---
 src/atidac.h                      |   99 
 src/atidecoder.c                  |   50 
 src/atidecoder.h                  |   51 
 src/atidga.c                      |  483 ----
 src/atidga.h                      |   36 
 src/atidri.c                      | 1640 -------------
 src/atidri.h                      |   49 
 src/atidripriv.h                  |   57 
 src/atidsp.c                      |  302 --
 src/atidsp.h                      |   35 
 src/atii2c.c                      |  399 ---
 src/atii2c.h                      |   48 
 src/atiload.c                     |   98 
 src/atiload.h                     |   32 
 src/atilock.c                     |  537 ----
 src/atilock.h                     |   31 
 src/atimach64.c                   | 1341 -----------
 src/atimach64.h                   |   36 
 src/atimach64accel.c              | 1068 ---------
 src/atimach64accel.h              |   42 
 src/atimach64cursor.c             |  426 ---
 src/atimach64exa.c                |  696 -----
 src/atimach64i2c.c                |  469 ---
 src/atimach64i2c.h                |   32 
 src/atimach64io.c                 |  103 
 src/atimach64io.h                 |  421 ---
 src/atimach64probe.c              |  234 -
 src/atimach64probe.h              |   32 
 src/atimach64render.c             |  898 -------
 src/atimach64version.h            |   59 
 src/atimach64xv.c                 | 1686 --------------
 src/atimisc.c                     |   82 
 src/atimode.c                     | 1084 ---------
 src/atimode.h                     |   35 
 src/atimodule.c                   |    6 
 src/atioption.h                   |   98 
 src/atipciids.h                   |    7 
 src/atipcirename.h                |    3 
 src/atipreinit.c                  | 2464 --------------------
 src/atipreinit.h                  |   30 
 src/atiprint.c                    |  784 ------
 src/atiprint.h                    |   34 
 src/atipriv.h                     |   30 
 src/atiprobe.c                    |  521 ----
 src/atiprobe.h                    |   30 
 src/atiregs.h                     | 2882 ------------------------
 src/atirgb514.c                   |  283 --
 src/atirgb514.h                   |   35 
 src/atiscreen.c                   |  692 -----
 src/atiscreen.h                   |   31 
 src/atistruct.h                   |  529 ----
 src/atituner.c                    |  177 -
 src/atituner.h                    |   69 
 src/atiutil.c                     |  117 
 src/atiutil.h                     |   67 
 src/ativalid.c                    |  161 -
 src/ativalid.h                    |   30 
 src/ativga.c                      |  195 -
 src/ativga.h                      |   40 
 src/ativgaio.c                    |   49 
 src/ativgaio.h                    |   56 
 src/atividmem.c                   |  483 ----
 src/atividmem.h                   |   73 
 src/atiwonder.c                   |  159 -
 src/atiwonder.h                   |   38 
 src/atiwonderio.c                 |   66 
 src/atiwonderio.h                 |   46 
 src/atixv.h                       |   34 
 src/atombios_output.c             |  120 -
 src/legacy_crtc.c                 |   28 
 src/legacy_output.c               |   92 
 src/mach64_common.h               |  130 -
 src/mach64_dri.h                  |  125 -
 src/mach64_sarea.h                |  162 -
 src/pcidb/ati_pciids.csv          |    6 
 src/pcidb/parse_pci_ids.pl        |    8 
 src/r128.h                        |  606 -----
 src/r128_accel.c                  | 1880 ----------------
 src/r128_chipset.h                |   54 
 src/r128_common.h                 |  169 -
 src/r128_cursor.c                 |  311 --
 src/r128_dga.c                    |  402 ---
 src/r128_dri.c                    | 1499 ------------
 src/r128_dri.h                    |  100 
 src/r128_dripriv.h                |   57 
 src/r128_driver.c                 | 4465 --------------------------------------
 src/r128_misc.c                   |   83 
 src/r128_probe.c                  |  266 --
 src/r128_probe.h                  |   73 
 src/r128_reg.h                    | 1533 -------------
 src/r128_sarea.h                  |  194 -
 src/r128_version.h                |   59 
 src/r128_video.c                  | 1028 --------
 src/radeon.h                      |   24 
 src/radeon_accel.c                |    8 
 src/radeon_atombios.c             |   67 
 src/radeon_chipinfo_gen.h         |    6 
 src/radeon_chipset_gen.h          |    6 
 src/radeon_commonfuncs.c          |  295 +-
 src/radeon_crtc.c                 |   35 
 src/radeon_driver.c               |  395 ++-
 src/radeon_exa.c                  |   17 
 src/radeon_exa_funcs.c            |   13 
 src/radeon_exa_render.c           |  622 ++++-
 src/radeon_misc.c                 |    6 
 src/radeon_output.c               |  449 +++
 src/radeon_pci_chipset_gen.h      |    6 
 src/radeon_pci_device_match_gen.h |  280 ++
 src/radeon_probe.c                |  215 -
 src/radeon_probe.h                |   54 
 src/radeon_reg.h                  | 1035 ++++++++
 src/radeon_textured_video.c       |  383 +++
 src/radeon_textured_videofuncs.c  |  718 ++++++
 src/radeon_video.c                |  201 +
 src/radeon_video.h                |   44 
 148 files changed, 4781 insertions(+), 42742 deletions(-)

New commits:
commit 1f6a23000001f3d1c21b5c04f94714a8caa7aa8b
Author: Alex Deucher <alex@cube.(none)>
Date:   Sat Mar 1 15:53:42 2008 -0500

    RADEON: only restore legacy dac regs on legacy radeons

diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index fccdbb4..6a168a5 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -4644,7 +4644,9 @@ void RADEONRestore(ScrnInfoPtr pScrn)
      */
     if (IS_AVIVO_VARIANT)
 	avivo_restore_vga_regs(pScrn, restore);
-    RADEONRestoreDACRegisters(pScrn, restore);
+
+    if (!IS_AVIVO_VARIANT)
+	RADEONRestoreDACRegisters(pScrn, restore);
 
 #if 0
     RADEONWaitForVerticalSync(pScrn);

commit dee6cef8e62d0651c00319e03eea92940fd24aa4
Author: Alex Deucher <alex@botch2.(none)>
Date:   Sat Mar 1 14:39:32 2008 -0500

    RS4xx: enable exa render accel and textured video
    
    RS6xx paths seem to work fine on RS4xx

diff --git a/src/radeon_exa_funcs.c b/src/radeon_exa_funcs.c
index 3d15882..8a58df2 100644
--- a/src/radeon_exa_funcs.c
+++ b/src/radeon_exa_funcs.c
@@ -533,10 +533,9 @@ Bool FUNC_NAME(RADEONDrawInit)(ScreenPtr pScreen)
 
 #ifdef RENDER
     if (info->RenderAccel) {
-	if ((info->ChipFamily >= CHIP_FAMILY_R600) ||
-	    (info->ChipFamily == CHIP_FAMILY_RS400))
+	if (info->ChipFamily >= CHIP_FAMILY_R600)
 		xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration "
-			       "unsupported on XPRESS, R500 and newer cards.\n");
+			       "unsupported on R600 and newer cards.\n");
 	else if (IS_R300_VARIANT || (IS_AVIVO_VARIANT && info->ChipFamily <= CHIP_FAMILY_RS690)) {
 		xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Render acceleration "
 			       "enabled for R300 type cards.\n");
diff --git a/src/radeon_video.c b/src/radeon_video.c
index 3cbd8f6..555186a 100644
--- a/src/radeon_video.c
+++ b/src/radeon_video.c
@@ -285,14 +285,12 @@ void RADEONInitVideo(ScreenPtr pScreen)
 	RADEONInitOffscreenImages(pScreen);
     }
 
-    if (info->ChipFamily != CHIP_FAMILY_RS400) {
-	texturedAdaptor = RADEONSetupImageTexturedVideo(pScreen);
-	if (texturedAdaptor != NULL) {
-	    adaptors[num_adaptors++] = texturedAdaptor;
-	    xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Set up textured video\n");
-	} else
-	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Failed to set up textured video\n");
-    }
+    texturedAdaptor = RADEONSetupImageTexturedVideo(pScreen);
+    if (texturedAdaptor != NULL) {
+	adaptors[num_adaptors++] = texturedAdaptor;
+	xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Set up textured video\n");
+    } else
+	xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Failed to set up textured video\n");
 
     if(num_adaptors)
 	xf86XVScreenInit(pScreen, adaptors, num_adaptors);

commit 129f737efe4e8d1a368e7db4b063bdcd9339cb09
Author: Alex Deucher <alex@cube.(none)>
Date:   Sat Mar 1 14:32:30 2008 -0500

    AVIVO: save/restore regs by block
    
    Save/Restore the entire block for each output.
    This should fix VT switch problems.

diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 1b3e800..fccdbb4 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -4158,41 +4158,50 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
     state->grph2.viewport_start = INREG(AVIVO_D2MODE_VIEWPORT_START);
     state->grph2.viewport_size = INREG(AVIVO_D2MODE_VIEWPORT_SIZE);
 
-    state->daca.enable = INREG(AVIVO_DACA_ENABLE);
-    state->daca.source_select = INREG(AVIVO_DACA_SOURCE_SELECT);
-    state->daca.force_output_cntl = INREG(AVIVO_DACA_FORCE_OUTPUT_CNTL);
-    state->daca.powerdown = INREG(AVIVO_DACA_POWERDOWN);
-
-    state->dacb.enable = INREG(AVIVO_DACB_ENABLE);
-    state->dacb.source_select = INREG(AVIVO_DACB_SOURCE_SELECT);
-    state->dacb.force_output_cntl = INREG(AVIVO_DACB_FORCE_OUTPUT_CNTL);
-    state->dacb.powerdown = INREG(AVIVO_DACB_POWERDOWN);
-
-    state->tmds1.cntl = INREG(AVIVO_TMDSA_CNTL);
-    state->tmds1.source_select = INREG(AVIVO_TMDSA_SOURCE_SELECT);
-    state->tmds1.bit_depth_cntl = INREG(AVIVO_TMDSA_BIT_DEPTH_CONTROL);
-    state->tmds1.data_sync = INREG(AVIVO_TMDSA_DATA_SYNCHRONIZATION);
-    state->tmds1.transmitter_enable = INREG(AVIVO_TMDSA_TRANSMITTER_ENABLE);
-    state->tmds1.transmitter_cntl = INREG(AVIVO_TMDSA_TRANSMITTER_CONTROL);
-
-    state->tmds2.cntl = INREG(AVIVO_LVTMA_CNTL);
-    state->tmds2.source_select = INREG(AVIVO_LVTMA_SOURCE_SELECT);
-    state->tmds2.bit_depth_cntl = INREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL);
-    state->tmds2.data_sync = INREG(AVIVO_LVTMA_DATA_SYNCHRONIZATION);
+    j = 0;
+    /* save DVOA regs */
+    for (i = 0x7980; i <= 0x79bc; i += 4) {
+	state->dvoa[j] = INREG(i);
+	j++;
+    }
 
-    if (info->ChipFamily >= CHIP_FAMILY_R600) {
-	state->tmds2.transmitter_enable = INREG(R600_LVTMA_TRANSMITTER_ENABLE);
-	state->tmds2.transmitter_cntl = INREG(R600_LVTMA_TRANSMITTER_CONTROL);
-	state->lvtma_pwrseq_cntl = INREG(R600_LVTMA_PWRSEQ_CNTL);
-	state->lvtma_pwrseq_state = INREG(R600_LVTMA_PWRSEQ_STATE);
-    } else {
-	state->tmds2.transmitter_enable = INREG(R500_LVTMA_TRANSMITTER_ENABLE);
-	state->tmds2.transmitter_cntl = INREG(R500_LVTMA_TRANSMITTER_CONTROL);
-	state->lvtma_pwrseq_cntl = INREG(R500_LVTMA_PWRSEQ_CNTL);
-	state->lvtma_pwrseq_state = INREG(R500_LVTMA_PWRSEQ_STATE);
+    j = 0;
+    /* save DAC regs */
+    for (i = 0x7800; i <= 0x782c; i += 4) {
+	state->daca[j] = INREG(i);
+	state->dacb[j] = INREG(i + 0x200);
+	j++;
+    }
+    for (i = 0x7834; i <= 0x7840; i += 4) {
+	state->daca[j] = INREG(i);
+	state->dacb[j] = INREG(i + 0x200);
+	j++;
+    }
+    for (i = 0x7850; i <= 0x7868; i += 4) {
+	state->daca[j] = INREG(i);
+	state->dacb[j] = INREG(i + 0x200);
+	j++;
     }
 
-    if (info->IsIGP) {
+    j = 0;
+    /* save TMDSA regs */
+    for (i = 0x7880; i <= 0x78e0; i += 4) {
+	state->tmdsa[j] = INREG(i);
+	j++;
+    }
+    for (i = 0x7904; i <= 0x7918; i += 4) {
+	state->tmdsa[j] = INREG(i);
+	j++;
+    }
+
+    j = 0;
+    /* save LVTMA regs */
+    for (i = 0x7a80; i <= 0x7b18; i += 4) {
+	state->lvtma[j] = INREG(i);
+	j++;
+    }
+
+    if (info->ChipFamily == CHIP_FAMILY_RS690) {
 	j = 0;
 	/* save DDIA regs */
 	for (i = 0x7200; i <= 0x7290; i += 4) {
@@ -4339,42 +4348,52 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
     OUTREG(AVIVO_D2MODE_VIEWPORT_START, state->grph2.viewport_start);
     OUTREG(AVIVO_D2MODE_VIEWPORT_SIZE, state->grph2.viewport_size);
 
-    OUTREG(AVIVO_DACA_ENABLE, state->daca.enable);
-    OUTREG(AVIVO_DACA_SOURCE_SELECT, state->daca.source_select);
-    OUTREG(AVIVO_DACA_FORCE_OUTPUT_CNTL, state->daca.force_output_cntl);
-    OUTREG(AVIVO_DACA_POWERDOWN, state->daca.powerdown);
-
-    OUTREG(AVIVO_TMDSA_CNTL, state->tmds1.cntl);
-    OUTREG(AVIVO_TMDSA_BIT_DEPTH_CONTROL, state->tmds1.bit_depth_cntl);
-    OUTREG(AVIVO_TMDSA_DATA_SYNCHRONIZATION, state->tmds1.data_sync);
-    OUTREG(AVIVO_TMDSA_TRANSMITTER_ENABLE, state->tmds1.transmitter_enable);
-    OUTREG(AVIVO_TMDSA_TRANSMITTER_CONTROL, state->tmds1.transmitter_cntl);
-    OUTREG(AVIVO_TMDSA_SOURCE_SELECT, state->tmds1.source_select);
+    j = 0;
+    /* DVOA regs */
+    for (i = 0x7980; i <= 0x79bc; i += 4) {
+	OUTREG(i, state->dvoa[j]);
+	j++;
+    }
 
-    OUTREG(AVIVO_DACB_ENABLE, state->dacb.enable);
-    OUTREG(AVIVO_DACB_SOURCE_SELECT, state->dacb.source_select);
-    OUTREG(AVIVO_DACB_FORCE_OUTPUT_CNTL, state->dacb.force_output_cntl);
-    OUTREG(AVIVO_DACB_POWERDOWN, state->dacb.powerdown);
+    j = 0;
+    /* DAC regs */
+    for (i = 0x7800; i <= 0x782c; i += 4) {
+	OUTREG(i, state->daca[j]);
+	OUTREG((i + 0x200), state->dacb[j]);
+	j++;
+    }
+    for (i = 0x7834; i <= 0x7840; i += 4) {
+	OUTREG(i, state->daca[j]);
+	OUTREG((i + 0x200), state->dacb[j]);
+	j++;
+    }
+    for (i = 0x7850; i <= 0x7868; i += 4) {
+	OUTREG(i, state->daca[j]);
+	OUTREG((i + 0x200), state->dacb[j]);
+	j++;
+    }
 
-    OUTREG(AVIVO_LVTMA_CNTL, state->tmds2.cntl);
-    OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, state->tmds2.bit_depth_cntl);
-    OUTREG(AVIVO_LVTMA_DATA_SYNCHRONIZATION, state->tmds2.data_sync);
-    OUTREG(AVIVO_LVTMA_SOURCE_SELECT, state->tmds2.source_select);
+    j = 0;
+    /* TMDSA regs */
+    for (i = 0x7880; i <= 0x78e0; i += 4) {
+	OUTREG(i, state->tmdsa[j]);
+	j++;
+    }
+    for (i = 0x7904; i <= 0x7918; i += 4) {
+	OUTREG(i, state->tmdsa[j]);
+	j++;
+    }
 
-    if (info->ChipFamily >= CHIP_FAMILY_R600) {
-	OUTREG(R600_LVTMA_TRANSMITTER_ENABLE, state->tmds2.transmitter_enable);
-	OUTREG(R600_LVTMA_TRANSMITTER_CONTROL, state->tmds2.transmitter_cntl);
-	OUTREG(R600_LVTMA_PWRSEQ_CNTL, state->lvtma_pwrseq_cntl);
-	OUTREG(R600_LVTMA_PWRSEQ_STATE, state->lvtma_pwrseq_state);
-    } else {
-	OUTREG(R500_LVTMA_TRANSMITTER_ENABLE, state->tmds2.transmitter_enable);
-	OUTREG(R500_LVTMA_TRANSMITTER_CONTROL, state->tmds2.transmitter_cntl);
-	OUTREG(R500_LVTMA_PWRSEQ_CNTL, state->lvtma_pwrseq_cntl);
-	OUTREG(R500_LVTMA_PWRSEQ_STATE, state->lvtma_pwrseq_state);
+    j = 0;
+    /* LVTMA regs */
+    for (i = 0x7a80; i <= 0x7b18; i += 4) {
+	OUTREG(i, state->lvtma[j]);
+	j++;
     }
 
-    if (info->IsIGP) {
-	int i, j = 0;
+    /* DDIA regs */
+    if (info->ChipFamily == CHIP_FAMILY_RS690) {
+	j = 0;
 	for (i = 0x7200; i <= 0x7290; i += 4) {
 	    OUTREG(i, state->ddia[j]);
 	    j++;
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index 909a5da..c399cc2 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -312,22 +312,6 @@ struct avivo_grph_state {
     CARD32 viewport_size;
 };
 
-struct avivo_dac_state {
-    CARD32 enable;
-    CARD32 source_select;
-    CARD32 force_output_cntl;
-    CARD32 powerdown;
-};
-
-struct avivo_dig_state {
-    CARD32 cntl;
-    CARD32 bit_depth_cntl;
-    CARD32 data_sync;
-    CARD32 transmitter_enable;
-    CARD32 transmitter_cntl;
-    CARD32 source_select;
-};
-
 struct avivo_state
 {
     CARD32 hdp_fb_location;
@@ -341,9 +325,6 @@ struct avivo_state
     CARD32 crtc_master_en;
     CARD32 crtc_tv_control;
 
-    CARD32 lvtma_pwrseq_cntl;
-    CARD32 lvtma_pwrseq_state;
-
     struct avivo_pll_state pll1;
     struct avivo_pll_state pll2;
 
@@ -353,12 +334,6 @@ struct avivo_state
     struct avivo_grph_state grph1;
     struct avivo_grph_state grph2;
 
-    struct avivo_dac_state daca;
-    struct avivo_dac_state dacb;
-
-    struct avivo_dig_state tmds1;
-    struct avivo_dig_state tmds2;
-
     /* DDIA block on RS6xx chips */
     CARD32 ddia[37];
 
@@ -367,6 +342,19 @@ struct avivo_state
     CARD32 d2scl[40];
     CARD32 dxscl[6+2];
 
+    /* dac regs */
+    CARD32 daca[23];
+    CARD32 dacb[23];
+
+    /* tmdsa */
+    CARD32 tmdsa[31];
+
+    /* lvtma */
+    CARD32 lvtma[39];
+
+    /* dvoa */
+    CARD32 dvoa[16];
+
 };
 
 /*

commit b069aadaa63a95d7a71b5cfbab83577b49501094
Author: Alex Deucher <alex@botch2.(none)>
Date:   Fri Feb 29 22:36:02 2008 -0500

    AVIVO: LVDS panels need dithering enabled
    
    Fixes bug 14760

diff --git a/src/atombios_output.c b/src/atombios_output.c
index 3b49cde..fb3cb3e 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -385,7 +385,6 @@ atombios_output_scaler_setup(xf86OutputPtr output, DisplayModePtr mode)
 static void
 dfp_disable_dither(xf86OutputPtr output, int device)
 {
-    RADEONOutputPrivatePtr radeon_output = output->driver_private;
     RADEONInfoPtr info       = RADEONPTR(output->scrn);
     unsigned char *RADEONMMIO = info->MMIO;
 
@@ -399,7 +398,7 @@ dfp_disable_dither(xf86OutputPtr output, int device)
 	else
 	    OUTREG(AVIVO_DVOA_BIT_DEPTH_CONTROL, 0); /* DVO */
 	break;
-    case ATOM_DEVICE_LCD1_SUPPORT:
+    /*case ATOM_DEVICE_LCD1_SUPPORT:*/ /* LVDS panels need dither enabled */
     case ATOM_DEVICE_DFP3_SUPPORT:
 	OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, 0); /* LVTMA */
 	break;

commit fe87bdee815372b4b4d7d4c705e34681625b90f2
Author: Alex Deucher <alex@botch2.(none)>
Date:   Fri Feb 29 13:10:13 2008 -0500

    AVIVO: disable pageflipping on avivo chips until we have proper drm support

diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index c38e39b..1b3e800 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -2163,7 +2163,14 @@ static Bool RADEONPreInitDRI(ScrnInfoPtr pScrn)
     } else {
 	from = xf86GetOptValBool(info->Options, OPTION_PAGE_FLIP,
 				 &info->allowPageFlip) ? X_CONFIG : X_DEFAULT;
-	reason = "";
+
+	if (IS_AVIVO_VARIANT) {
+	    info->allowPageFlip = 0;
+	    reason = " on r5xx and newer chips.\n";
+	} else {
+	    reason = "";
+	}
+
     }
 #else
     from = X_DEFAULT;

commit fb3678c7f511d539a51cd090cb8b5041d7d2ba26
Author: Alex Deucher <alex@botch2.(none)>
Date:   Fri Feb 29 13:01:21 2008 -0500

    R5xx: fix register count when sending fragment program for textured video

diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c
index a0bb828..9a5187b 100644
--- a/src/radeon_textured_videofuncs.c
+++ b/src/radeon_textured_videofuncs.c
@@ -378,7 +378,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
 			   R300_ALU_ALPHA_OMOD(R300_ALU_ALPHA_OMOD_NONE)));
 	    FINISH_VIDEO();
 	} else {
-	    BEGIN_VIDEO(22);
+	    BEGIN_VIDEO(23);
 	    OUT_VIDEO_REG(R300_RS_COUNT,
 			  ((2 << R300_RS_COUNT_IT_COUNT_SHIFT) |
 			   R300_RS_COUNT_HIRES_EN));

commit a66d37d1a896ec934989592457c2beff8e6f1639
Author: Alex Deucher <alex@botch2.(none)>
Date:   Fri Feb 29 04:07:05 2008 -0500

    fix off-by-one in last commit

diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index 21e3439..909a5da 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -363,8 +363,8 @@ struct avivo_state
     CARD32 ddia[37];
 
     /* scalers */
-    CARD32 d1scl[39];
-    CARD32 d2scl[39];
+    CARD32 d1scl[40];
+    CARD32 d2scl[40];
     CARD32 dxscl[6+2];
 
 };

commit e56062960be0c8d3947861dd5e0691fce6516b99
Author: Alex Deucher <alex@cube.(none)>
Date:   Thu Feb 28 19:16:39 2008 -0500

    AVIVO: save/restore scaler regs

diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 10b0b8c..c38e39b 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -4045,6 +4045,7 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
     RADEONInfoPtr info = RADEONPTR(pScrn);
     unsigned char *RADEONMMIO = info->MMIO;
     struct avivo_state *state = &save->avivo;
+    int i, j;
 
     //    state->vga_memory_base = INREG(AVIVO_VGA_MEMORY_BASE);
     //    state->vga_fb_start = INREG(AVIVO_VGA_FB_START);
@@ -4110,8 +4111,6 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
 
     state->grph1.viewport_start = INREG(AVIVO_D1MODE_VIEWPORT_START);
     state->grph1.viewport_size = INREG(AVIVO_D1MODE_VIEWPORT_SIZE);
-    state->grph1.scl_enable = INREG(AVIVO_D1SCL_SCALER_ENABLE);
-    state->grph1.scl_tap_control = INREG(AVIVO_D1SCL_SCALER_TAP_CONTROL);
 
     state->crtc2.pll_source = INREG(AVIVO_PCLK_CRTC2_CNTL);
 
@@ -4151,8 +4150,6 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
 
     state->grph2.viewport_start = INREG(AVIVO_D2MODE_VIEWPORT_START);
     state->grph2.viewport_size = INREG(AVIVO_D2MODE_VIEWPORT_SIZE);
-    state->grph2.scl_enable = INREG(AVIVO_D2SCL_SCALER_ENABLE);
-    state->grph2.scl_tap_control = INREG(AVIVO_D2SCL_SCALER_TAP_CONTROL);
 
     state->daca.enable = INREG(AVIVO_DACA_ENABLE);
     state->daca.source_select = INREG(AVIVO_DACA_SOURCE_SELECT);
@@ -4189,7 +4186,7 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
     }
 
     if (info->IsIGP) {
-	int i, j = 0;
+	j = 0;
 	/* save DDIA regs */
 	for (i = 0x7200; i <= 0x7290; i += 4) {
 	    state->ddia[j] = INREG(i);
@@ -4197,6 +4194,26 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
 	}
     }
 
+    /* scalers */
+    j = 0;
+    for (i = 0x6578; i <= 0x65e4; i += 4) {
+	state->d1scl[j] = INREG(i);
+	state->d2scl[j] = INREG(i + 0x800);
+	j++;
+    }
+    for (i = 0x6600; i <= 0x662c; i += 4) {
+	state->d1scl[j] = INREG(i);
+	state->d2scl[j] = INREG(i + 0x800);
+	j++;
+    }
+    j = 0;
+    for (i = 0x66e8; i <= 0x66fc; i += 4) {
+	state->dxscl[j] = INREG(i);
+	j++;
+    }
+    state->dxscl[6] = INREG(0x6e30);
+    state->dxscl[7] = INREG(0x6e34);
+
     if (state->crtc1.control & AVIVO_CRTC_EN)
 	info->crtc_on = TRUE;
 
@@ -4211,6 +4228,7 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
     RADEONInfoPtr info = RADEONPTR(pScrn);
     unsigned char *RADEONMMIO = info->MMIO;
     struct avivo_state *state = &restore->avivo;
+    int i, j;
 
     //    OUTMC(pScrn, AVIVO_MC_MEMORY_MAP, state->mc_memory_map);
     //    OUTREG(AVIVO_VGA_MEMORY_BASE, state->vga_memory_base);
@@ -4275,8 +4293,6 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
 
     OUTREG(AVIVO_D1MODE_VIEWPORT_START, state->grph1.viewport_start);
     OUTREG(AVIVO_D1MODE_VIEWPORT_SIZE, state->grph1.viewport_size);
-    OUTREG(AVIVO_D1SCL_SCALER_ENABLE, state->grph1.scl_enable);
-    OUTREG(AVIVO_D1SCL_SCALER_TAP_CONTROL, state->grph1.scl_tap_control);
 
     OUTREG(AVIVO_PCLK_CRTC2_CNTL, state->crtc2.pll_source);
 
@@ -4315,8 +4331,6 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
 
     OUTREG(AVIVO_D2MODE_VIEWPORT_START, state->grph2.viewport_start);
     OUTREG(AVIVO_D2MODE_VIEWPORT_SIZE, state->grph2.viewport_size);
-    OUTREG(AVIVO_D2SCL_SCALER_ENABLE, state->grph2.scl_enable);
-    OUTREG(AVIVO_D2SCL_SCALER_TAP_CONTROL, state->grph2.scl_tap_control);
 
     OUTREG(AVIVO_DACA_ENABLE, state->daca.enable);
     OUTREG(AVIVO_DACA_SOURCE_SELECT, state->daca.source_select);
@@ -4341,15 +4355,15 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
     OUTREG(AVIVO_LVTMA_SOURCE_SELECT, state->tmds2.source_select);
 
     if (info->ChipFamily >= CHIP_FAMILY_R600) {
-        OUTREG(R600_LVTMA_TRANSMITTER_ENABLE, state->tmds2.transmitter_enable);
-        OUTREG(R600_LVTMA_TRANSMITTER_CONTROL, state->tmds2.transmitter_cntl);
-        OUTREG(R600_LVTMA_PWRSEQ_CNTL, state->lvtma_pwrseq_cntl);
-        OUTREG(R600_LVTMA_PWRSEQ_STATE, state->lvtma_pwrseq_state);
+	OUTREG(R600_LVTMA_TRANSMITTER_ENABLE, state->tmds2.transmitter_enable);
+	OUTREG(R600_LVTMA_TRANSMITTER_CONTROL, state->tmds2.transmitter_cntl);
+	OUTREG(R600_LVTMA_PWRSEQ_CNTL, state->lvtma_pwrseq_cntl);
+	OUTREG(R600_LVTMA_PWRSEQ_STATE, state->lvtma_pwrseq_state);
     } else {
-        OUTREG(R500_LVTMA_TRANSMITTER_ENABLE, state->tmds2.transmitter_enable);
-        OUTREG(R500_LVTMA_TRANSMITTER_CONTROL, state->tmds2.transmitter_cntl);
-        OUTREG(R500_LVTMA_PWRSEQ_CNTL, state->lvtma_pwrseq_cntl);
-        OUTREG(R500_LVTMA_PWRSEQ_STATE, state->lvtma_pwrseq_state);
+	OUTREG(R500_LVTMA_TRANSMITTER_ENABLE, state->tmds2.transmitter_enable);
+	OUTREG(R500_LVTMA_TRANSMITTER_CONTROL, state->tmds2.transmitter_cntl);
+	OUTREG(R500_LVTMA_PWRSEQ_CNTL, state->lvtma_pwrseq_cntl);
+	OUTREG(R500_LVTMA_PWRSEQ_STATE, state->lvtma_pwrseq_state);
     }
 
     if (info->IsIGP) {
@@ -4360,6 +4374,26 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
 	}
     }
 
+    /* scalers */
+    j = 0;
+    for (i = 0x6578; i <= 0x65e4; i += 4) {
+	OUTREG(i, state->d1scl[j]);
+	OUTREG((i + 0x800), state->d2scl[j]);
+	j++;
+    }
+    for (i = 0x6600; i <= 0x662c; i += 4) {
+	OUTREG(i, state->d1scl[j]);
+	OUTREG((i + 0x800), state->d2scl[j]);
+	j++;
+    }
+    j = 0;
+    for (i = 0x66e8; i <= 0x66fc; i += 4) {
+	OUTREG(i, state->dxscl[j]);
+	j++;
+    }
+    OUTREG(0x6e30, state->dxscl[6]);
+    OUTREG(0x6e34, state->dxscl[7]);
+
     OUTREG(AVIVO_D1VGA_CONTROL, state->vga1_cntl);
     OUTREG(AVIVO_D2VGA_CONTROL, state->vga2_cntl);
 }
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index 82bb153..21e3439 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -310,8 +310,6 @@ struct avivo_grph_state {
 
     CARD32 viewport_start;
     CARD32 viewport_size;
-    CARD32 scl_enable;
-    CARD32 scl_tap_control;
 };
 
 struct avivo_dac_state {
@@ -363,6 +361,12 @@ struct avivo_state
 
     /* DDIA block on RS6xx chips */
     CARD32 ddia[37];
+
+    /* scalers */
+    CARD32 d1scl[39];
+    CARD32 d2scl[39];
+    CARD32 dxscl[6+2];
+
 };
 
 /*

commit ae1c39a9b3e666404d0931679c9078c2e125a8bc
Author: Alex Deucher <alex@cube.(none)>
Date:   Thu Feb 28 18:53:55 2008 -0500

    RS6xx: rework output parsing
    
    Turns out it's not as complex as I originially thought.
    IGP chips just have non-standard GPIO entires for DDC.

diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index 88c220b..351939e 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -1745,12 +1745,7 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
 
 	info->BiosConnector[i].valid = TRUE;
 	info->BiosConnector[i].output_id = ci.sucI2cId.sbfAccess.bfI2C_LineMux;
-	if (info->IsIGP && (i == ATOM_DEVICE_DFP2_INDEX))
-	    info->BiosConnector[i].devices = (1 << ATOM_DEVICE_DFP3_INDEX);
-	else if (info->IsIGP && (i == ATOM_DEVICE_DFP3_INDEX))
-	    info->BiosConnector[i].devices = (1 << ATOM_DEVICE_DFP2_INDEX);
-	else
-	    info->BiosConnector[i].devices = (1 << i);
+	info->BiosConnector[i].devices = (1 << i);
 	info->BiosConnector[i].ConnectorType = ci.sucConnectorInfo.sbfAccess.bfConnectorType;
 	info->BiosConnector[i].DACType = ci.sucConnectorInfo.sbfAccess.bfAssociatedDAC;
 
@@ -1759,14 +1754,14 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
 	    (i == ATOM_DEVICE_TV2_INDEX) ||
 	    (i == ATOM_DEVICE_CV_INDEX))
 	    info->BiosConnector[i].ddc_i2c.valid = FALSE;
-	else if ((i == ATOM_DEVICE_DFP3_INDEX) && info->IsIGP) {
-	    /* DDIA port uses non-standard gpio entry */
-	    if (info->BiosConnector[ATOM_DEVICE_DFP2_INDEX].valid)
+	else if (info->IsIGP) {
+	    /* IGP DFP ports use non-standard gpio entries */
+	    if ((i == ATOM_DEVICE_DFP2_INDEX) || (i == ATOM_DEVICE_DFP3_INDEX))
 		info->BiosConnector[i].ddc_i2c =
-		    RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux + 2);
+		    RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux + 1);
 	    else
 		info->BiosConnector[i].ddc_i2c =
-		    RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux + 1);
+		    RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux);
 	} else
 	    info->BiosConnector[i].ddc_i2c =
 		RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux);
@@ -1775,15 +1770,12 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
 	    info->BiosConnector[i].TMDSType = TMDS_INT;
 	else if (i == ATOM_DEVICE_DFP2_INDEX) {
 	    if (info->IsIGP)
-		info->BiosConnector[i].TMDSType = TMDS_LVTMA;
-	    else
-		info->BiosConnector[i].TMDSType = TMDS_EXT;
-	} else if (i == ATOM_DEVICE_DFP3_INDEX) {
-	    if (info->IsIGP)
 		info->BiosConnector[i].TMDSType = TMDS_DDIA;
 	    else
-		info->BiosConnector[i].TMDSType = TMDS_LVTMA;
-	} else
+		info->BiosConnector[i].TMDSType = TMDS_EXT;
+	} else if (i == ATOM_DEVICE_DFP3_INDEX)
+	    info->BiosConnector[i].TMDSType = TMDS_LVTMA;
+	else
 	    info->BiosConnector[i].TMDSType = TMDS_NONE;
 
 	/* Always set the connector type to VGA for CRT1/CRT2. if they are

commit d8d6c9fe4ae7e1ab67dd041a251e901d97c29ed6
Author: Alex Deucher <alex@botch2.(none)>
Date:   Thu Feb 28 17:01:14 2008 -0500

    RS6xx: fix typos in previous commit
    
    Noted by Maciej Cencora on IRC

diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index e9c24af..10b0b8c 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -4354,7 +4354,7 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
 
     if (info->IsIGP) {
 	int i, j = 0;
-	for (i = 0x7200; i <= 0x7290; i =+ 4) {
+	for (i = 0x7200; i <= 0x7290; i += 4) {
 	    OUTREG(i, state->ddia[j]);
 	    j++;
 	}
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index d11f3d9..82bb153 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -362,7 +362,7 @@ struct avivo_state
     struct avivo_dig_state tmds2;
 
     /* DDIA block on RS6xx chips */
-    CARD32 ddia[36];
+    CARD32 ddia[37];
 };
 
 /*

commit 46547ae8bdbc5c10f1fd028b95ec4c5c31a5b318
Author: Alex Deucher <alex@cube.(none)>
Date:   Thu Feb 28 14:29:30 2008 -0500

    AVIVO: disable dithering on DFPs
    
    This should fix the color banding some people have noticed.
    Also save/restore DDIA regs on RS6xx

diff --git a/src/atombios_output.c b/src/atombios_output.c
index 07d212f..3b49cde 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -382,6 +382,33 @@ atombios_output_scaler_setup(xf86OutputPtr output, DisplayModePtr mode)
 
 }
 
+static void
+dfp_disable_dither(xf86OutputPtr output, int device)
+{
+    RADEONOutputPrivatePtr radeon_output = output->driver_private;
+    RADEONInfoPtr info       = RADEONPTR(output->scrn);
+    unsigned char *RADEONMMIO = info->MMIO;
+
+    switch (device) {
+    case ATOM_DEVICE_DFP1_SUPPORT:
+	OUTREG(AVIVO_TMDSA_BIT_DEPTH_CONTROL, 0); /* TMDSA */
+	break;
+    case ATOM_DEVICE_DFP2_SUPPORT:
+	if (info->IsIGP)
+	    OUTREG(AVIVO_DDIA_BIT_DEPTH_CONTROL, 0); /* DDIA */
+	else
+	    OUTREG(AVIVO_DVOA_BIT_DEPTH_CONTROL, 0); /* DVO */
+	break;
+    case ATOM_DEVICE_LCD1_SUPPORT:
+    case ATOM_DEVICE_DFP3_SUPPORT:
+	OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, 0); /* LVTMA */
+	break;
+    default:
+	break;
+    }
+
+}
+
 static AtomBiosResult
 atombios_display_device_control(atomBiosHandlePtr atomBIOS, int device, Bool state)
 {
@@ -579,19 +606,27 @@ atombios_output_mode_set(xf86OutputPtr output,
 	       atombios_output_dac2_setup(output, adjusted_mode);
        }
     } else if (radeon_output->MonType == MT_DFP) {
-       if (radeon_output->devices & ATOM_DEVICE_DFP1_SUPPORT)
-	   atombios_output_tmds1_setup(output, adjusted_mode);
-       else if (radeon_output->devices & ATOM_DEVICE_DFP2_SUPPORT) {
-	   if (info->IsIGP)
-	       atombios_ddia_setup(output, adjusted_mode);
-	   else
-	       atombios_external_tmds_setup(output, adjusted_mode);
-       } else if (radeon_output->devices & ATOM_DEVICE_DFP3_SUPPORT)
-	   atombios_output_tmds2_setup(output, adjusted_mode);
+	if (radeon_output->devices & ATOM_DEVICE_DFP1_SUPPORT) {
+	    atombios_output_tmds1_setup(output, adjusted_mode);
+	    dfp_disable_dither(output, ATOM_DEVICE_DFP1_SUPPORT);
+	} else if (radeon_output->devices & ATOM_DEVICE_DFP2_SUPPORT) {
+	    if (info->IsIGP)
+		atombios_ddia_setup(output, adjusted_mode);
+	    else
+		atombios_external_tmds_setup(output, adjusted_mode);
+	    dfp_disable_dither(output, ATOM_DEVICE_DFP2_SUPPORT);
+	} else if (radeon_output->devices & ATOM_DEVICE_DFP3_SUPPORT) {
+	    atombios_output_tmds2_setup(output, adjusted_mode);
+	    dfp_disable_dither(output, ATOM_DEVICE_DFP3_SUPPORT);
+	}
     } else if (radeon_output->MonType == MT_LCD) {
-	if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT)
+	if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT) {
 	    atombios_output_lvds_setup(output, adjusted_mode);
-    } else if (OUTPUT_IS_TV || (radeon_output->MonType == MT_CV)) {
+	    dfp_disable_dither(output, ATOM_DEVICE_LCD1_SUPPORT);
+	}
+    } else if ((radeon_output->MonType == MT_CTV) ||
+	       (radeon_output->MonType == MT_STV) ||
+	       (radeon_output->MonType == MT_CV)) {
 	if (radeon_output->DACType == DAC_PRIMARY)
 	    atombios_output_dac1_setup(output, adjusted_mode);
 	else if (radeon_output->DACType == DAC_TVDAC)
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 5cf8d51..e9c24af 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -4177,20 +4177,29 @@ avivo_save(ScrnInfoPtr pScrn, RADEONSavePtr save)
     state->tmds2.data_sync = INREG(AVIVO_LVTMA_DATA_SYNCHRONIZATION);
 
     if (info->ChipFamily >= CHIP_FAMILY_R600) {
-        state->tmds2.transmitter_enable = INREG(R600_LVTMA_TRANSMITTER_ENABLE);
-        state->tmds2.transmitter_cntl = INREG(R600_LVTMA_TRANSMITTER_CONTROL);
-        state->lvtma_pwrseq_cntl = INREG(R600_LVTMA_PWRSEQ_CNTL);
-        state->lvtma_pwrseq_state = INREG(R600_LVTMA_PWRSEQ_STATE);
+	state->tmds2.transmitter_enable = INREG(R600_LVTMA_TRANSMITTER_ENABLE);
+	state->tmds2.transmitter_cntl = INREG(R600_LVTMA_TRANSMITTER_CONTROL);
+	state->lvtma_pwrseq_cntl = INREG(R600_LVTMA_PWRSEQ_CNTL);
+	state->lvtma_pwrseq_state = INREG(R600_LVTMA_PWRSEQ_STATE);
     } else {
-        state->tmds2.transmitter_enable = INREG(R500_LVTMA_TRANSMITTER_ENABLE);
-        state->tmds2.transmitter_cntl = INREG(R500_LVTMA_TRANSMITTER_CONTROL);
-        state->lvtma_pwrseq_cntl = INREG(R500_LVTMA_PWRSEQ_CNTL);
-        state->lvtma_pwrseq_state = INREG(R500_LVTMA_PWRSEQ_STATE);
+	state->tmds2.transmitter_enable = INREG(R500_LVTMA_TRANSMITTER_ENABLE);
+	state->tmds2.transmitter_cntl = INREG(R500_LVTMA_TRANSMITTER_CONTROL);
+	state->lvtma_pwrseq_cntl = INREG(R500_LVTMA_PWRSEQ_CNTL);
+	state->lvtma_pwrseq_state = INREG(R500_LVTMA_PWRSEQ_STATE);
+    }
+
+    if (info->IsIGP) {
+	int i, j = 0;
+	/* save DDIA regs */
+	for (i = 0x7200; i <= 0x7290; i += 4) {
+	    state->ddia[j] = INREG(i);
+	    j++;
+	}
     }
 
     if (state->crtc1.control & AVIVO_CRTC_EN)
 	info->crtc_on = TRUE;
-    
+
     if (state->crtc2.control & AVIVO_CRTC_EN)
 	info->crtc2_on = TRUE;
 
@@ -4343,12 +4352,20 @@ avivo_restore(ScrnInfoPtr pScrn, RADEONSavePtr restore)
         OUTREG(R500_LVTMA_PWRSEQ_STATE, state->lvtma_pwrseq_state);
     }
 
+    if (info->IsIGP) {
+	int i, j = 0;
+	for (i = 0x7200; i <= 0x7290; i =+ 4) {
+	    OUTREG(i, state->ddia[j]);
+	    j++;
+	}
+    }
+
     OUTREG(AVIVO_D1VGA_CONTROL, state->vga1_cntl);
     OUTREG(AVIVO_D2VGA_CONTROL, state->vga2_cntl);
 }
 
 void avivo_restore_vga_regs(ScrnInfoPtr pScrn, RADEONSavePtr restore)
-{    


Reply to: