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

Kevin Brace kevinbrace at kemper.freedesktop.org
Tue Jan 9 08:01:59 UTC 2018


 configure.ac     |    2 +-
 src/via_analog.c |   25 ++++++++++++++++++++++++-
 2 files changed, 25 insertions(+), 2 deletions(-)

New commits:
commit 2dbff5e58c897bd946dc8cf295f72c9c6576ab32
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jan 9 00:01:25 2018 -0800

    Version bumped to 0.6.170
    
    Put in a fix for single chip Chrome IGP not detecting a VGA connector
    from time to time.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/configure.ac b/configure.ac
index 9a9859a..457eec3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-openchrome],
-        [0.6.169],
+        [0.6.170],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome],
         [xf86-video-openchrome])
 
commit 17dc6fe1f414f0d630ca2a15fc906bffa3328e79
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Mon Jan 8 23:56:23 2018 -0800

    Fix for single chip Chrome IGP not detecting a VGA connector sometimes
    
    It was observed that VX900 chipset was having issues with detecting a
    VGA connector after standby resume fairly frequently. This also affected
    VX855 chipset as well.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_analog.c b/src/via_analog.c
index 7394e66..473b7aa 100644
--- a/src/via_analog.c
+++ b/src/via_analog.c
@@ -145,6 +145,7 @@ viaAnalogInitReg(ScrnInfoPtr pScrn)
     case VIA_VX900:
         /* Make sure 3C5.01[5] does not turn off analog (VGA) DAC. */
         viaAnalogSetDACOff(pScrn, FALSE);
+
         break;
     default:
         break;
@@ -167,16 +168,28 @@ viaAnalogDetectConnector(ScrnInfoPtr pScrn)
     vgaHWPtr hwp = VGAHWPTR(pScrn);
     VIAPtr pVia = VIAPTR(pScrn);
     Bool connectorDetected = FALSE;
-    CARD8 sr40, cr36, cr47;
+    CARD8 sr40, cr36, cr37, cr43, cr44, cr47;
 
     DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
                         "Entered viaAnalogDetectConnector.\n"));
 
     sr40 = hwp->readSeq(hwp, 0x40);
     cr36 = hwp->readCrtc(hwp, 0x36);
+    cr37 = hwp->readCrtc(hwp, 0x37);
+    cr43 = hwp->readCrtc(hwp, 0x43);
+    cr44 = hwp->readCrtc(hwp, 0x44);
     cr47 = hwp->readCrtc(hwp, 0x47);
 
+    if ((pVia->Chipset == VIA_CX700)
+        || (pVia->Chipset == VIA_VX800)
+        || (pVia->Chipset == VIA_VX855)
+        || (pVia->Chipset == VIA_VX900)) {
+        ViaCrtcMask(hwp, 0x43, 0x90, BIT(7) | BIT(6) | BIT(5) | BIT(4));
+        hwp->writeCrtc(hwp, 0x44, 0x00);
+    }
+
     /* Turn on DAC. */
+    ViaCrtcMask(hwp, 0x37, 0x04, 0xff);
     ViaCrtcMask(hwp, 0x47, 0x00, BIT(2));
 
     /* Power On DPMS. */
@@ -217,6 +230,16 @@ viaAnalogDetectConnector(ScrnInfoPtr pScrn)
 
     /* Restore */
     hwp->writeCrtc(hwp, 0x47, cr47);
+
+    if ((pVia->Chipset == VIA_CX700)
+        || (pVia->Chipset == VIA_VX800)
+        || (pVia->Chipset == VIA_VX855)
+        || (pVia->Chipset == VIA_VX900)) {
+        hwp->writeCrtc(hwp, 0x44, cr44);
+        hwp->writeCrtc(hwp, 0x43, cr43);
+    }
+
+    hwp->writeCrtc(hwp, 0x37, cr37);
     hwp->writeCrtc(hwp, 0x36, cr36);
     hwp->writeSeq(hwp, 0x40, sr40);
 


More information about the Openchrome-devel mailing list