[Openchrome-devel] xf86-video-openchrome: 2 commits - configure.ac src/via_driver.c src/via_driver.h src/via_lvds.c src/via_ums.h

Kevin Brace kevinbrace at kemper.freedesktop.org
Thu Feb 23 21:24:50 UTC 2017


 configure.ac     |    2 -
 src/via_driver.c |   17 +++++++++++++++
 src/via_driver.h |    6 +++++
 src/via_lvds.c   |   62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/via_ums.h    |    1 
 5 files changed, 87 insertions(+), 1 deletion(-)

New commits:
commit 84193485247e7a0cc871b1e003ba596026768cf5
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Thu Feb 23 13:24:08 2017 -0800

    Version bumped to 0.5.183
    
    This version fixes FIC CE260 / CE261 netbook FP LVDS interface turn
    on / off. 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 a9a72a0..8efe157 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-openchrome],
-        [0.5.182],
+        [0.5.183],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg&component=Driver/openchrome],
         [xf86-video-openchrome])
 
commit 41c4beb6000c154b5920c715fadd86ca2da197f0
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Thu Feb 23 13:21:14 2017 -0800

    Improvement in initializing FIC CE260 / CE261 netbook FP
    
    Had to add a special handling case in order to properly handle FIC CE260 /
    CE261 netbook FP LVDS interface turn on / off. In particular, this fix aids FP
    reinitialization when resuming from standby. FIC CE260 / CE261 were sold as
    Everex CloudBook and Sylvania g netbook.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/src/via_driver.c b/src/via_driver.c
index ee2ee40..01090e2 100644
--- a/src/via_driver.c
+++ b/src/via_driver.c
@@ -1462,6 +1462,23 @@ viaPreInit(ScrnInfoPtr pScrn, int flags)
                pVia->I2CScan ? "" : "not ");
 #endif /* HAVE_DEBUG */
 
+    /* Checking for VIA Technologies NanoBook reference design.
+       Examples include Everex CloudBook and Sylvania g netbook.
+       It is also called FIC CE260 and CE261 by its ODM (Original 
+       Design Manufacturer) name.
+       This device has its strapping resistors set to a wrong 
+       setting to handle DVI. As a result, we need to make special 
+       accommodations to handle DVI properly. */
+    if ((pVia->Chipset == VIA_CX700) &&
+        (SUBVENDOR_ID(pVia->PciInfo) == 0x1509) &&
+        (SUBSYS_ID(pVia->PciInfo) == 0x2D30)) {
+
+        pVia->isVIANanoBook      = TRUE;
+    } else {
+        pVia->isVIANanoBook      = FALSE;
+    }
+
+
     /* Checking for OLPC XO-1.5. */
     if ((pVia->Chipset == VIA_VX855) &&
         (SUBVENDOR_ID(pVia->PciInfo) == 0x152D) &&
diff --git a/src/via_driver.h b/src/via_driver.h
index d566187..123463c 100644
--- a/src/via_driver.h
+++ b/src/via_driver.h
@@ -284,6 +284,12 @@ typedef struct _VIA {
     /* BIOS Info Ptr */
     VIABIOSInfoPtr      pBIOSInfo;
 
+    /* VIA Technologies NanoBook reference design.
+       Examples include Everex CloudBook and Sylvania g netbook.
+       It is also called FIC CE260 and CE261 by its ODM (Original 
+       Design Manufacturer) name. */
+    Bool                isVIANanoBook;
+
     /* OLPC XO-1.5 */
     Bool                IsOLPCXO15;
 
diff --git a/src/via_lvds.c b/src/via_lvds.c
index 0605cce..3af9290 100644
--- a/src/via_lvds.c
+++ b/src/via_lvds.c
@@ -106,6 +106,28 @@ static DisplayModeRec OLPCMode = {
 #define TD3 25
 
 /*
+ * Sets CX700 or later single chipset's LVDS1 I/O pad state.
+ */
+void
+viaLVDS1SetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState)
+{
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Entered viaLVDS1SetIOPadSetting.\n"));
+
+    /* Set LVDS1 I/O pad state. */
+    /* 3C5.2A[1:0] - LVDS1 I/O Pad Control */
+    ViaSeqMask(hwp, 0x2A, ioPadState, 0x03);
+    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                "LVDS1 I/O Pad State: %d\n",
+                (ioPadState & 0x03));
+
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Exiting viaLVDS1SetIOPadSetting.\n"));
+}
+
+/*
  * Sets IGA1 or IGA2 as the display output source for VIA Technologies
  * Chrome IGP LVDS1 integrated LVDS transmitter.
  */
@@ -158,6 +180,28 @@ viaLVDS1SetFormat(ScrnInfoPtr pScrn, CARD8 format)
 }
 
 /*
+ * Sets CX700 or later single chipset's LVDS2 I/O pad state.
+ */
+static void
+viaLVDS2SetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState)
+{
+    vgaHWPtr hwp = VGAHWPTR(pScrn);
+
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Entered viaLVDS2SetIOPadSetting.\n"));
+
+    /* Set LVDS2 I/O pad state. */
+    /* 3C5.2A[3:2] - LVDS2 I/O Pad Control */
+    ViaSeqMask(hwp, 0x2A, ioPadState << 2, 0x0C);
+    xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                "LVDS2 I/O Pad State: %d\n",
+                (ioPadState & 0x03));
+
+    DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+                        "Exiting viaLVDS2SetIOPadSetting.\n"));
+}
+
+/*
  * Sets IGA1 or IGA2 as the display output source for VIA Technologies
  * Chrome IGP LVDS2 integrated LVDS transmitter.
  */
@@ -471,6 +515,24 @@ viaFPIOPadSetting(ScrnInfoPtr pScrn, Bool ioPadOn)
     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);
+        }
+
+        if (((~(sr13 & 0x80)) || (~(sr13 & 0x40))) 
+           || (pVia->isVIANanoBook)) {
+
+            viaLVDS2SetIOPadSetting(pScrn, ioPadOn ? 0x03 : 0x00);
+        }
         break;
     default:
         break;
diff --git a/src/via_ums.h b/src/via_ums.h
index bba65a7..254686c 100644
--- a/src/via_ums.h
+++ b/src/via_ums.h
@@ -265,6 +265,7 @@ void ViaShadowCRTCSetMode(ScrnInfoPtr pScrn, DisplayModePtr mode);
 void via_analog_init(ScrnInfoPtr pScrn);
 
 /* via_lvds.c */
+void viaLVDS1SetIOPadSetting(ScrnInfoPtr pScrn, CARD8 ioPadState);
 void via_lvds_init(ScrnInfoPtr pScrn);
 
 /* via_tmds.c */


More information about the Openchrome-devel mailing list