xf86-video-intel: Branch 'drm-gem' - 6 commits - src/i830_driver.c src/i830.h src/i830_quirks.c src/i830_tv.c

Eric Anholt anholt at kemper.freedesktop.org
Tue Jun 10 11:34:37 PDT 2008


 src/i830.h        |    1 +
 src/i830_driver.c |   16 ++++++++++------
 src/i830_quirks.c |    4 ++++
 src/i830_tv.c     |    4 ++++
 4 files changed, 19 insertions(+), 6 deletions(-)

New commits:
commit d0fda9d24c5fe4870cdbd2ba0213091165666a8e
Merge: cc98d41... 79f94ee...
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Jun 10 11:32:49 2008 -0700

    Merge branch 'master' into drm-gem

commit 79f94ee3c4652019395b9c329d94f7779c558571
Author: Eric Anholt <eric at anholt.net>
Date:   Tue Jun 10 11:31:22 2008 -0700

    Set up/restore PWRCTXA from enter/leavevt not server start/exit.
    
    This should improve behavior in the presence of VT switching, but also avoids
    a crash on X exit from writing the register after unmapping mmio.

diff --git a/src/i830.h b/src/i830.h
index 62e645a..2a804ab 100644
--- a/src/i830.h
+++ b/src/i830.h
@@ -653,6 +653,7 @@ typedef struct _I830Rec {
    uint32_t saveRENCLK_GATE_D2;
    uint32_t saveDSPCLK_GATE_D;
    uint32_t saveRAMCLK_GATE_D;
+   uint32_t savePWRCTXA;
 
    enum last_3d *last_3d;
 
diff --git a/src/i830_driver.c b/src/i830_driver.c
index b28b4de..091b5ca 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -2099,6 +2099,9 @@ SaveHWState(ScrnInfoPtr pScrn)
       pI830->saveRAMCLK_GATE_D = INREG(RAMCLK_GATE_D);
    }
 
+   if (IS_I965GM(pI830) || IS_IGD_GM(pI830))
+      pI830->savePWRCTXA = INREG(PWRCTXA);
+
    if (IS_MOBILE(pI830) && !IS_I830(pI830))
       pI830->saveLVDS = INREG(LVDS);
    pI830->savePFIT_CONTROL = INREG(PFIT_CONTROL);
@@ -2165,6 +2168,10 @@ RestoreHWState(ScrnInfoPtr pScrn)
       OUTREG(RENCLK_GATE_D2, pI830->saveRENCLK_GATE_D2);
       OUTREG(RAMCLK_GATE_D, pI830->saveRAMCLK_GATE_D);
    }
+
+   if (IS_I965GM(pI830) || IS_IGD_GM(pI830))
+      OUTREG(PWRCTXA, pI830->savePWRCTXA);
+
    /*
     * Pipe regs
     * To restore the saved state, we first need to program the PLL regs,
@@ -2896,9 +2903,6 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
        return FALSE;
    }
 
-   if (pI830->power_context)
-       OUTREG(PWRCTXA, pI830->power_context->offset | PWRCTX_EN);
-
    I830UnmapMMIO(pScrn);
 
    i830_fixup_mtrrs(pScrn);
@@ -3367,6 +3371,9 @@ I830EnterVT(int scrnIndex, int flags)
 
    i830_init_clock_gating(pScrn);
 
+   if (pI830->power_context)
+       OUTREG(PWRCTXA, pI830->power_context->offset | PWRCTX_EN);
+
    /* Clear the framebuffer */
    memset(pI830->FbBase + pScrn->fbOffset, 0,
 	  pScrn->virtualY * pScrn->displayWidth * pI830->cpp);
@@ -3522,9 +3529,6 @@ I830CloseScreen(int scrnIndex, ScreenPtr pScreen)
    }
 #endif
 
