xf86-video-intel: Branch 'xf86-video-intel-2.4-branch' - 3 commits - src/common.h src/i830_display.c src/i830_dri.c src/i830_driver.c src/i830_sdvo.c src/i830_sdvo_regs.h

Zhenyu Wang zhen at kemper.freedesktop.org
Thu Jul 31 18:59:26 PDT 2008


 src/common.h         |    2 ++
 src/i830_display.c   |    3 ++-
 src/i830_dri.c       |    2 +-
 src/i830_driver.c    |    8 +++++---
 src/i830_sdvo.c      |    9 ++++++++-
 src/i830_sdvo_regs.h |    2 --
 6 files changed, 18 insertions(+), 8 deletions(-)

New commits:
commit dbb288d55a071a44eed1c9e21f5f835f416327be
Author: Zhenyu Wang <zhenyu.z.wang at intel.com>
Date:   Thu Jul 31 16:59:43 2008 +0800

    Fix SDVO reg definition
    
    Remove wrong set tv resolution command, adding HDMI regs in dump.
    (cherry picked from commit 76eb8e6f1f0c6962b23550564f4273f392567857)

diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c
index d9b76d4..701aeaa 100644
--- a/src/i830_sdvo.c
+++ b/src/i830_sdvo.c
@@ -228,23 +228,30 @@ const static struct _sdvo_cmd_name {
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_POWER_STATES),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ENCODER_POWER_STATE),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODER_POWER_STATE),
-    SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_RESOLUTION_SUPPORT),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CONTROL_BUS_SWITCH),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS),
     /* HDMI op code */
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPP_ENCODE),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ENCODE),
+    SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODE),
+    SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_PIXEL_REPLI),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PIXEL_REPLI),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY_CAP),
+    SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_COLORIMETRY),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER),
+    SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_AUDIO_STAT),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_STAT),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INDEX),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_INDEX),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INFO),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_AV_SPLIT),
+    SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_AV_SPLIT),
     SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_TXRATE),
+    SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_TXRATE),
+    SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_DATA),
+    SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_DATA),
 };
 
 static I2CSlaveAddr slaveAddr;
diff --git a/src/i830_sdvo_regs.h b/src/i830_sdvo_regs.h
index 747f2cd..4d55555 100644
--- a/src/i830_sdvo_regs.h
+++ b/src/i830_sdvo_regs.h
@@ -503,8 +503,6 @@ struct i830_sdvo_enhancements_arg {
 # define SDVO_DITHER_ON						(1 << 0)
 # define SDVO_DITHER_DEFAULT_ON					(1 << 1)
 
-#define SDVO_CMD_SET_TV_RESOLUTION_SUPPORT		0x93
-
 #define SDVO_CMD_SET_CONTROL_BUS_SWITCH			0x7a
 # define SDVO_CONTROL_BUS_PROM				(1 << 0)
 # define SDVO_CONTROL_BUS_DDC1				(1 << 1)
commit 01bbbd8c6c73229b5cb0c88e8eb2ac9b49a5dad8
Author: Zhenyu Wang <zhenyu.z.wang at intel.com>
Date:   Thu Jul 31 13:13:45 2008 +0800

    Don't program dsparb on new Intel chip
    
    On new chip, DSPARB is controlled by hardware only.

diff --git a/src/common.h b/src/common.h
index 57db6cb..f2ae502 100644
--- a/src/common.h
+++ b/src/common.h
@@ -374,6 +374,8 @@ extern int I810_DEBUG;
 /* chipsets require status page in non stolen memory */
 #define HWS_NEED_NONSTOLEN(pI810) (IS_GM45(pI810) || IS_G4X(pI810))
 #define SUPPORTS_INTEGRATED_HDMI(pI810) (IS_GM45(pI810) || IS_G4X(pI810))
+/* dsparb controlled by hw only */
+#define DSPARB_HWCONTROL(pI810) (IS_G4X(pI810) || IS_GM45(pI810))
 
 #define GTT_PAGE_SIZE			KB(4)
 #define ROUND_TO(x, y)			(((x) + (y) - 1) / (y) * (y))
diff --git a/src/i830_display.c b/src/i830_display.c
index 2a267f1..e1dad03 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -1477,7 +1477,8 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode,
     /* Wait for the clocks to stabilize. */
     usleep(150);
 
-    i830_update_dsparb(pScrn);
+    if (!DSPARB_HWCONTROL(pI830))
+	i830_update_dsparb(pScrn);
 
     OUTREG(htot_reg, (adjusted_mode->CrtcHDisplay - 1) |
 	((adjusted_mode->CrtcHTotal - 1) << 16));
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 4bb9b81..f5aa114 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -2018,7 +2018,8 @@ SaveHWState(ScrnInfoPtr pScrn)
    }
 
    /* Save video mode information for native mode-setting. */
-   pI830->saveDSPARB = INREG(DSPARB);
+   if (!DSPARB_HWCONTROL(pI830))
+       pI830->saveDSPARB = INREG(DSPARB);
 
    pI830->saveDSPACNTR = INREG(DSPACNTR);
    pI830->savePIPEACONF = INREG(PIPEACONF);
@@ -2161,7 +2162,8 @@ RestoreHWState(ScrnInfoPtr pScrn)
    if (!IS_I830(pI830) && !IS_845G(pI830))
      OUTREG(PFIT_CONTROL, pI830->savePFIT_CONTROL);
 
-   OUTREG(DSPARB, pI830->saveDSPARB);
+   if (!DSPARB_HWCONTROL(pI830))
+       OUTREG(DSPARB, pI830->saveDSPARB);
 
    OUTREG(DSPCLK_GATE_D, pI830->saveDSPCLK_GATE_D);
    OUTREG(RENCLK_GATE_D1, pI830->saveRENCLK_GATE_D1);
@@ -2512,7 +2514,7 @@ I830BlockHandler(int i,
      * (except for mode setting, where it may occur naturally).
      * Check & ack the condition.
      */
-    if (pScrn->vtSema) {
+    if (pScrn->vtSema && !DSPARB_HWCONTROL(pI830)) {
 	if (xf86_config->crtc[0]->enabled &&
 		(INREG(PIPEASTAT) & FIFO_UNDERRUN)) {
 	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "underrun on pipe A!\n");
commit 42e96f1d02ef6d842db6ba68353558a11d7d66e9
Author: Tomas Carnecky <tom at dbservice.com>
Date:   Sun Jun 15 14:27:16 2008 +0200

    Reorder visuals reported by the intel driver
    
    The root window visual can not be changed. Neither at runtime nor
    through the configuration file. The xserver simply selects the first one
    that matches the class (usually TrueColor). I need a root window visual
    with stencil buffer because my compiz plugin uses the it for some
    operations. This patch reorders the visuals that the 3D driver reports
    and puts the one with stencil (and depth) bits as first.
    (cherry picked from commit 42fb06f3f14fbec070350cf48361be4a0be0af04)

diff --git a/src/i830_dri.c b/src/i830_dri.c
index 4361ad0..6bc4957 100644
--- a/src/i830_dri.c
+++ b/src/i830_dri.c
@@ -386,7 +386,7 @@ I830InitVisualConfigs(ScreenPtr pScreen)
 
       i = 0;
       for (accum = 0; accum <= 1; accum++) {
-	 for (depth = 0; depth <= 1; depth++) {	/* and stencil */
+	 for (depth = 1; depth >= 0; depth--) {	/* and stencil */
 	    for (db = 1; db >= 0; db--) {
 	       pConfigs[i].vid = -1;
 	       pConfigs[i].class = -1;


More information about the xorg-commit mailing list