[Openchrome-devel] xf86-video-openchrome: 2 commits - configure.ac src/via_tmds.c

Kevin Brace kevinbrace at kemper.freedesktop.org
Fri Feb 24 04:00:58 UTC 2017


 configure.ac   |    2 -
 src/via_tmds.c |   69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 1 deletion(-)

New commits:
commit 9a27dc4f9aab50d7c792f8c7a4acaa28a2e43acd
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Thu Feb 23 19:59:29 2017 -0800

    Version bumped to 0.5.184
    
    This version fixes FIC CE260 / CE261 netbook integrated TMDS interface
    (DVI) on / off. This fix also aids CX700 or later chipsets that have
    the proper strapping resistor values set for DVI use. Another major bug
    fix for OpenChrome DDX.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/configure.ac b/configure.ac
index 8efe157..728cc52 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-openchrome],
-        [0.5.183],
+        [0.5.184],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome],
         [xf86-video-openchrome])
 
commit 1bfe1ad714051b6acc7fbc0af715371aa47f2d2b
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Thu Feb 23 19:54:49 2017 -0800

    Improvement in initializing integrated TMDS (DVI)
    
    Had to add a special handling case in order to properly handle FIC CE260 /
    CE261 netbook integrated TMDS interface (DVI) turn on / off. This fix aids
    reinitialization when resuming from standby. FIC CE260 / CE261 were sold as
    Everex CloudBook and Sylvania g netbook. This fix also aids CX700 or later
    chipsets that have the proper strapping resistor values set for DVI use.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_tmds.c b/src/via_tmds.c
index 21b6cac..5a89561 100644
--- a/src/via_tmds.c
+++ b/src/via_tmds.c
@@ -278,6 +278,73 @@ viaTMDSPower(ScrnInfoPtr pScrn, Bool powerState)
                         "Exiting viaTMDSPower.\n"));
 }
 
+static void
+viaTMDSIOPadSetting(ScrnInfoPtr pScrn, Bool ioPadOn)
+{
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+    VIAPtr pVia = VIAPTR(pScrn);
+    CARD8 sr12, sr13, sr5a;
+
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Entered viaTMDSIOPadSetting.\n"));
+
+    if ((pVia->Chipset == VIA_CX700)
+        || (pVia->Chipset == VIA_VX800)
+        || (pVia->Chipset == VIA_VX855)
+        || (pVia->Chipset == VIA_VX900)) {
+
+        sr5a = hwp->readSeq(hwp, 0x5A);
+        DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                            "SR5A: 0x%02X\n", sr5a));
+        DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                            "Setting 3C5.5A[0] to 0.\n"));
+        ViaSeqMask(hwp, 0x5A, sr5a & 0xFE, 0x01);
+    }
+
+    sr12 = hwp->readSeq(hwp, 0x12);
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "SR12: 0x%02X\n", sr12));
+    sr13 = hwp->readSeq(hwp, 0x13);
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "SR13: 0x%02X\n", sr13));
+
+    switch (pVia->Chipset) {
+    case VIA_CX700:
+    case VIA_VX800:
+    case VIA_VX855:
+    case VIA_VX900:
+        /* 3C5.13[7:6] - DVP1D15 and DVP1D14 pin strappings
+         *               00: LVDS1 + LVDS2
+         *               01: DVI + LVDS2
+         *               10: Dual LVDS (LVDS1 + LVDS2 used 
+         *                   simultaneously)
+         *               11: DVI only */
+        if ((((~(sr13 & 0x80)) && (sr13 & 0x40))
+             || ((sr13 & 0x80) && (sr13 & 0x40)))
+           || (pVia->isVIANanoBook)) {
+
+            viaLVDS1SetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00);
+        }
+
+        break;
+    default:
+        break;
+    }
+
+    if ((pVia->Chipset == VIA_CX700)
+        || (pVia->Chipset == VIA_VX800)
+        || (pVia->Chipset == VIA_VX855)
+        || (pVia->Chipset == VIA_VX900)) {
+
+        hwp->writeSeq(hwp, 0x5A, sr5a);
+        DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                            "Restoring 3C5.5A[0].\n"));
+    }
+
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Exiting viaTMDSIOPadSetting.\n"));
+}
+
 void
 viaExtTMDSSetDisplaySource(ScrnInfoPtr pScrn, CARD8 displaySource)
 {
@@ -764,11 +831,13 @@ via_tmds_dpms(xf86OutputPtr output, int mode)
     switch (mode) {
     case DPMSModeOn:
         viaTMDSPower(pScrn, TRUE);
+        viaTMDSIOPadSetting(pScrn, TRUE);
         break;
     case DPMSModeStandby:
     case DPMSModeSuspend:
     case DPMSModeOff:
         viaTMDSPower(pScrn, FALSE);
+        viaTMDSIOPadSetting(pScrn, FALSE);
         break;
     default:
         break;


More information about the Openchrome-devel mailing list