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