xf86-video-intel: Branch 'modesetting' - 3 commits - src/i810_reg.h src/i830_display.c src/i830_driver.c src/i830_lvds.c src/i830_sdvo.c

Keith Packard keithp at kemper.freedesktop.org
Thu Nov 2 23:45:59 EET 2006


 src/i810_reg.h     |    3 +++
 src/i830_display.c |   10 ++++++++++
 src/i830_driver.c  |    4 ++++
 src/i830_lvds.c    |    2 --
 src/i830_sdvo.c    |    2 +-
 5 files changed, 18 insertions(+), 3 deletions(-)

New commits:
diff-tree 2c9ab6e0594769274f2dbcdf7c00fe297fc385d5 (from 56f6d4f1bb67f447500af3f4f7fa557c3e887baa)
Author: Keith Packard <keithp at mandolin.keithp.com>
Date:   Thu Nov 2 13:44:55 2006 -0800

    set the v_sync_off_high to zero. XXX should check docs

diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c
index eda2857..da61159 100644
--- a/src/i830_sdvo.c
+++ b/src/i830_sdvo.c
@@ -553,7 +553,7 @@ i830_sdvo_pre_set_mode(ScrnInfoPtr pScrn
     output_dtd.part2.sync_off_width_high = 0;
     output_dtd.part2.dtd_flags = 0x18;
     output_dtd.part2.sdvo_flags = 0;
-    output_dtd.part2.v_sync_off_width = 0;
+    output_dtd.part2.v_sync_off_high = 0;
     output_dtd.part2.reserved = 0;
     if (mode->Flags & V_PHSYNC)
 	output_dtd.part2.dtd_flags |= 0x2;
diff-tree 56f6d4f1bb67f447500af3f4f7fa557c3e887baa (from f22d9bcc25aea19ba38d35282367b591fd1b7ca0)
Author: Keith Packard <keithp at mandolin.keithp.com>
Date:   Thu Nov 2 13:42:17 2006 -0800

    Disable the panel fitter when not using it. Cleans up SDVO DVI output.
    
    The panel fitter appears to exist on the 965 hardware (at least) and
    causes troubles with DVI output over SDVO when enabled. This patch
    checks to see if the panel fitter is pointing at the pipe being configured
    and disables it unconditionally in that case. The LVDS driver will configure
    it correctly if necessary afterwards.

diff --git a/src/i830_display.c b/src/i830_display.c
index b3019f8..4716e86 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -607,6 +607,16 @@ i830PipeSetMode(ScrnInfoPtr pScrn, Displ
 	    pI830->output[i].post_set_mode(pScrn, &pI830->output[i], pMode);
     }
 
+    /*
+     * If the panel fitter is stuck on our pipe, turn it off
+     * the LVDS output will whack it correctly if it needs it
+     */
+    if (((INREG(PFIT_CONTROL) >> 29) & 0x3) == pipe)
+	OUTREG(PFIT_CONTROL, 0);
+	   
+    OUTREG(PFIT_PGM_RATIOS, 0x10001000);
+    OUTREG(DSPARB, (47 << 0) | (95 << 7));
+    
     OUTREG(htot_reg, htot);
     OUTREG(hblank_reg, hblank);
     OUTREG(hsync_reg, hsync);
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 779037b..4fb8ac2 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -2308,6 +2308,8 @@ SaveHWState(ScrnInfoPtr pScrn)
    pI830->saveSWF[15] = INREG(SWF31);
    pI830->saveSWF[16] = INREG(SWF32);
 
+   pI830->savePFIT_CONTROL = INREG(PFIT_CONTROL);
+
    for (i = 0; i < pI830->num_outputs; i++) {
       if (pI830->output[i].save != NULL)
 	 pI830->output[i].save(pScrn, &pI830->output[i]);
@@ -2426,6 +2428,8 @@ RestoreHWState(ScrnInfoPtr pScrn)
    OUTREG(SWF31, pI830->saveSWF[15]);
    OUTREG(SWF32, pI830->saveSWF[16]);
 
+   OUTREG(PFIT_CONTROL, pI830->savePFIT_CONTROL);
+
    i830CompareRegsToSnapshot(pScrn);
 
    return TRUE;
diff --git a/src/i830_lvds.c b/src/i830_lvds.c
index 7b9fe63..ea45420 100644
--- a/src/i830_lvds.c
+++ b/src/i830_lvds.c
@@ -86,7 +86,6 @@ i830_lvds_save(ScrnInfoPtr pScrn, I830Ou
 {
     I830Ptr pI830 = I830PTR(pScrn);
 
-    pI830->savePFIT_CONTROL = INREG(PFIT_CONTROL);
     pI830->savePP_ON = INREG(LVDSPP_ON);
     pI830->savePP_OFF = INREG(LVDSPP_OFF);
     pI830->saveLVDS = INREG(LVDS);
@@ -115,7 +114,6 @@ i830_lvds_restore(ScrnInfoPtr pScrn, I83
     OUTREG(LVDSPP_ON, pI830->savePP_ON);
     OUTREG(LVDSPP_OFF, pI830->savePP_OFF);
     OUTREG(PP_CYCLE, pI830->savePP_CYCLE);
-    OUTREG(PFIT_CONTROL, pI830->savePFIT_CONTROL);
     OUTREG(LVDS, pI830->saveLVDS);
     OUTREG(PP_CONTROL, pI830->savePP_CONTROL);
     if (pI830->savePP_CONTROL & POWER_TARGET_ON)
diff-tree f22d9bcc25aea19ba38d35282367b591fd1b7ca0 (from a9eac38bcdb49df2ce1122b49bd8b1eb19e8cae5)
Author: Keith Packard <keithp at mandolin.keithp.com>
Date:   Thu Nov 2 13:34:45 2006 -0800

    Add another couple of new registers

diff --git a/src/i810_reg.h b/src/i810_reg.h
index d6f7147..e126904 100644
--- a/src/i810_reg.h
+++ b/src/i810_reg.h
@@ -1652,6 +1652,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
 #define DSPBADDR		DSPBBASE
 #define DSPBSTRIDE		0x71188
 
+#define DSPAKEYVAL		0x70194
+#define DSPAKEYMASK		0x70198
+
 #define DSPAPOS			0x7018C /* reserved */
 #define DSPASIZE		0x70190
 #define DSPBPOS			0x7118C



More information about the xorg-commit mailing list