-   if (IS_I965GM(pI830) || IS_IGD_GM(pI830))
-       OUTREG(PWRCTXA, 0);
-
    if (I830IsPrimary(pScrn)) {
       xf86GARTCloseScreen(scrnIndex);
 
commit 231a302013981cc597ba09ee89b367c8ab56e8ba
Author: Bryce Harrington <bryce at bryceharrington.org>
Date:   Tue Jun 10 14:10:39 2008 +0800

    Two more Dell quirks
    
    fd.o #16160

diff --git a/src/i830_quirks.c b/src/i830_quirks.c
index b1c1423..1bd8885 100644
--- a/src/i830_quirks.c
+++ b/src/i830_quirks.c
@@ -237,6 +237,8 @@ static i830_quirk i830_quirk_list[] = {
     { PCI_CHIP_I965_GM, 0x1028, 0x0256, quirk_ignore_tv },
     /* Dell Inspiron 1318 */
     { PCI_CHIP_I965_GM, 0x1028, 0x0286, quirk_ignore_tv },
+    /* Dell Vostro A840 (LP: #235155) */
+    { PCI_CHIP_I965_GM, 0x1028, 0x0298, quirk_ignore_tv },
 
     /* Lenovo Napa TV (use dmi)*/
     { PCI_CHIP_I945_GM, 0x17aa, SUBSYS_ANY, quirk_lenovo_tv_dmi },
@@ -272,6 +274,8 @@ static i830_quirk i830_quirk_list[] = {
     { PCI_CHIP_I855_GM, 0x1028, 0x0139, quirk_pipea_force },
     /* Dell Latitude D500 needs pipe A force quirk */
     { PCI_CHIP_I855_GM, 0x1028, 0x0152, quirk_pipea_force },
+    /* Dell Latitude D505 needs pipe A force quirk (LP: #235643) */
+    { PCI_CHIP_I855_GM, 0x1028, 0x0163, quirk_pipea_force },
     /* Dell Latitude X300 needs pipe A force quirk */
     { PCI_CHIP_I855_GM, 0x1028, 0x014f, quirk_pipea_force },
     /* Dell Inspiron 510m needs pipe A force quirk */
commit 1142be53eb8d2ee8a9b60ace5d49f0ba27332275
Author: Jesse Barnes <jbarnes at hobbes.lan>
Date:   Mon Jun 9 08:52:59 2008 -0700

    Fix TV programming:  add vblank wait after TV_CTL writes
    
    Fxies FDO bug #14000; we need to wait for vblank after writing TV_CTL or followi
    ng "DPMS on" calls may not actually enable the output.

diff --git a/src/i830_tv.c b/src/i830_tv.c
index 2fc6199..cde929a 100644
--- a/src/i830_tv.c
+++ b/src/i830_tv.c
@@ -788,6 +788,7 @@ i830_tv_dpms(xf86OutputPtr output, int mode)
 	    OUTREG(TV_CTL, INREG(TV_CTL) & ~TV_ENC_ENABLE);
 	    break;
     }
+    i830WaitForVblank(pScrn);
 }
 
 static void
@@ -920,6 +921,7 @@ i830_tv_restore(xf86OutputPtr output)
 
     OUTREG(TV_DAC, dev_priv->save_TV_DAC);
     OUTREG(TV_CTL, dev_priv->save_TV_CTL);
+    i830WaitForVblank(pScrn);
 }
 
 static const tv_mode_t *
@@ -1237,6 +1239,7 @@ i830_tv_mode_set(xf86OutputPtr output, DisplayModePtr mode,
 	OUTREG(TV_V_CHROMA_0 + (i<<2), tv_mode->filter_table[j++]);
     OUTREG(TV_DAC, 0);
     OUTREG(TV_CTL, tv_ctl);
+    i830WaitForVblank(pScrn);
 }
 
 static const DisplayModeRec reported_modes[] = {
commit 64a8f2433d7774d06119793b57cec6d3be6389c1
Author: Robert Lowery <rglowery at exemail.com.au>
Date:   Tue May 20 21:09:23 2008 +1000

    Fix TV out connection type detection
    
    Make sure we wait for vblank when using the TV DAC to detect the connection
    type.
    
    Fixes FDO bug #14000.

diff --git a/src/i830_tv.c b/src/i830_tv.c
index 6adb9f2..2fc6199 100644
--- a/src/i830_tv.c
+++ b/src/i830_tv.c
@@ -1303,6 +1303,7 @@ i830_tv_detect_type (xf86CrtcPtr    crtc,
 	tv_dac = INREG(TV_DAC);
 	OUTREG(TV_DAC, save_tv_dac);
 	OUTREG(TV_CTL, save_tv_ctl);
+	i830WaitForVblank(pScrn);
     }
     /*
      *  A B C
commit a993a8f3ce3a2079c5b5ebaca2ec2564047d7d4e
Author: Tomas Carnecky <tom at dbservice.com>
Date:   Fri Jun 6 10:03:23 2008 +0800

    Fix compile error in LeaveVT

diff --git a/src/i830_driver.c b/src/i830_driver.c
index 03bfe7e..b28b4de 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -3225,6 +3225,7 @@ I830LeaveVT(int scrnIndex, int flags)
    ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
    I830Ptr pI830 = I830PTR(pScrn);
 #ifndef HAVE_FREE_SHADOW
+   xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
    int o;
 #endif
 


More information about the xorg-commit mailing list